From a79219bba5f11d7ac3ac0e0fd1d4387ef021db1a Mon Sep 17 00:00:00 2001
From: Sebastien Robin <seb@nexedi.com>
Date: Tue, 8 Apr 2014 15:55:56 +0200
Subject: [PATCH] erp5_calendar: add interaction workflow to update catalog
 values

When a Group Calendar or a Group Presence Period is updated, it's necessary
to update related Group Assignment stock catalog data since values are dependent.
---
 .../document.erp5.GroupCalendarAssignment.py  |   8 +-
 .../workflow_chain_type.xml                   |   4 +-
 .../GroupCalendar_updateRelatedAssignment.xml |  80 ++++++++++++++
 .../group_calendar_interaction_workflow.xml   |  28 +++++
 .../interactions.xml                          |  28 +++++
 ...oup_calendar_update_related_assignment.xml | 102 ++++++++++++++++++
 ...sence_period_update_related_assignment.xml | 102 ++++++++++++++++++
 .../scripts.xml                               |  28 +++++
 ...upCalendar_callUpdateRelatedAssignment.xml |  68 ++++++++++++
 ...encePeriod_callUpdateRelatedAssignment.xml |  68 ++++++++++++
 .../variables.xml                             |  22 ++++
 .../worklists.xml                             |  22 ++++
 bt5/erp5_calendar/bt/revision                 |   2 +-
 .../template_portal_type_workflow_chain_list  |   2 +
 .../bt/template_workflow_id_list              |   1 +
 15 files changed, 558 insertions(+), 7 deletions(-)
 create mode 100644 bt5/erp5_calendar/SkinTemplateItem/portal_skins/erp5_calendar/GroupCalendar_updateRelatedAssignment.xml
 create mode 100644 bt5/erp5_calendar/WorkflowTemplateItem/portal_workflow/group_calendar_interaction_workflow.xml
 create mode 100644 bt5/erp5_calendar/WorkflowTemplateItem/portal_workflow/group_calendar_interaction_workflow/interactions.xml
 create mode 100644 bt5/erp5_calendar/WorkflowTemplateItem/portal_workflow/group_calendar_interaction_workflow/interactions/group_calendar_update_related_assignment.xml
 create mode 100644 bt5/erp5_calendar/WorkflowTemplateItem/portal_workflow/group_calendar_interaction_workflow/interactions/group_presence_period_update_related_assignment.xml
 create mode 100644 bt5/erp5_calendar/WorkflowTemplateItem/portal_workflow/group_calendar_interaction_workflow/scripts.xml
 create mode 100644 bt5/erp5_calendar/WorkflowTemplateItem/portal_workflow/group_calendar_interaction_workflow/scripts/GroupCalendar_callUpdateRelatedAssignment.xml
 create mode 100644 bt5/erp5_calendar/WorkflowTemplateItem/portal_workflow/group_calendar_interaction_workflow/scripts/GroupPresencePeriod_callUpdateRelatedAssignment.xml
 create mode 100644 bt5/erp5_calendar/WorkflowTemplateItem/portal_workflow/group_calendar_interaction_workflow/variables.xml
 create mode 100644 bt5/erp5_calendar/WorkflowTemplateItem/portal_workflow/group_calendar_interaction_workflow/worklists.xml

diff --git a/bt5/erp5_calendar/DocumentTemplateItem/portal_components/document.erp5.GroupCalendarAssignment.py b/bt5/erp5_calendar/DocumentTemplateItem/portal_components/document.erp5.GroupCalendarAssignment.py
index a6c6e2359b..053898b671 100644
--- a/bt5/erp5_calendar/DocumentTemplateItem/portal_components/document.erp5.GroupCalendarAssignment.py
+++ b/bt5/erp5_calendar/DocumentTemplateItem/portal_components/document.erp5.GroupCalendarAssignment.py
@@ -56,8 +56,8 @@ class GroupCalendarAssignment(PresencePeriod):
       return result
     presence_period_list = group_calendar.objectValues(portal_type="Group Presence Period")
     for presence_period in presence_period_list:
