diff --git a/app/controllers/extranet/experiences_controller.rb b/app/controllers/extranet/experiences_controller.rb
new file mode 100644
index 0000000000000000000000000000000000000000..72a2538afb050929412c0096de3896edf84c9227
--- /dev/null
+++ b/app/controllers/extranet/experiences_controller.rb
@@ -0,0 +1,44 @@
+class Extranet::ExperiencesController < Extranet::ApplicationController
+  load_and_authorize_resource class: University::Person::Experience,
+                              through: :current_user,
+                              through_association: :experiences
+  def new
+    breadcrumb
+  end
+  
+  def edit
+    breadcrumb
+  end
+
+  def create
+    @experience.university = current_university
+    if @experience.save
+      redirect_to account_path, notice: 'Ok'
+    else
+      breadcrumb
+      render :new
+    end
+  end
+
+  def update
+    if @experience.update experience_params
+      redirect_to account_path, notice: 'Ok'
+    else
+      breadcrumb
+      render :edit
+    end
+  end
+
+  protected
+
+  def experience_params
+    params.require(:university_person_experience)
+          .permit(:description, :from_year, :to_year, :organization_id)
+  end
+
+  def breadcrumb
+    super
+    add_breadcrumb t('extranet.account.my'), account_path
+    add_breadcrumb @experience
+  end
+end
\ No newline at end of file
diff --git a/app/models/university/person/experience.rb b/app/models/university/person/experience.rb
index 4785cae2f7fb248eadc7a51fd914ffbe5cd7bb09..10e5976298194425240406c6d8a9d2f893e28c0b 100644
--- a/app/models/university/person/experience.rb
+++ b/app/models/university/person/experience.rb
@@ -31,4 +31,9 @@ class University::Person::Experience < ApplicationRecord
   belongs_to :organization, class_name: "University::Organization"
 
   scope :ordered, -> { order(from_year: :desc)}
+
+  def to_s
+    persisted?  ? "#{description}"
+                : self.class.human_attribute_name('new')
+  end
 end
diff --git a/app/models/user/with_person.rb b/app/models/user/with_person.rb
index 15057f8b558824e136cf876180b4a8c9762393aa..4e095ff6333a8abea03d42c34970be3d13b1266b 100644
--- a/app/models/user/with_person.rb
+++ b/app/models/user/with_person.rb
@@ -4,6 +4,8 @@ module User::WithPerson
   included do
     has_one :person, class_name: 'University::Person', dependent: :nullify
 
+    delegate :experiences, to: :person
+
     after_create_commit :find_or_create_person, unless: :server_admin?
   end
 
diff --git a/app/views/extranet/account/show.html.erb b/app/views/extranet/account/show.html.erb
index b0e49e8328d81b159d03e21fdff77db17fb3f638..f0cee236908e924aa597d514185435ebfe62767f 100644
--- a/app/views/extranet/account/show.html.erb
+++ b/app/views/extranet/account/show.html.erb
@@ -12,11 +12,13 @@
     </div>
     <div class="experiences">
       <p class="mb-4">Parcours professionel</p>
-      <%= link_to 'Ajouter une expérience', '', class: 'btn btn-sm btn-primary mb-4' %>
+      <%= link_to University::Person::Experience.human_attribute_name('new'),
+                  new_experience_path,
+                  class: 'btn btn-sm btn-primary mb-4' %>
       <% if @person.experiences.any? %>
         <ul>
           <% @person.experiences.ordered.each do |experience| %>
-            <%= render 'extranet/persons/experience', experience: experience, edit: true %>
+            <%= render 'extranet/experiences/experience', experience: experience, edit: true %>
           <% end %>
         </ul>
         <% end %>
diff --git a/app/views/extranet/persons/_experience.html.erb b/app/views/extranet/experiences/_experience.html.erb
similarity index 82%
rename from app/views/extranet/persons/_experience.html.erb
rename to app/views/extranet/experiences/_experience.html.erb
index f5c49059a6c155cbd1e4705ad9708d08a8bddd98..73a8f1e6795519b88e5c62b67ce6ba6e11862a84 100644
--- a/app/views/extranet/persons/_experience.html.erb
+++ b/app/views/extranet/experiences/_experience.html.erb
@@ -8,7 +8,9 @@ edit ||= false
       <%= "#{experience.from_year} —" if experience.from_year %>
       <%= experience.to_year || t('today') %>
     </p>
