diff --git a/master/bt5/slapos_erp5/LocalRolesTemplateItem/assignment_request_module.xml b/master/bt5/slapos_erp5/LocalRolesTemplateItem/assignment_request_module.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c20800c60597ed3e24331b17803c187d243a4d4d
--- /dev/null
+++ b/master/bt5/slapos_erp5/LocalRolesTemplateItem/assignment_request_module.xml
@@ -0,0 +1,12 @@
+<local_roles_item>
+ <local_roles>
+  <role id='F-PRODUCTION*'>
+   <item>Auditor</item>
+  </role>
+ </local_roles>
+ <local_role_group_ids>
+  <local_role_group_id id='function'>
+    <principal id='F-PRODUCTION*'>Auditor</principal>
+  </local_role_group_id>
+ </local_role_group_ids>
+</local_roles_item>
\ No newline at end of file
diff --git a/master/bt5/slapos_erp5/LocalRolesTemplateItem/invitation_token_module.xml b/master/bt5/slapos_erp5/LocalRolesTemplateItem/invitation_token_module.xml
index ed9902d34c97653d887e77c8bedb6b1578637a16..986ee0a1c23294124b2bc4f78218bd3d700b8217 100644
--- a/master/bt5/slapos_erp5/LocalRolesTemplateItem/invitation_token_module.xml
+++ b/master/bt5/slapos_erp5/LocalRolesTemplateItem/invitation_token_module.xml
@@ -1,4 +1,14 @@
 <local_roles_item>
  <local_roles>
+  <role id='F-PRODUCTION*'>
+   <item>Auditor</item>
+   <item>Author</item>
+  </role>
  </local_roles>
+ <local_role_group_ids>
+  <local_role_group_id id='function'>
+    <principal id='F-PRODUCTION*'>Auditor</principal>
+    <principal id='F-PRODUCTION*'>Author</principal>
+  </local_role_group_id>
+ </local_role_group_ids>
 </local_roles_item>
\ No newline at end of file
diff --git a/master/bt5/slapos_erp5/PortalTypeAllowedContentTypeTemplateItem/allowed_content_types.xml b/master/bt5/slapos_erp5/PortalTypeAllowedContentTypeTemplateItem/allowed_content_types.xml
index ddfc57b63b34bcc6d138af28ed48b8f8c559bfaf..ab5a13e41fa8c3b1a3e66c13937d06be94c8d44a 100644
--- a/master/bt5/slapos_erp5/PortalTypeAllowedContentTypeTemplateItem/allowed_content_types.xml
+++ b/master/bt5/slapos_erp5/PortalTypeAllowedContentTypeTemplateItem/allowed_content_types.xml
@@ -3,7 +3,6 @@
   <item>Cloud Contract Line</item>
  </portal_type>
  <portal_type id="Invitation Token Module">
-  <item>Contract Invitation Token</item>
   <item>Invitation Token</item>
  </portal_type>
  <portal_type id="Organisation">
diff --git a/master/bt5/slapos_erp5/PortalTypeRolesTemplateItem/Assignment%20Request%20Module.xml b/master/bt5/slapos_erp5/PortalTypeRolesTemplateItem/Assignment%20Request%20Module.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8a6eb593209cdc2c728679e7111437142739728a
--- /dev/null
+++ b/master/bt5/slapos_erp5/PortalTypeRolesTemplateItem/Assignment%20Request%20Module.xml
@@ -0,0 +1,8 @@
+<type_roles>
+  <role id='Auditor'>
+   <property id='title'>Production</property>
+   <multi_property id='categories'>local_role_group/function</multi_property>
+   <multi_property id='category'>function/production*</multi_property>
+   <multi_property id='base_category'>function</multi_property>
+  </role>
+</type_roles>
\ No newline at end of file
diff --git a/master/bt5/slapos_erp5/PortalTypeRolesTemplateItem/Assignment%20Request.xml b/master/bt5/slapos_erp5/PortalTypeRolesTemplateItem/Assignment%20Request.xml
new file mode 100644
index 0000000000000000000000000000000000000000..600ebe860dd0f884a53c0e7a8e5bb4f3e5abf22f
--- /dev/null
+++ b/master/bt5/slapos_erp5/PortalTypeRolesTemplateItem/Assignment%20Request.xml
@@ -0,0 +1,2 @@
+<type_roles>
+</type_roles>
\ No newline at end of file
diff --git a/master/bt5/slapos_erp5/PortalTypeRolesTemplateItem/Invitation%20Token%20Module.xml b/master/bt5/slapos_erp5/PortalTypeRolesTemplateItem/Invitation%20Token%20Module.xml
index 600ebe860dd0f884a53c0e7a8e5bb4f3e5abf22f..342641d5a755bdcc399b48595fa694ea2e07c56b 100644
--- a/master/bt5/slapos_erp5/PortalTypeRolesTemplateItem/Invitation%20Token%20Module.xml
+++ b/master/bt5/slapos_erp5/PortalTypeRolesTemplateItem/Invitation%20Token%20Module.xml
@@ -1,2 +1,8 @@
 <type_roles>