-      for from_date, to_date in presence_period._getDatePeriodList():
-        if from_date.greaterThanEqualTo(self.getStartDate()) and \
-            to_date.lessThanEqualTo(self.getStopDate() or group_calendar.getStopDate()):
-          result.append(self.asContext(self, start_date=to_date, stop_date=from_date))
+      for date_period_data in presence_period._getDatePeriodDataList():
+        if date_period_data['start_date'].greaterThanEqualTo(self.getStartDate()) and \
+            date_period_data['stop_date'].lessThanEqualTo(self.getStopDate() or group_calendar.getStopDate()):
+          result.append(self.asContext(self, **date_period_data))
     return result
diff --git a/bt5/erp5_calendar/PortalTypeWorkflowChainTemplateItem/workflow_chain_type.xml b/bt5/erp5_calendar/PortalTypeWorkflowChainTemplateItem/workflow_chain_type.xml
index efd6a348ee..e9b843b742 100644
--- a/bt5/erp5_calendar/PortalTypeWorkflowChainTemplateItem/workflow_chain_type.xml
+++ b/bt5/erp5_calendar/PortalTypeWorkflowChainTemplateItem/workflow_chain_type.xml
@@ -1,7 +1,7 @@
 <workflow_chain>
  <chain>
   <type>Group Calendar</type>
-  <workflow>edit_workflow, group_calendar_workflow</workflow>
+  <workflow>edit_workflow, group_calendar_interaction_workflow, group_calendar_workflow</workflow>
  </chain>
  <chain>
   <type>Group Calendar Assignment</type>
@@ -9,7 +9,7 @@
  </chain>
  <chain>
   <type>Group Presence Period</type>
-  <workflow>edit_workflow</workflow>
+  <workflow>edit_workflow, group_calendar_interaction_workflow</workflow>
  </chain>
  <chain>
   <type>Leave Request</type>