-    <%= link_to 'Modifier cette expérience', '', class: 'btn btn-sm btn-primary mt-2' if edit %>
+    <%= link_to University::Person::Experience.human_attribute_name('edit'),
+                edit_experience_path(experience),
+                class: 'btn btn-sm btn-primary mt-2' if edit %>
   </div>
   <div>
     <% if experience.organization.present? %>
diff --git a/app/views/extranet/experiences/_form.html.erb b/app/views/extranet/experiences/_form.html.erb
new file mode 100644
index 0000000000000000000000000000000000000000..32e17ddcb92b0ec4841f2ed9f7debabb56b422c7
--- /dev/null
+++ b/app/views/extranet/experiences/_form.html.erb
@@ -0,0 +1,7 @@
+<%= simple_form_for experience, url: experience.persisted? ? experience_path(experience) : experiences_path do |f| %>
+  <%= f.association :organization %>
+  <%= f.input :description %>
+  <%= f.input :from_year %>
+  <%= f.input :to_year %>
+  <%= submit f %>
+<% end %>
\ No newline at end of file
diff --git a/app/views/extranet/experiences/edit.html.erb b/app/views/extranet/experiences/edit.html.erb
new file mode 100644
index 0000000000000000000000000000000000000000..acfba4993cd514add045f930bcb215301e21d5d6
--- /dev/null
+++ b/app/views/extranet/experiences/edit.html.erb
@@ -0,0 +1,3 @@
+<% content_for :title, @experience %>
+
+<%= render 'form', experience: @experience %>
\ No newline at end of file
diff --git a/app/views/extranet/experiences/new.html.erb b/app/views/extranet/experiences/new.html.erb
new file mode 100644
index 0000000000000000000000000000000000000000..acfba4993cd514add045f930bcb215301e21d5d6
--- /dev/null
+++ b/app/views/extranet/experiences/new.html.erb
@@ -0,0 +1,3 @@
+<% content_for :title, @experience %>
+
+<%= render 'form', experience: @experience %>
\ No newline at end of file
diff --git a/app/views/extranet/persons/show.html.erb b/app/views/extranet/persons/show.html.erb
index 426038b11b108c706b71f4c17c5253a7b706c0f7..ad3730db9f88516722aaf8f7cc3eef93837b44d1 100644
--- a/app/views/extranet/persons/show.html.erb
+++ b/app/views/extranet/persons/show.html.erb
@@ -12,7 +12,7 @@
         <p class="mb-4">Parcours professionel</p>
         <ul>
           <% @person.experiences.ordered.each do |experience| %>
-            <%= render 'extranet/persons/experience', experience: experience %>
+            <%= render 'extranet/experiences/experience', experience: experience %>
           <% end %>
         </ul>
       </div>
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 1fc6eabd7c9d169ccfdd07526f22a76ae02e2d44..81d8721d041f8b765046598b0036baaf8552c619 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -159,12 +159,6 @@ en:
         finished: Finished
         finished_with_errors: Finished with errors
         pending: Pending
-  extranet:
-    account: 
-      my: My account
-      edit: Edit
-      updated: Updated
-      logout: Log out
   false: No
   featured_image:
     title: Image
diff --git a/config/locales/extranet/en.yml b/config/locales/extranet/en.yml
new file mode 100644
index 0000000000000000000000000000000000000000..a71ded4f915ebe3cccbcaac513083f5d4b7fc47c
--- /dev/null
+++ b/config/locales/extranet/en.yml
@@ -0,0 +1,7 @@
+en:
+  extranet:
+    account: 
+      my: My account
+      edit: Edit
+      updated: Updated
+      logout: Log out
diff --git a/config/locales/extranet/fr.yml b/config/locales/extranet/fr.yml
new file mode 100644
index 0000000000000000000000000000000000000000..4c4347226ba279c169357b181e615faf20f443f7
--- /dev/null
+++ b/config/locales/extranet/fr.yml
@@ -0,0 +1,9 @@
+fr:
+  extranet:
+    experiences:
+      new: Ajouter une expérience
+    account: 
+      my: Mon compte
+      edit: Modifier
+      updated: Mise à jour effectuée
+      logout: Déconnexion
diff --git a/config/locales/fr.yml b/config/locales/fr.yml
index f4512be94a0f35af994e7123bce880290b867876..50fb3b6871d3b6ce0bb66b5c6b686cbb5ac089d3 100644
--- a/config/locales/fr.yml
+++ b/config/locales/fr.yml
@@ -162,12 +162,6 @@ fr:
         finished: Traité
         finished_with_errors: Traité avec des erreurs
         pending: En cours de traitement
