diff --git a/bt5/erp5_base/ActionTemplateItem/portal_types/System%20Preference/organisation_preference.xml b/bt5/erp5_base/ActionTemplateItem/portal_types/System%20Preference/organisation_preference.xml
new file mode 100644
index 0000000000000000000000000000000000000000..78ef096b7c8c8ff61933deb87ab105b70ef278fc
--- /dev/null
+++ b/bt5/erp5_base/ActionTemplateItem/portal_types/System%20Preference/organisation_preference.xml
@@ -0,0 +1,81 @@
+
+
+
+
+
+
+
+
+ -
+ action
+
+ AAAAAAAAAAI=
+
+
+ -
+ categories
+
+
+ action_type/object_view
+
+
+
+ -
+ category
+ object_view
+
+ -
+ condition
+
+
+ -
+ description
+
+
+
+
+ -
+ icon
+
+
+ -
+ id
+ organisation_preference
+
+ -
+ permissions
+
+
+ View
+
+
+
+ -
+ priority
+ 10.0
+
+ -
+ title
+ Organisation
+
+ -
+ visible
+ 1
+
+
+
+
+
+
+
+
+
+
+ -
+ text
+ string:${object_url}/SystemPreference_viewOrganisation
+
+
+
+
+
diff --git a/bt5/erp5_base/PropertySheetTemplateItem/portal_property_sheets/OrganisationPreference.xml b/bt5/erp5_base/PropertySheetTemplateItem/portal_property_sheets/OrganisationPreference.xml
new file mode 100644
index 0000000000000000000000000000000000000000..61f2a95f4280eea252a91a5c635cacc0577567ea
--- /dev/null
+++ b/bt5/erp5_base/PropertySheetTemplateItem/portal_property_sheets/OrganisationPreference.xml
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+ -
+ _count
+
+ AAAAAAAAAAI=
+
+
+ -
+ _mt_index
+
+ AAAAAAAAAAM=
+
+
+ -
+ _tree
+
+ AAAAAAAAAAQ=
+
+
+ -
+ description
+
+
+
+
+ -
+ id
+ OrganisationPreference
+
+ -
+ portal_type
+ Property Sheet
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/bt5/erp5_base/PropertySheetTemplateItem/portal_property_sheets/OrganisationPreference/preferred_establishment_organisation_role_property.xml b/bt5/erp5_base/PropertySheetTemplateItem/portal_property_sheets/OrganisationPreference/preferred_establishment_organisation_role_property.xml
new file mode 100644
index 0000000000000000000000000000000000000000..25d48d77f5bb3fcb87fff0a80caf734f76b511c7
--- /dev/null
+++ b/bt5/erp5_base/PropertySheetTemplateItem/portal_property_sheets/OrganisationPreference/preferred_establishment_organisation_role_property.xml
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+ -
+ categories
+
+
+ elementary_type/tokens
+
+
+
+ -
+ description
+
+
+
+
+ -
+ id
+ preferred_establishment_organisation_role_property
+
+ -
+ multivalued
+ 1
+
+ -
+ portal_type
+ Standard Property
+
+ -
+ preference
+ 1
+
+
+
+
+
diff --git a/bt5/erp5_base/PropertySheetTemplateItem/portal_property_sheets/OrganisationPreference/preferred_head_office_organisation_role_property.xml b/bt5/erp5_base/PropertySheetTemplateItem/portal_property_sheets/OrganisationPreference/preferred_head_office_organisation_role_property.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c49f02117699e967562821ae9526c75028d128ab
--- /dev/null
+++ b/bt5/erp5_base/PropertySheetTemplateItem/portal_property_sheets/OrganisationPreference/preferred_head_office_organisation_role_property.xml
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+ -
+ categories
+
+
+ elementary_type/tokens
+
+
+
+ -
+ description
+
+
+
+
+ -
+ id
+ preferred_head_office_organisation_role_property
+
+ -
+ portal_type
+ Standard Property
+
+ -
+ preference
+ 1
+
+ -
+ property_default
+
+
+
+
+
+
+
+
diff --git a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Organisation_getHeadOfficeValue.py b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Organisation_getHeadOfficeValue.py
new file mode 100644
index 0000000000000000000000000000000000000000..5deb6ff9ece3ee818350c38d3f53cbe33a5026eb
--- /dev/null
+++ b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Organisation_getHeadOfficeValue.py
@@ -0,0 +1,28 @@
+# Gets the Head Office Organisation of a Business Group
+# The Head Office is the Organisation whose one of its roles matches the role
+# category defined as "Head Office Role" in the "Organisation" system preferences
+portal = context.getPortalObject()
+group_base_category = portal.portal_categories.group
+
+organisation_group = context.getGroupValue()
+if organisation_group is None:
+ return None
+
+head_office_category = portal.portal_preferences.getPreferredHeadOfficeOrganisationRole()
+
+head_office_list = []
+
+while len(head_office_list) == 0 and organisation_group != group_base_category:
+ organisation_list = portal.portal_catalog(portal_type="Organisation", group_uid=organisation_group.getUid())
+
+ head_office_list = [organisation.getObject() for organisation in organisation_list
+ if head_office_category in organisation.getRoleList()]
+
+ organisation_group = organisation_group.getParentValue()
+
+if len(head_office_list) == 0:
+ return None
+if len(head_office_list) == 1:
+ return head_office_list.pop()
+else:
+ return head_office_list
diff --git a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Organisation_getHeadOfficeValue.xml b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Organisation_getHeadOfficeValue.xml
new file mode 100644
index 0000000000000000000000000000000000000000..848f67dbc184869de0bc6302c41dc9dc91ab99f9
--- /dev/null
+++ b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Organisation_getHeadOfficeValue.xml
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+
+
+ -
+ Script_magic
+ 3
+
+ -
+ _bind_names
+
+
+
+
+ -
+ _params
+
+
+ -
+ id
+ Organisation_getHeadOfficeValue
+
+
+
+
+
diff --git a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/SystemPreference_viewOrganisation.xml b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/SystemPreference_viewOrganisation.xml
new file mode 100644
index 0000000000000000000000000000000000000000..65f9930de5c853fec93f72f7d7a4b98ef8942ac1
--- /dev/null
+++ b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/SystemPreference_viewOrganisation.xml
@@ -0,0 +1,132 @@
+
+
+
+
+
+
+
+
+ -
+ _objects
+
+
+
+
+ -
+ action
+ Base_edit
+
+ -
+ description
+
+
+ -
+ edit_order
+
+
+
+
+ -
+ encoding
+ UTF-8
+
+ -
+ enctype
+
+
+ -
+ group_list
+
+
+ left
+ right
+ center
+ bottom
+ hidden
+
+
+
+ -
+ groups
+
+
+
-
+ bottom
+
+
+
+
+ -
+ center
+
+
+
+
+ -
+ hidden
+
+
+
+
+ -
+ left
+
+
+ my_preferred_head_office_organisation_role
+ my_preferred_establishment_organisation_role
+
+
+
+ -
+ right
+
+
+
+
+
+
+
+ -
+ id
+ SystemPreference_viewOrganisation
+
+ -
+ method
+ POST
+
+ -
+ name
+ Preference_viewOrganisation
+
+ -
+ pt
+ form_view
+
+ -
+ row_length
+ 4
+
+ -
+ stored_encoding
+ UTF-8
+
+ -
+ title
+ Organisation
+
+ -
+ unicode_mode
+ 0
+
+ -
+ update_action
+
+
+ -
+ update_action_title
+
+
+
+
+
+
diff --git a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/SystemPreference_viewOrganisation/my_preferred_establishment_organisation_role.xml b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/SystemPreference_viewOrganisation/my_preferred_establishment_organisation_role.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d993ae097ad0fe081fea8f3c8d8f604c2a9a1303
--- /dev/null
+++ b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/SystemPreference_viewOrganisation/my_preferred_establishment_organisation_role.xml
@@ -0,0 +1,110 @@
+
+
+
+
+
+
+
+
+ -
+ delegated_list
+
+
+ items
+ title
+
+
+
+ -
+ id
+ my_preferred_establishment_organisation_role
+
+ -
+ message_values
+
+
+
-
+ external_validator_failed
+ The input failed the external validator.
+
+
+
+
+ -
+ overrides
+
+
+
-
+ field_id
+
+
+ -
+ form_id
+
+
+
+
+
+ -
+ tales
+
+
+
-
+ field_id
+
+
+ -
+ form_id
+
+
+ -
+ items
+
+ AAAAAAAAAAI=
+
+
+
+
+
+ -
+ values
+
+
+
-
+ field_id
+ my_multi_list_field
+
+ -
+ form_id
+ Base_viewFieldLibrary
+
+ -
+ items
+
+
+
+
+ -
+ title
+ Establishment Roles
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+ _text
+ python: getattr(here.portal_categories.role, preferences.getPreference(\'preferred_category_child_item_list_method_id\', \'getCategoryChildCompactLogicalPathItemList\'))(local_sort_id=(\'int_index\', \'translated_title\'), checked_permission=\'View\')
+
+
+
+
+
diff --git a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/SystemPreference_viewOrganisation/my_preferred_head_office_organisation_role.xml b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/SystemPreference_viewOrganisation/my_preferred_head_office_organisation_role.xml
new file mode 100644
index 0000000000000000000000000000000000000000..79aaa92fc426e8a608bf3f28e186fdc7688ea981
--- /dev/null
+++ b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/SystemPreference_viewOrganisation/my_preferred_head_office_organisation_role.xml
@@ -0,0 +1,110 @@
+
+
+
+
+
+
+
+
+ -
+ delegated_list
+
+
+ items
+ title
+
+
+
+ -
+ id
+ my_preferred_head_office_organisation_role
+
+ -
+ message_values
+
+
+
-
+ external_validator_failed
+ The input failed the external validator.
+
+
+
+
+ -
+ overrides
+
+
+
-
+ field_id
+
+
+ -
+ form_id
+
+
+
+
+
+ -
+ tales
+
+
+
-
+ field_id
+
+
+ -
+ form_id
+
+
+ -
+ items
+
+ AAAAAAAAAAI=
+
+
+
+
+
+ -
+ values
+
+
+
-
+ field_id
+ my_view_mode_category
+
+ -
+ form_id
+ Base_viewFieldLibrary
+
+ -
+ items
+
+
+
+
+ -
+ title
+ Head Office Role
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+ _text
+ python: getattr(here.portal_categories.role, preferences.getPreference(\'preferred_category_child_item_list_method_id\', \'getCategoryChildCompactLogicalPathItemList\'))(local_sort_id=(\'int_index\', \'translated_title\'), checked_permission=\'View\')
+
+
+
+
+
diff --git a/bt5/erp5_base/bt/template_action_path_list b/bt5/erp5_base/bt/template_action_path_list
index 59dcfeea6ae69a3823e1da1221a2c3ce9305fa0b..7db0aeaa2c4dc957791a3949e54b4ed416293a74 100644
--- a/bt5/erp5_base/bt/template_action_path_list
+++ b/bt5/erp5_base/bt/template_action_path_list
@@ -100,6 +100,7 @@ Rounding Model | predicate_view
Rounding Model | view
Rounding Tool | view
Split Movement Group | view
+System Preference | organisation_preference
Telephone | change_function
Telephone | view
Title Movement Group | view
diff --git a/bt5/erp5_base/bt/template_property_sheet_id_list b/bt5/erp5_base/bt/template_property_sheet_id_list
index c30db5a11a06a0e2261407ec6f6e5906e767dafa..f3539dc1fbbf61c44fb01a453e83a75e2625e25e 100644
--- a/bt5/erp5_base/bt/template_property_sheet_id_list
+++ b/bt5/erp5_base/bt/template_property_sheet_id_list
@@ -1 +1,2 @@
+OrganisationPreference
PreviousCausalityMovementGroup
\ No newline at end of file