+  <role id='Auditor; Author'>
+   <property id='title'>Production</property>
+   <multi_property id='categories'>local_role_group/function</multi_property>
+   <multi_property id='category'>function/production*</multi_property>
+   <multi_property id='base_category'>function</multi_property>
+  </role>
 </type_roles>
\ No newline at end of file
diff --git a/master/bt5/slapos_erp5/PortalTypeRolesTemplateItem/Invitation%20Token.xml b/master/bt5/slapos_erp5/PortalTypeRolesTemplateItem/Invitation%20Token.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6273fe0f65e5359ed93ee713815daa5723ab6ce5
--- /dev/null
+++ b/master/bt5/slapos_erp5/PortalTypeRolesTemplateItem/Invitation%20Token.xml
@@ -0,0 +1,20 @@
+<type_roles>
+  <role id='Assignee'>
+   <property id='title'>Destination Project Production Agent</property>
+   <property id='description'>XXX add local role group</property>
+   <property id='condition'>python: context.getDestinationProject('', portal_type='Project') != ""</property>
+   <property id='base_category_script'>ERP5Type_getSecurityCategoryFromContent</property>
+   <multi_property id='categories'>local_role_group/project</multi_property>
+   <multi_property id='category'>function/production/agent</multi_property>
+   <multi_property id='base_category'>destination_project</multi_property>
+  </role>
+  <role id='Assignor'>
+   <property id='title'>Destination Project Production Manager</property>
+   <property id='description'>XXX add local role group</property>
+   <property id='condition'>python: context.getDestinationProject('', portal_type='Project') != ""</property>
+   <property id='base_category_script'>ERP5Type_getSecurityCategoryFromContent</property>
+   <multi_property id='categories'>local_role_group/project</multi_property>
+   <multi_property id='category'>function/production/manager</multi_property>
+   <multi_property id='base_category'>destination_project</multi_property>
+  </role>
+</type_roles>
\ No newline at end of file
diff --git a/master/bt5/slapos_erp5/PortalTypeTemplateItem/portal_types/Invitation%20Token.xml b/master/bt5/slapos_erp5/PortalTypeTemplateItem/portal_types/Invitation%20Token.xml
index 6838116df63b30878d4d36da445272e207ec8997..1a2a153dadd5fb3b014258306eb993f8f5773219 100644
--- a/master/bt5/slapos_erp5/PortalTypeTemplateItem/portal_types/Invitation%20Token.xml
+++ b/master/bt5/slapos_erp5/PortalTypeTemplateItem/portal_types/Invitation%20Token.xml
@@ -42,9 +42,15 @@
             <key> <string>portal_type</string> </key>
             <value> <string>Base Type</string> </value>
         </item>
+        <item>
+            <key> <string>short_title</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
         <item>
             <key> <string>type_class</string> </key>
-            <value> <string>XMLObject</string> </value>
+            <value> <string>Ticket</string> </value>
         </item>
         <item>
             <key> <string>type_interface</string> </key>