-  extranet:
-    account: 
-      my: Mon compte
-      edit: Modifier
-      updated: Mise à jour effectuée
-      logout: Déconnexion
   false: Non
   featured_image:
     title: Image
diff --git a/config/locales/university/en.yml b/config/locales/university/en.yml
index 9c88adb86e694f7c2cae6831686beb76b0db290e..9baf021dc21cc4c260d8cce2f59bf39dd50a52d9 100644
--- a/config/locales/university/en.yml
+++ b/config/locales/university/en.yml
@@ -73,6 +73,7 @@ en:
         organization: Organization
         from_year: Start year
         to_year: End year
+        new: Add experience
       university/person/involvement:
         description: Mission (in this context)
         person: Person
diff --git a/config/locales/university/fr.yml b/config/locales/university/fr.yml
index b80dd0997d5afe2ef10799f1fe1ad8319e0c020b..6ce31cfefe91ca626136e7b49e30fab0e00a4096 100644
--- a/config/locales/university/fr.yml
+++ b/config/locales/university/fr.yml
@@ -70,8 +70,10 @@ fr:
         zipcode: Code postal
       university/person/experience:
         description: Description
-        organization: Organisation
+        edit: Modifier l'expérience
         from_year: Année de début
+        new: Ajouter une expérience
+        organization: Organisation
         to_year: Année de fin
       university/person/involvement:
         description: Mission (dans ce contexte)
diff --git a/config/routes/extranet.rb b/config/routes/extranet.rb
index 6870b88c5115cfe69cdb37b37634771fee245d39..905cf1b2eef45cb2310f08f964e68e03a71fe12b 100644
--- a/config/routes/extranet.rb
+++ b/config/routes/extranet.rb
@@ -1,12 +1,15 @@
-get 'cohorts'           => 'extranet/cohorts#index', as: :education_cohorts
-get 'cohorts/:id'       => 'extranet/cohorts#show', as: :education_cohort
-get 'organizations'     => 'extranet/organizations#index', as: :university_organizations
+get 'cohorts' => 'extranet/cohorts#index', as: :education_cohorts
+get 'cohorts/:id' => 'extranet/cohorts#show', as: :education_cohort
+get 'organizations' => 'extranet/organizations#index', as: :university_organizations
 get 'organizations/:id' => 'extranet/organizations#show', as: :university_organization
-get 'persons'           => 'extranet/persons#index', as: :university_persons
-get 'persons/:id'       => 'extranet/persons#show', as: :university_person
-get 'years'             => 'extranet/academic_years#index', as: :education_academic_years
-get 'years/:id'         => 'extranet/academic_years#show', as: :education_academic_year
-get 'account'           => 'extranet/account#show', as: :account 
-get 'account/edit'      => 'extranet/account#edit', as: :edit_account 
-patch 'account'         => 'extranet/account#update'
+get 'persons' => 'extranet/persons#index', as: :university_persons
+get 'persons/:id' => 'extranet/persons#show', as: :university_person
+get 'years' => 'extranet/academic_years#index', as: :education_academic_years
+get 'years/:id' => 'extranet/academic_years#show', as: :education_academic_year
+get 'account' => 'extranet/account#show', as: :account 
+get 'account/edit' => 'extranet/account#edit', as: :edit_account 
+patch 'account' => 'extranet/account#update'
+scope :account do 
+  resources :experiences, controller: 'extranet/experiences', except: [:index, :show]
+end
 root to: 'extranet/home#index'