diff --git a/src/collective/task/profiles/default/workflows/task_workflow/definition.xml b/src/collective/task/profiles/default/workflows/task_workflow/definition.xml
index 27ba654..ebc3a4e 100644
--- a/src/collective/task/profiles/default/workflows/task_workflow/definition.xml
+++ b/src/collective/task/profiles/default/workflows/task_workflow/definition.xml
@@ -14,6 +14,7 @@
Manager
Reviewer
Editor
+ Reader
Manager
@@ -26,6 +27,7 @@
Manager
Reviewer
Editor
+ Reader
Manager
@@ -36,6 +38,7 @@
Manager
Reviewer
Editor
+ Reader
Manager
@@ -48,6 +51,7 @@
Manager
Reviewer
Editor
+ Reader
Manager
@@ -60,6 +64,7 @@
Manager
Reviewer
Editor
+ Reader
Manager
@@ -75,6 +80,7 @@
Manager
Reviewer
Editor
+ Reader
Manager
diff --git a/src/collective/task/subscribers.py b/src/collective/task/subscribers.py
index 2b41ad5..7f40587 100644
--- a/src/collective/task/subscribers.py
+++ b/src/collective/task/subscribers.py
@@ -1,3 +1,4 @@
+from Acquisition import aq_parent
from five import grok
from OFS.interfaces import IObjectWillBeRemovedEvent
@@ -71,6 +72,16 @@ def set_enquirer(context, event):
enquirer = api.user.get_current().id
enquirer_dm = LocalRolesToPrincipalsDataManager(context, IBaseTask['enquirer'])
enquirer_dm.set((enquirer,))
+
+ parent = aq_parent(context)
+ if IBaseTask.providedBy(parent):
+ # parent is also a task, we create Reader local role value on its own
+ # roles, unless parent enquirer is the greffier.
+ if not 'Greffier' in api.user.get_roles(parent.enquirer[0]):
+ for user_id, roles in parent.get_local_roles():
+ if 'Reader' in roles or 'Reviewer' in roles:
+ context.manage_addLocalRoles(user_id, ['Reader'])
+
context.reindexObject()