diff --git a/master/bt5/slapos_erp5/PortalTypeWorkflowChainTemplateItem/workflow_chain_type.xml b/master/bt5/slapos_erp5/PortalTypeWorkflowChainTemplateItem/workflow_chain_type.xml
index 4e5980743621d3c9c006cd31e3a62b943962b8f0..b0148aad1428657d2c554f7e42f53a16f137fcc1 100644
--- a/master/bt5/slapos_erp5/PortalTypeWorkflowChainTemplateItem/workflow_chain_type.xml
+++ b/master/bt5/slapos_erp5/PortalTypeWorkflowChainTemplateItem/workflow_chain_type.xml
@@ -77,7 +77,7 @@
  </chain>
  <chain>
   <type>Invitation Token</type>
-  <workflow>edit_workflow, validation_workflow</workflow>
+  <workflow>edit_workflow, local_permission_slapos_interaction_workflow, validation_workflow</workflow>
  </chain>
  <chain>
   <type>Mail Message</type>
diff --git a/master/bt5/slapos_erp5/TestTemplateItem/portal_components/test.erp5.testSlapOSERP5GroupRoleSecurity.py b/master/bt5/slapos_erp5/TestTemplateItem/portal_components/test.erp5.testSlapOSERP5GroupRoleSecurity.py
index d78aec895e6de29f5bec38ef489640d2efa8950c..fc7b871f76c8f3b303b80073549c631f1d84acd0 100644
--- a/master/bt5/slapos_erp5/TestTemplateItem/portal_components/test.erp5.testSlapOSERP5GroupRoleSecurity.py
+++ b/master/bt5/slapos_erp5/TestTemplateItem/portal_components/test.erp5.testSlapOSERP5GroupRoleSecurity.py
@@ -1019,6 +1019,15 @@ class TestSoftwareProduct(TestSlapOSGroupRoleSecurityMixin):
     self.assertRoles(product, '%s_F-CUSTOMER' % project.getReference(), ['Auditor'])
 
 
+class TestInvitationTokenModule(TestSlapOSGroupRoleSecurityMixin):
+  def test_InvitationTokenModule(self):
+    module = self.portal.invitation_token_module
+    self.assertSecurityGroup(module,
+        ['F-PRODUCTION*', module.Base_getOwnerId()], False)
+    self.assertRoles(module, 'F-PRODUCTION*', ['Auditor', 'Author'])
+    self.assertRoles(module, module.Base_getOwnerId(), ['Owner'])
+
+
 class TestSupportRequestModule(TestSlapOSGroupRoleSecurityMixin):
   def test_SupportRequestModule(self):
     module = self.portal.support_request_module
@@ -1030,6 +1039,30 @@ class TestSupportRequestModule(TestSlapOSGroupRoleSecurityMixin):
     self.assertRoles(module, module.Base_getOwnerId(), ['Owner'])
 
 
+class TestInvitationToken(TestSlapOSGroupRoleSecurityMixin):
+  ticket_portal_type = 'Invitation Token'
+
+  def test_InvitationToken_default(self):
+    support_request = self.portal.getDefaultModuleValue(self.ticket_portal_type).newContent(
+        portal_type=self.ticket_portal_type)
+    self.assertSecurityGroup(support_request,
+        [self.user_id], False)
+    self.assertRoles(support_request, self.user_id, ['Owner'])
+
+  def test_InvitationToken_DestinationProject(self):
+    project = self.addProject()
+    support_request = self.portal.getDefaultModuleValue(self.ticket_portal_type).newContent(
+        portal_type=self.ticket_portal_type)
+    support_request.edit(
+        destination_project_value=project)
+    self.assertSecurityGroup(support_request, [self.user_id,
+        '%s_F-PRODAGNT' % project.getReference(),
+        '%s_F-PRODMAN' % project.getReference()], False)
+    self.assertRoles(support_request, self.user_id, ['Owner'])
+    self.assertRoles(support_request, '%s_F-PRODMAN' % project.getReference(), ['Assignor'])
+    self.assertRoles(support_request, '%s_F-PRODAGNT' % project.getReference(), ['Assignee'])
+
+
 class TestSupportRequest(TestSlapOSGroupRoleSecurityMixin):
   ticket_portal_type = 'Support Request'
 
