diff --git a/__manifest__.py b/__manifest__.py
index 48871ab39c74d4c163fe6f25e3978a112e37386e..c105b7d7d6c73c624dce8cf4722ab0c4ca3a894e 100644
--- a/__manifest__.py
+++ b/__manifest__.py
@@ -13,7 +13,9 @@
     ],
     'website': 'http://www.le-filament.com',
     'data': [
-        # 'security/ir.model.access.csv',
+        'data/ir_module_category.xml',
+        'security/training_security.xml',
+        'security/ir.model.access.csv',
         'data/training_data.xml',
         'views/account_invoice_view.xml',
         'views/assets.xml',
@@ -21,6 +23,7 @@
         'views/sale_order_view.xml',
         'views/training_course_view.xml',
         'views/training_training_view.xml',
+        'views/training_session_view.xml',
         'report/layout_template.xml',
         'report/report_agreement.xml',
         'report/report_attendance_sheet.xml',
diff --git a/data/ir_module_category.xml b/data/ir_module_category.xml
new file mode 100644
index 0000000000000000000000000000000000000000..853092def4b79b0058b6bbf789d72d8e0296d421
--- /dev/null
+++ b/data/ir_module_category.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2019 Le Filament (<https://www.le-filament.com>)
+     License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
+<odoo>
+	<data>
+	  <record model="ir.module.category" id="module_category_training">
+	    <field name="name">Formation</field>
+	    <field name="description">Gestionnaire de formation</field>
+	    <field name="sequence">230</field>
+	  </record>
+	</data>
+</odoo>
diff --git a/models/training_course.py b/models/training_course.py
index 5d1076b22d51ed11efa53973f81dc412d702b697..081c66c1d51c54d399a562fc76a439573f56d6f4 100644
--- a/models/training_course.py
+++ b/models/training_course.py
@@ -18,9 +18,11 @@ class TrainingProgram(models.Model):
     control = fields.Text(string='Suivi')
     evaluation = fields.Text(string='Modalités évaluation')
     students_profile = fields.Text(string='Profil des stagiaires')
-    session_ids = fields.One2many(
+    session_ids = fields.Many2many(
         comodel_name='training.course.session',
-        inverse_name='course_id',
+        relation='program_course_rel',
+        column1='program_id',
+        column2='course_id',
         string='Sessions',)
     duration_total = fields.Integer(
         string='Durée totale',
@@ -45,9 +47,11 @@ class TrainingProgramSession(models.Model):
 
     name = fields.Char(string='Nom', required=True,)
     description = fields.Text(string='Description')
-    course_id = fields.Many2one(
+    course_id = fields.Many2many(
         comodel_name='training.course',
-        string='Programme',
-        required=True)
+        relation='program_course_rel',
+        column1='course_id',
+        column2='program_id',
+        string='Programmes',)
     duration = fields.Integer(string='Durée (h)', default=4)
     sequence = fields.Integer(string='Séquence', default=10)
diff --git a/models/training_session.py b/models/training_session.py
index 7f0817c82d0d6b48abf64014ca7f981c3f95c54a..8a065bec26690e68548f6c682b404d1e3e14b00d 100644
--- a/models/training_session.py
+++ b/models/training_session.py
@@ -23,3 +23,4 @@ class TrainingSession(models.Model):
         comodel_name='res.users',
         string='Formateur')
     date_delay = fields.Integer(string='Durée (h)')
+    sequence = fields.Integer(string='Séquence', default=10)
diff --git a/models/training_training.py b/models/training_training.py
index dca823f7aa804ff82eec9946abab23e2b5c5610c..ce353a14d38b66f6fca5de25a3179b02eb6b3703 100644
--- a/models/training_training.py
+++ b/models/training_training.py
@@ -42,7 +42,7 @@ class Training(models.Model):
         states={'draft': [('readonly', False)]},
         index=True,
         default='Brouillon')
-    payment = fields.Boolean(string="Pris en charge par l'OPCO ?")
+    payment = fields.Boolean(string="Subrogation de paiement")
     date_begin = fields.Date(string='Début de la formation')
     date_end = fields.Date(string='Fin de la formation')
     convention = fields.Binary(string="Convention")
@@ -134,16 +134,13 @@ class Training(models.Model):
     @api.onchange('course_id')
     def _onchange_session_ids(self):
         # Delete all training session
-        old_session_ids = self.env['training.session'].search(
-            [['training_id', '=', self.id]])
-        if old_session_ids:
-            old_session_ids.unlink()
+        self.session_ids.unlink()
         # Populate sessions from course
         for session in self.course_id.session_ids:
             self.env['training.session'].create({
                 'session_id': session.id,
                 'training_id': self._origin.id,
-                'duration': session.duration,
+                'date_delay': session.duration,
             })
 
     @api.multi
diff --git a/security/ir.model.access.csv b/security/ir.model.access.csv
index f618b87401ecd012b86d1e3316b5c13237b053f3..0359c86e40ccb1319fa4d8a637ce9f68b51de107 100644
--- a/security/ir.model.access.csv
+++ b/security/ir.model.access.csv
@@ -1,2 +1,6 @@
 id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
-access_lefilament_maintenance_group_user,project.maintenance,model_project_maintenance,project.group_project_manager,1,1,1,1
\ No newline at end of file
+access_training_training_group_user,training.training,model_training_training,group_training,1,1,1,1
+access_training_session_group_user,training.session,model_training_session,group_training,1,1,1,1
+access_training_student_group_user,training.student,model_training_student,group_training,1,1,1,1
+access_training_course_group_user,training.course,model_training_course,group_training,1,1,1,1
+access_training_course_session_group_user,training.course.session,model_training_course_session,group_training,1,1,1,1
\ No newline at end of file
diff --git a/security/training_security.xml b/security/training_security.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ab52b5cfe4651a6d2225db20331496b18db473c7
--- /dev/null
+++ b/security/training_security.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2017 Le Filament (<https://www.le-filament.com>)
+     License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
+<odoo>
+	<data noupdate="0">
+
+		<!-- Définition des groupes utilisateurs -->
+        <record id="group_training" model="res.groups">
+            <field name="name">Gestionnaire de Formation</field>
+            <field name="category_id" ref="module_category_training"/>
+            <field name="implied_ids" eval="[(4, ref('base.group_user'))]"/>
+        </record>
+
+	</data>
+</odoo>
\ No newline at end of file
diff --git a/views/partner_view.xml b/views/partner_view.xml
index a68168923b248011f6f9854e16e50c87622dad21..7ce5d9f9b19195bff87171a9d83605eff676a7bf 100644
--- a/views/partner_view.xml
+++ b/views/partner_view.xml
@@ -9,7 +9,7 @@
 		    <field name="model">res.partner</field>
 		    <field name="inherit_id" ref="base.view_partner_form"/>
 		    <field name="arch" type="xml" >
-                <xpath expr="//field[@name='customer']" position="after">
+                <xpath expr="//group[@name='sale']" position="inside">
                     <field name="is_opco" />
                 </xpath>
 		    </field>
diff --git a/views/training_course_view.xml b/views/training_course_view.xml
index fbc6f8fd4494c23b536125e112f21169fd450026..3d58a19155fa11a6585ed39d336a5adec3410fbb 100644
--- a/views/training_course_view.xml
+++ b/views/training_course_view.xml
@@ -8,17 +8,17 @@
             <field name="arch" type="xml">
             <form string="Fomration">
                 <sheet>
-                    <div class="col-xs-12">
-                        <field name="name" />
-                    </div>
                     <group>
+                        <field name="name" />
                         <field name="description" />
+                        <field name="objective" />
                         <field name="duration_total" />
                     </group>
                     <notebook>
                         <page name="sessions" string="Sessions">
                             <field name="session_ids" context="{'default_course_id': active_id,}">
                                 <tree>
+                                    <field name="sequence" widget="handle"/>
                                     <field name="name" />
                                     <field name="duration" />
                                 </tree>
@@ -26,7 +26,6 @@
                         </page>
                          <page name="detail" string="Détail">
                              <group>
-                                 <field name="objective" />
                                  <field name="method" />
                                  <field name="means" />
                                  <field name="control" />
@@ -45,7 +44,7 @@
         </record>
 
 
-        <!-- Tree View Projects -->
+        <!-- Tree View Programs -->
         <record id="training_course_tree" model="ir.ui.view">
             <field name="name">Training Course Tree View</field>
             <field name="model">training.course</field>
@@ -74,6 +73,37 @@
               </field>
         </record>
 
+        <record id="training_course_session_form" model="ir.ui.view">
+            <field name="name">Training Course Session Form View</field>
+            <field name="model">training.course.session</field>
+            <field name="arch" type="xml">
+            <form string="Fomration">
+                <sheet>
+                    <group>
+                        <field name="name" />
+                        <field name="description" />
+                        <field name="duration" />
+                        <field name="course_id" widget="many2many_tags"/>
+                    </group>
+                </sheet>
+            </form> 
+        </field>
+        </record>
+
+
+        <!-- Tree View Programs -->
+        <record id="training_course_session_tree" model="ir.ui.view">
+            <field name="name">Training Course Session Tree View</field>
+            <field name="model">training.course.session</field>
+            <field name="arch" type="xml">
+              <tree string="Modules">
+                  <field name="name" />
+                  <field name="duration" />
+                  <field name="course_id" />
+              </tree> 
+            </field>
+        </record>
+
         <!-- ACTIONS -->
         <act_window id="action_training_course" name="Catalogue de Formations" res_model="training.course" view_mode="tree,form,pivot,graph" />
         <act_window id="action_training_course_session" name="Sessions de Formations" res_model="training.course.session" view_mode="tree,form,pivot,graph" />
diff --git a/views/training_session_view.xml b/views/training_session_view.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ce723e7b11ebe50ff0a114129c10f58b66960051
--- /dev/null
+++ b/views/training_session_view.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<odoo>
+	<data>
+		<record id="training_session_form" model="ir.ui.view">
+			<field name="name">Training Session Form View</field>
+			<field name="model">training.session</field>
+			<field name="arch" type="xml">
+			<form string="Formation">
+				<sheet>
+					<group>
+						<field name="session_id" />
+						<field name="date" />
+						<field name="date_delay" />
+						<field name="training_id" />
+						<field name="user_id" />
+					</group>	
+				</sheet>
+			</form>	
+		</field>
+		</record>
+
+
+		<!-- Tree View -->
+		<record id="training_session_tree" model="ir.ui.view">
+			<field name="name">Training session Tree View</field>
+			<field name="model">training.session</field>
+			<field name="arch" type="xml">
+			<tree string="Liste des Sessions">
+				<field name="date" />
+				<field name="session_id" />
+				<field name="training_id" />
+				<field name="user_id" />
+			</tree>	
+		</field>
+		</record>
+
+		<!-- Filtres et Champ de Recherche -->
+		<record id="training_session_search" model="ir.ui.view">
+			  <field name="name">Training session Search View</field>
+			  <field name="model">training.session</field>
+			  <field name="arch" type="xml">
+				    <search>
+						<!-- Champs de recherche -->
+				     	<field name="session_id"/>
+				     	<field name="user_id"/>
+				     	<field name="training_id"/>
+						<!-- Filtres -->
+
+				    	
+				    	<!-- Groupes -->
+				    	<group expand="0" name="group_by" string="Group By">
+	                       <filter string="Formateur" domain="[]" context="{'group_by' : 'user_id'}" />
+	                       <filter string="Formation" domain="[]" context="{'group_by' : 'training_id'}" />
+	                       <filter string="Mois" domain="[]" context="{'group_by' : 'date'}" />
+	                   </group>
+				    </search>
+			  </field>
+		</record>
+		
+		<act_window id="action_training_session" name="Sessions" res_model="training.session" view_mode="tree,form,calendar,pivot,graph" />
+		<!-- MENU --> 
+	    <menuitem id="menu_training_session" name="Sessions" sequence="20" parent="menu_training_training_parent" action="action_training_session" />
+
+	</data>
+</odoo>
diff --git a/views/training_training_view.xml b/views/training_training_view.xml
index 493063691c37c3a030f72707c1817651fccb137f..b878374c19d98f65a0b8a3862386d89f3e2be530 100644
--- a/views/training_training_view.xml
+++ b/views/training_training_view.xml
@@ -58,7 +58,8 @@
 						</page>
 						<page name="sessions" string="Sessions">
 							<field name="session_ids">
-								<tree>
+								<tree editable="bottom">
+									<field name="sequence" widget="handle"/>
 									<field name="session_id" />
 									<field name="date" />
 									<field name="user_id" />