diff --git a/bt5/erp5_calendar/SkinTemplateItem/portal_skins/erp5_calendar/GroupCalendar_updateRelatedAssignment.xml b/bt5/erp5_calendar/SkinTemplateItem/portal_skins/erp5_calendar/GroupCalendar_updateRelatedAssignment.xml
new file mode 100644
index 0000000000..071a122ea7
--- /dev/null
+++ b/bt5/erp5_calendar/SkinTemplateItem/portal_skins/erp5_calendar/GroupCalendar_updateRelatedAssignment.xml
@@ -0,0 +1,80 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>Script_magic</string> </key>
+            <value> <int>3</int> </value>
+        </item>
+        <item>
+            <key> <string>_bind_names</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>_asgns</string> </key>
+                        <value>
+                          <dictionary>
+                            <item>
+                                <key> <string>name_container</string> </key>
+                                <value> <string>container</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_context</string> </key>
+                                <value> <string>context</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_m_self</string> </key>
+                                <value> <string>script</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_subpath</string> </key>
+                                <value> <string>traverse_subpath</string> </value>
+                            </item>
+                          </dictionary>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>_body</string> </key>
+            <value> <string>"""\n
+Reindex all related group calendar assignments in case there is\n
+any change. This is needed because group calendar properties affect the\n
+values reindexed in stock by group calendar assignments\n
+\n
+We could have possibly millions of assignments linked to the same group\n
+calendar, therefore make sure to use method that would well scale\n
+"""\n
+group_calendar = context\n
+portal = group_calendar.getPortalObject()\n
+portal.portal_catalog.searchAndActivate(method_id="reindexObject",\n
+        activate_kw={\'priority\': 3},\n
+        specialise_uid=group_calendar.getUid(),\n
+        portal_type="Group Calendar Assignment")\n
+</string> </value>
+        </item>
+        <item>
+            <key> <string>_params</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>GroupCalendar_updateRelatedAssignment</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_calendar/WorkflowTemplateItem/portal_workflow/group_calendar_interaction_workflow.xml b/bt5/erp5_calendar/WorkflowTemplateItem/portal_workflow/group_calendar_interaction_workflow.xml
new file mode 100644
index 0000000000..26b29b5db9
--- /dev/null
+++ b/bt5/erp5_calendar/WorkflowTemplateItem/portal_workflow/group_calendar_interaction_workflow.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="InteractionWorkflowDefinition" module="Products.ERP5.InteractionWorkflow"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_objects</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>groups</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>group_calendar_interaction_workflow</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_calendar/WorkflowTemplateItem/portal_workflow/group_calendar_interaction_workflow/interactions.xml b/bt5/erp5_calendar/WorkflowTemplateItem/portal_workflow/group_calendar_interaction_workflow/interactions.xml
new file mode 100644
index 0000000000..e18bf8cbf7
--- /dev/null
+++ b/bt5/erp5_calendar/WorkflowTemplateItem/portal_workflow/group_calendar_interaction_workflow/interactions.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Interaction" module="Products.ERP5.Interaction"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_mapping</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>_objects</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>interactions</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_calendar/WorkflowTemplateItem/portal_workflow/group_calendar_interaction_workflow/interactions/group_calendar_update_related_assignment.xml b/bt5/erp5_calendar/WorkflowTemplateItem/portal_workflow/group_calendar_interaction_workflow/interactions/group_calendar_update_related_assignment.xml
new file mode 100644
index 0000000000..8626222bcb
--- /dev/null
+++ b/bt5/erp5_calendar/WorkflowTemplateItem/portal_workflow/group_calendar_interaction_workflow/interactions/group_calendar_update_related_assignment.xml
@@ -0,0 +1,102 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="InteractionDefinition" module="Products.ERP5.Interaction"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>actbox_category</string> </key>
+            <value> <string>workflow</string> </value>
+        </item>
+        <item>
+            <key> <string>actbox_name</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>actbox_url</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>activate_script_name</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>after_script_name</string> </key>
+            <value>
+              <list>
+                <string>GroupCalendar_callUpdateRelatedAssignment</string>
+              </list>
+            </value>
+        </item>
+        <item>
+            <key> <string>before_commit_script_name</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>guard</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>group_calendar_update_related_assignment</string> </value>
+        </item>
+        <item>
+            <key> <string>method_id</string> </key>
+            <value>
+              <list>
+                <string>_set.*</string>
+              </list>
+            </value>
+        </item>
+        <item>
+            <key> <string>once_per_transaction</string> </key>
+            <value> <int>1</int> </value>
+        </item>
+        <item>
+            <key> <string>portal_type_filter</string> </key>
+            <value>
+              <list>
+                <string>Group Calendar</string>
+              </list>
+            </value>
+        </item>
+        <item>
+            <key> <string>portal_type_group_filter</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>script_name</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>temporary_document_disallowed</string> </key>
+            <value> <int>0</int> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>trigger_type</string> </key>
+            <value> <int>2</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_calendar/WorkflowTemplateItem/portal_workflow/group_calendar_interaction_workflow/interactions/group_presence_period_update_related_assignment.xml b/bt5/erp5_calendar/WorkflowTemplateItem/portal_workflow/group_calendar_interaction_workflow/interactions/group_presence_period_update_related_assignment.xml
new file mode 100644
index 0000000000..0019c09e88
--- /dev/null
+++ b/bt5/erp5_calendar/WorkflowTemplateItem/portal_workflow/group_calendar_interaction_workflow/interactions/group_presence_period_update_related_assignment.xml
@@ -0,0 +1,102 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="InteractionDefinition" module="Products.ERP5.Interaction"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>actbox_category</string> </key>
+            <value> <string>workflow</string> </value>
+        </item>
+        <item>
+            <key> <string>actbox_name</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>actbox_url</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>activate_script_name</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>after_script_name</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>before_commit_script_name</string> </key>
+            <value>
+              <list>
+                <string>GroupPresencePeriod_callUpdateRelatedAssignment</string>
+              </list>
+            </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>guard</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>group_presence_period_update_related_assignment</string> </value>
+        </item>
+        <item>
+            <key> <string>method_id</string> </key>
+            <value>
+              <list>
+                <string>_set.*</string>
+              </list>
+            </value>
+        </item>
+        <item>
+            <key> <string>once_per_transaction</string> </key>
+            <value> <int>1</int> </value>
+        </item>
+        <item>
+            <key> <string>portal_type_filter</string> </key>
+            <value>
+              <list>
+                <string>Group Presence Period</string>
+              </list>
+            </value>
+        </item>
+        <item>
+            <key> <string>portal_type_group_filter</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>script_name</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>temporary_document_disallowed</string> </key>
+            <value> <int>0</int> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>trigger_type</string> </key>
+            <value> <int>2</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_calendar/WorkflowTemplateItem/portal_workflow/group_calendar_interaction_workflow/scripts.xml b/bt5/erp5_calendar/WorkflowTemplateItem/portal_workflow/group_calendar_interaction_workflow/scripts.xml
new file mode 100644
index 0000000000..072c8f6540
--- /dev/null
+++ b/bt5/erp5_calendar/WorkflowTemplateItem/portal_workflow/group_calendar_interaction_workflow/scripts.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Scripts" module="Products.DCWorkflow.Scripts"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_mapping</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>_objects</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>scripts</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_calendar/WorkflowTemplateItem/portal_workflow/group_calendar_interaction_workflow/scripts/GroupCalendar_callUpdateRelatedAssignment.xml b/bt5/erp5_calendar/WorkflowTemplateItem/portal_workflow/group_calendar_interaction_workflow/scripts/GroupCalendar_callUpdateRelatedAssignment.xml
new file mode 100644
index 0000000000..e309d85111
--- /dev/null
+++ b/bt5/erp5_calendar/WorkflowTemplateItem/portal_workflow/group_calendar_interaction_workflow/scripts/GroupCalendar_callUpdateRelatedAssignment.xml
@@ -0,0 +1,68 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>Script_magic</string> </key>
+            <value> <int>3</int> </value>
+        </item>
+        <item>
+            <key> <string>_bind_names</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>_asgns</string> </key>
+                        <value>
+                          <dictionary>
+                            <item>
+                                <key> <string>name_container</string> </key>
+                                <value> <string>container</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_context</string> </key>
+                                <value> <string>context</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_m_self</string> </key>
+                                <value> <string>script</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_subpath</string> </key>
+                                <value> <string>traverse_subpath</string> </value>
+                            </item>
+                          </dictionary>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>_body</string> </key>
+            <value> <string>group_calendar = state_change["object"]\n
+group_calendar.GroupCalendar_updateRelatedAssignment()\n
+</string> </value>
+        </item>
+        <item>
+            <key> <string>_params</string> </key>
+            <value> <string>state_change, **kw</string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>GroupCalendar_callUpdateRelatedAssignment</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_calendar/WorkflowTemplateItem/portal_workflow/group_calendar_interaction_workflow/scripts/GroupPresencePeriod_callUpdateRelatedAssignment.xml b/bt5/erp5_calendar/WorkflowTemplateItem/portal_workflow/group_calendar_interaction_workflow/scripts/GroupPresencePeriod_callUpdateRelatedAssignment.xml
new file mode 100644
index 0000000000..01cfebb79d
--- /dev/null
+++ b/bt5/erp5_calendar/WorkflowTemplateItem/portal_workflow/group_calendar_interaction_workflow/scripts/GroupPresencePeriod_callUpdateRelatedAssignment.xml
@@ -0,0 +1,68 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>Script_magic</string> </key>
+            <value> <int>3</int> </value>
+        </item>
+        <item>
+            <key> <string>_bind_names</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>_asgns</string> </key>
+                        <value>
+                          <dictionary>
+                            <item>
+                                <key> <string>name_container</string> </key>
+                                <value> <string>container</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_context</string> </key>
+                                <value> <string>context</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_m_self</string> </key>
+                                <value> <string>script</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_subpath</string> </key>
+                                <value> <string>traverse_subpath</string> </value>
+                            </item>
+                          </dictionary>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>_body</string> </key>
+            <value> <string>group_calendar = state_change["object"].getParentValue()\n
+group_calendar.GroupCalendar_updateRelatedAssignment()\n
+</string> </value>
+        </item>
+        <item>
+            <key> <string>_params</string> </key>
+            <value> <string>state_change, **kw</string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>GroupPresencePeriod_callUpdateRelatedAssignment</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_calendar/WorkflowTemplateItem/portal_workflow/group_calendar_interaction_workflow/variables.xml b/bt5/erp5_calendar/WorkflowTemplateItem/portal_workflow/group_calendar_interaction_workflow/variables.xml
new file mode 100644
index 0000000000..6ae03699d1
--- /dev/null
+++ b/bt5/erp5_calendar/WorkflowTemplateItem/portal_workflow/group_calendar_interaction_workflow/variables.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Variables" module="Products.DCWorkflow.Variables"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_mapping</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>variables</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_calendar/WorkflowTemplateItem/portal_workflow/group_calendar_interaction_workflow/worklists.xml b/bt5/erp5_calendar/WorkflowTemplateItem/portal_workflow/group_calendar_interaction_workflow/worklists.xml
new file mode 100644
index 0000000000..c3432aa051
--- /dev/null
+++ b/bt5/erp5_calendar/WorkflowTemplateItem/portal_workflow/group_calendar_interaction_workflow/worklists.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Worklists" module="Products.DCWorkflow.Worklists"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_mapping</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>worklists</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_calendar/bt/revision b/bt5/erp5_calendar/bt/revision
index eb8f2fa1ae..a99c3866eb 100644
--- a/bt5/erp5_calendar/bt/revision
+++ b/bt5/erp5_calendar/bt/revision
@@ -1 +1 @@
-379
\ No newline at end of file
+380
\ No newline at end of file
diff --git a/bt5/erp5_calendar/bt/template_portal_type_workflow_chain_list b/bt5/erp5_calendar/bt/template_portal_type_workflow_chain_list
index 311ab32df3..a81f0e09a9 100644
--- a/bt5/erp5_calendar/bt/template_portal_type_workflow_chain_list
+++ b/bt5/erp5_calendar/bt/template_portal_type_workflow_chain_list
@@ -1,8 +1,10 @@
 Group Calendar Assignment | edit_workflow
 Group Calendar Assignment | group_calendar_workflow
 Group Calendar | edit_workflow
+Group Calendar | group_calendar_interaction_workflow
 Group Calendar | group_calendar_workflow
 Group Presence Period | edit_workflow
+Group Presence Period | group_calendar_interaction_workflow
 Leave Request Period | edit_workflow
 Leave Request | edit_workflow
 Leave Request | leave_request_workflow
diff --git a/bt5/erp5_calendar/bt/template_workflow_id_list b/bt5/erp5_calendar/bt/template_workflow_id_list
index 5068e478ee..acca0c6904 100644
--- a/bt5/erp5_calendar/bt/template_workflow_id_list
+++ b/bt5/erp5_calendar/bt/template_workflow_id_list
@@ -1,3 +1,4 @@
+group_calendar_interaction_workflow
 group_calendar_workflow
 leave_request_workflow
 presence_request_workflow
\ No newline at end of file
-- 
2.30.9