diff --git a/master/bt5/slapos_erp5/WorkflowTemplateItem/portal_workflow/local_permission_slapos_interaction_workflow/interaction_SupportRequest_edit.xml b/master/bt5/slapos_erp5/WorkflowTemplateItem/portal_workflow/local_permission_slapos_interaction_workflow/interaction_SupportRequest_edit.xml
index 310c8b1084b1dcf4e9724d3e8d16deeceb3ee3e7..dadc23223d557bd31b73a69cfa4ec1f0d00ecc09 100644
--- a/master/bt5/slapos_erp5/WorkflowTemplateItem/portal_workflow/local_permission_slapos_interaction_workflow/interaction_SupportRequest_edit.xml
+++ b/master/bt5/slapos_erp5/WorkflowTemplateItem/portal_workflow/local_permission_slapos_interaction_workflow/interaction_SupportRequest_edit.xml
@@ -35,6 +35,7 @@
                 <string>Support Request</string>
                 <string>Upgrade Decision</string>
                 <string>Regularisation Request</string>
+                <string>Invitation Token</string>
               </tuple>
             </value>
         </item>
diff --git a/master/bt5/slapos_erp5/bt/template_local_role_list b/master/bt5/slapos_erp5/bt/template_local_role_list
index 4623ca4020d893121895450c65a481f1acca3edc..9b59721a1f93b6a790a79bdc41dc08d2aa4d8c33 100644
--- a/master/bt5/slapos_erp5/bt/template_local_role_list
+++ b/master/bt5/slapos_erp5/bt/template_local_role_list
@@ -16,6 +16,7 @@ account_module/refundable_vat
 account_module/sales
 accounting_module
 allocation_supply_module
+assignment_request_module
 business_process_module
 business_process_module/slapos_sale_subscription_business_process
 cloud_contract_module
diff --git a/master/bt5/slapos_erp5/bt/template_portal_type_allowed_content_type_list b/master/bt5/slapos_erp5/bt/template_portal_type_allowed_content_type_list
index 201f3a28808792964381862c5dff65f3de220b1c..c30a93ed29892987ac6352db2c364c50dd2c4f06 100644
--- a/master/bt5/slapos_erp5/bt/template_portal_type_allowed_content_type_list
+++ b/master/bt5/slapos_erp5/bt/template_portal_type_allowed_content_type_list
@@ -1,5 +1,4 @@
 Contract Invitation Token | Cloud Contract Line
-Invitation Token Module | Contract Invitation Token
 Invitation Token Module | Invitation Token
 Organisation | Geographical Area
 Organisation | Geographical Location
\ No newline at end of file
diff --git a/master/bt5/slapos_erp5/bt/template_portal_type_role_list b/master/bt5/slapos_erp5/bt/template_portal_type_role_list
index bd79771e6e612a766259bb37a0580f5fb744654b..ce7ba0499f58a3e47cb48c2e94b21f5814e162d7 100644
--- a/master/bt5/slapos_erp5/bt/template_portal_type_role_list
+++ b/master/bt5/slapos_erp5/bt/template_portal_type_role_list
@@ -8,6 +8,8 @@ Acknowledgement
 Allocation Supply
 Allocation Supply Module
 Assignment
+Assignment Request
+Assignment Request Module
 Balance Transaction
 Bank Account
 Business Process
@@ -43,6 +45,7 @@ Instance Tree
 Instance Tree Module
 Integration Site
 Integration Tool
+Invitation Token
 Invitation Token Module
 Letter
 Mail Message
diff --git a/master/bt5/slapos_erp5/bt/template_portal_type_workflow_chain_list b/master/bt5/slapos_erp5/bt/template_portal_type_workflow_chain_list
index a87d9e0bc3bd68d7082fcc8f5562d94154cba6a5..aba7928c99e330f2fb3a0e176f00cdd8e43e41ec 100644
--- a/master/bt5/slapos_erp5/bt/template_portal_type_workflow_chain_list
+++ b/master/bt5/slapos_erp5/bt/template_portal_type_workflow_chain_list
@@ -21,6 +21,7 @@ Inventory Cell | -immobilisation_movement_interaction_workflow
 Inventory Line | -immobilisation_movement_interaction_workflow
 Inventory | -immobilisation_movement_interaction_workflow
 Invitation Token | edit_workflow
+Invitation Token | local_permission_slapos_interaction_workflow
 Invitation Token | validation_workflow
 Mail Message | local_permission_slapos_interaction_workflow
 Open Sale Order | local_permission_slapos_interaction_workflow