diff --git a/actool-example/META-INF/MANIFEST.MF b/actool-example/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..e9d8645
--- /dev/null
+++ b/actool-example/META-INF/MANIFEST.MF
@@ -0,0 +1,5 @@
+Manifest-Version: 1.0
+Content-Package-Id: my_packages:actool-example
+Content-Package-Roots: /apps/actool-example
+Content-Package-Type: application
+
diff --git a/actool-example/META-INF/vault/config.xml b/actool-example/META-INF/vault/config.xml
new file mode 100644
index 0000000..b525f1c
--- /dev/null
+++ b/actool-example/META-INF/vault/config.xml
@@ -0,0 +1,93 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/actool-example/META-INF/vault/definition/.content.xml b/actool-example/META-INF/vault/definition/.content.xml
new file mode 100644
index 0000000..c490fe2
--- /dev/null
+++ b/actool-example/META-INF/vault/definition/.content.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
diff --git a/actool-example/META-INF/vault/filter.xml b/actool-example/META-INF/vault/filter.xml
new file mode 100644
index 0000000..c45186e
--- /dev/null
+++ b/actool-example/META-INF/vault/filter.xml
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/actool-example/META-INF/vault/nodetypes.cnd b/actool-example/META-INF/vault/nodetypes.cnd
new file mode 100644
index 0000000..8f00f08
--- /dev/null
+++ b/actool-example/META-INF/vault/nodetypes.cnd
@@ -0,0 +1,13 @@
+<'sling'='http://sling.apache.org/jcr/sling/1.0'>
+<'nt'='http://www.jcp.org/jcr/nt/1.0'>
+<'rep'='internal'>
+
+[sling:Folder] > nt:folder
+ - * (undefined) multiple
+ - * (undefined)
+ + * (nt:base) = sling:Folder version
+
+[rep:RepoAccessControllable]
+ mixin
+ + rep:repoPolicy (rep:Policy) protected ignore
+
diff --git a/actool-example/META-INF/vault/properties.xml b/actool-example/META-INF/vault/properties.xml
new file mode 100644
index 0000000..3df5871
--- /dev/null
+++ b/actool-example/META-INF/vault/properties.xml
@@ -0,0 +1,19 @@
+
+
+
+FileVault Package Properties
+
+application
+admin
+2
+my_packages
+2023-10-17T14:05:32.916+09:00
+admin
+1
+2023-10-17T14:05:32.908+09:00
+
+
+admin
+actool-example
+2023-10-17T14:05:32.908+09:00
+
diff --git a/actool-example/jcr_root/.content.xml b/actool-example/jcr_root/.content.xml
new file mode 100644
index 0000000..8ea9f2a
--- /dev/null
+++ b/actool-example/jcr_root/.content.xml
@@ -0,0 +1,6 @@
+
+
diff --git a/actool-example/jcr_root/apps/.content.xml b/actool-example/jcr_root/apps/.content.xml
new file mode 100644
index 0000000..54084a8
--- /dev/null
+++ b/actool-example/jcr_root/apps/.content.xml
@@ -0,0 +1,4 @@
+
+
diff --git a/actool-example/jcr_root/apps/actool-example/acl-template/fragment-base.author/base.yaml b/actool-example/jcr_root/apps/actool-example/acl-template/fragment-base.author/base.yaml
new file mode 100644
index 0000000..a2de70b
--- /dev/null
+++ b/actool-example/jcr_root/apps/actool-example/acl-template/fragment-base.author/base.yaml
@@ -0,0 +1,206 @@
+# System configuration (all global fragments)
+
+- group_config:
+
+ - fragment-basic-allow:
+
+ - name:
+ memberOf:
+ path: f
+
+ - fragment-restrict-for-everyone:
+
+ - name:
+ memberOf:
+ path: f
+
+
+
+
+- ace_config:
+
+
+ - fragment-basic-allow:
+
+ - path: /
+ permission: allow
+ actions: read
+ privileges:
+ repGlob:
+
+ ## allows access to nodes that are readable for all users
+ ### /content
+ - path: /content
+ permission: allow
+ actions:
+ privileges: jcr:read,jcr:readAccessControl
+ repGlob: ""
+
+ - path: /content
+ permission: allow
+ actions:
+ privileges: jcr:read,jcr:readAccessControl
+ repGlob: /jcr:*
+
+
+ ### /content/experience-fragments
+ - path: /content/experience-fragments
+ permission: allow
+ actions:
+ privileges: jcr:read,jcr:readAccessControl
+ repGlob: ""
+
+ - path: /content/experience-fragments
+ permission: allow
+ actions:
+ privileges: jcr:read,jcr:readAccessControl
+ repGlob: /jcr:*
+
+
+ ### /content/dam
+ - path: /content/dam
+ permission: allow
+ actions:
+ privileges: jcr:read,jcr:readAccessControl
+ repGlob: ""
+
+ - path: /content/dam
+ permission: allow
+ actions:
+ privileges: jcr:read,jcr:readAccessControl
+ repGlob: /jcr:*
+
+
+ ### /content/dam/projects
+ - path: /content/dam/projects
+ permission: allow
+ actions:
+ privileges: jcr:read,jcr:readAccessControl
+ repGlob: ""
+
+ - path: /content/dam/projects
+ permission: allow
+ actions:
+ privileges: jcr:read,jcr:readAccessControl
+ repGlob: /jcr:*
+
+
+ ### /content/dam/collections
+ - path: /content/dam/collections
+ permission: allow
+ actions:
+ privileges: jcr:read,jcr:readAccessControl
+ repGlob: ""
+
+ - path: /content/dam/collections
+ permission: allow
+ actions:
+ privileges: jcr:read,jcr:readAccessControl
+ repGlob: /jcr:*
+
+
+ ### /content/projects
+ - path: /content/projects
+ permission: allow
+ actions:
+ privileges: jcr:read,jcr:readAccessControl
+ repGlob: ""
+
+ - path: /content/projects
+ permission: allow
+ actions:
+ privileges: jcr:read,jcr:readAccessControl
+ repGlob: /jcr:*
+
+
+ ### /content/cq:tags
+ - path: /content/cq:tags
+ permission: allow
+ actions:
+ privileges: jcr:read,jcr:readAccessControl
+ repGlob: ""
+
+ - path: /content/cq:tags
+ permission: allow
+ actions:
+ privileges: jcr:read,jcr:readAccessControl
+ repGlob: /jcr:*
+
+
+ ### /conf
+ - path: /conf
+ permission: allow
+ actions:
+ privileges: jcr:read,jcr:readAccessControl
+ repGlob: ""
+
+ - path: /conf
+ permission: allow
+ actions:
+ privileges: jcr:read,jcr:readAccessControl
+ repGlob: /jcr:*
+
+
+ - fragment-restrict-for-everyone:
+
+ # reset acls of the user contents for the built-in groups
+ - path: /content
+ permission: deny
+ actions:
+ privileges: jcr:all
+ repGlob:
+
+
+ - path: /content/experience-fragments
+ permission: deny
+ actions:
+ privileges: jcr:all
+ repGlob:
+
+
+ - path: /content/dam
+ permission: deny
+ actions:
+ privileges: jcr:all
+ repGlob:
+
+
+ - path: /content/dam/projects
+ permission: deny
+ actions:
+ privileges: jcr:all
+ repGlob:
+
+
+ - path: /content/dam/collections
+ permission: deny
+ actions:
+ privileges: jcr:all
+ repGlob:
+
+
+ - path: /content/projects
+ permission: deny
+ actions:
+ privileges: jcr:all
+ repGlob:
+
+
+ - path: /content/cq:tags
+ permission: deny
+ actions:
+ privileges: jcr:all
+ repGlob:
+
+
+ - path: /conf
+ permission: deny
+ actions:
+ privileges: jcr:all
+ repGlob:
+
+
+
+
+
+
diff --git a/actool-example/jcr_root/apps/actool-example/acl-template/we-retail.author/case-study.yaml b/actool-example/jcr_root/apps/actool-example/acl-template/we-retail.author/case-study.yaml
new file mode 100644
index 0000000..178175c
--- /dev/null
+++ b/actool-example/jcr_root/apps/actool-example/acl-template/we-retail.author/case-study.yaml
@@ -0,0 +1,76 @@
+# Role groups for We-Retail
+
+# /content/we-retail/language-masters/it/A1
+# /content/we-retail/language-masters/it/F1
+# /content/we-retail/language-masters/it/A1/B2
+# /content/we-retail/language-masters/it/A1/E2
+# /content/we-retail/language-masters/it/A1/B2/C3
+# /content/we-retail/language-masters/it/A1/B2/D3
+
+
+- group_config:
+ - sample-group:
+ - name: sample group
+ isMemberOf: fragment-restrict-for-everyone,fragment-basic-allow
+
+
+- ace_config:
+
+ - sample-group:
+
+ ## allows access to nodes that are readable for all users
+ ### /content
+ - FOR path IN [/content/we-retail, /content/we-retail/A1]:
+ - path: ${path}
+ permission: allow
+ actions:
+ privileges: jcr:read
+ repGlob: ""
+
+ - path: ${path}
+ permission: allow
+ actions:
+ privileges: jcr:read
+ repGlob: /jcr:*
+
+ - FOR path IN [/content/we-retail/A1/B2]:
+ - path: ${path}
+ permission: allow
+ actions: read,modify
+ privileges:
+ repGlob: ""
+
+ - path: ${path}
+ permission: allow
+ actions: read,modify
+ privileges:
+ repGlob: /jcr:*
+
+ - FOR path IN [/content/we-retail/A1/B2/C3,/content/we-retail/F1]:
+ - path: ${path}
+ permission: allow
+ actions: read,modify,create
+ privileges:
+ repGlob:
+
+
+ - path: /content/dam
+ permission: allow
+ actions:
+ privileges: jcr:all
+ repGlob:
+
+ - path: /conf
+ permission: allow
+ actions:
+ privileges: jcr:all
+ repGlob:
+
+ - path: /content/we-retail/language-masters/en
+ permission: allow
+ actions:
+ privileges: jcr:all
+ repGlob:
+
+
+
diff --git a/actool-example/jcr_root/apps/actool-example/acl-template/we-retail.author/content-group.yaml b/actool-example/jcr_root/apps/actool-example/acl-template/we-retail.author/content-group.yaml
new file mode 100644
index 0000000..db32d99
--- /dev/null
+++ b/actool-example/jcr_root/apps/actool-example/acl-template/we-retail.author/content-group.yaml
@@ -0,0 +1,207 @@
+# Content groups for We-Retail
+- DEF sitePrefix=weretail
+- DEF countryArr=[us, ca, ch, de, fr, es, it]
+- DEF permissionOfRole=:
+ editor: read,modify,create
+ publisher: read,modify,create,delete
+ approver: read,modify,create,delete,acl_read
+
+
+- group_config:
+
+ - FOR country IN ${countryArr}:
+
+ - content-${sitePrefix}-${country}-for-editor:
+ - name: We-Retail ${country} content for editor
+ isMemberOf:
+ path: /home/groups/${sitePrefix}
+
+
+ - content-${sitePrefix}-${country}-for-publisher:
+ - name: We-Retail ${country} content for publisher
+ isMemberOf:
+ path: /home/groups/${sitePrefix}
+
+
+ - content-${sitePrefix}-${country}-for-approver:
+ - name: We-Retail ${country} content for approver
+ isMemberOf: workflow-administrators
+ path: /home/groups/${sitePrefix}
+
+
+ - content-${sitePrefix}-language-masters-for-editor:
+ - name: We-Retail language-masters content for editor
+ isMemberOf:
+ path: /home/groups/${sitePrefix}
+
+
+ - content-${sitePrefix}-language-masters-for-publisher:
+ - name: We-Retail language-masters content for publisher
+ isMemberOf:
+ path: /home/groups/${sitePrefix}
+
+
+ - content-${sitePrefix}-language-masters-for-approver:
+ - name: We-Retail language-masters content for approver
+ isMemberOf:
+ path: /home/groups/${sitePrefix}
+
+
+
+
+- ace_config:
+
+ ## for language-masters
+ - FOR country IN ${countryArr}:
+ - FOR role IN ${keys(permissionOfRole)}:
+
+ - content-${sitePrefix}-${country}-for-${role}:
+ - path: /content/we-retail
+ permission: allow
+ actions: read
+ privileges:
+
+ - path: /content/we-retail/${country}
+ permission: allow
+ actions: ${permissionOfRole[role]}
+ privileges:
+
+ - path: /content/experience-fragments
+ permission: allow
+ actions: ${permissionOfRole[role]}
+ privileges:
+
+ - path: /content/dam/we-retail
+ permission: allow
+ actions: ${permissionOfRole[role]}
+ privileges:
+
+ - path: /content/dam/projects/we-retail
+ permission: allow
+ actions: ${permissionOfRole[role]}
+ privileges:
+
+ - path: /content/projects
+ permission: allow
+ actions: ${permissionOfRole[role]}
+ privileges:
+
+ # delete permission is necessary if you want to make a launch
+ - path: /content/launches
+ permission: allow
+ actions: read,modify,create,delete
+ privileges:
+
+ - path: /content/cq:tags/we-retail
+ permission: allow
+ actions: read
+ privileges:
+
+ - path: /conf/we-retail/settings/wcm/templates
+ permission: allow
+ actions: read
+ privileges:
+
+ - path: /conf/we-retail/settings/wcm/policies
+ permission: allow
+ actions: read
+ privileges:
+
+
+ - IF ${startsWith(role, "publisher") or startsWith(role, "approver")}:
+
+ - path: /conf
+ permission: allow
+ privileges: crx:replicate
+ restrictions:
+ rep:glob: '/*/cloudconfigs'
+
+ - path: /conf
+ permission: allow
+ privileges: crx:replicate
+ restrictions:
+ rep:glob: '/*/cloudconfigs/*'
+
+ ## replicate permission of the template and the policiess is necessary if you want to publish pages
+ - path: /conf/we-retail/settings/wcm/templates
+ permission: allow
+ privileges: crx:replicate
+
+ - path: /conf/we-retail/settings/wcm/policies
+ permission: allow
+ privileges: crx:replicate
+
+
+ ## for language-masters
+ - FOR role IN ${keys(permissionOfRole)}:
+
+ - content-${sitePrefix}-language-masters-for-${role}:
+ - path: /content/we-retail
+ permission: allow
+ actions: ${permissionOfRole[role]}
+ privileges:
+
+ - path: /content/experience-fragments
+ permission: allow
+ actions: ${permissionOfRole[role]}
+ privileges:
+
+ - path: /content/dam/we-retail
+ permission: allow
+ actions: ${permissionOfRole[role]}
+ privileges:
+
+ - path: /content/dam/projects/we-retail
+ permission: allow
+ actions: ${permissionOfRole[role]}
+ privileges:
+
+ - path: /content/projects
+ permission: allow
+ actions: ${permissionOfRole[role]}
+ privileges:
+
+ # delete permission is necessary if you want to make a launch
+ - path: /content/launches
+ permission: allow
+ actions: read,modify,create,delete
+ privileges:
+
+ - path: /content/cq:tags/we-retail
+ permission: allow
+ actions: read,modify,create,delete
+ privileges:
+
+ - path: /conf/we-retail/settings/wcm/templates
+ permission: allow
+ actions: read
+ privileges:
+
+ - path: /conf/we-retail/settings/wcm/policies
+ permission: allow
+ actions: read
+ privileges:
+
+
+ - IF ${startsWith(role, "publisher") or startsWith(role, "approver")}:
+
+ - path: /conf
+ permission: allow
+ privileges: crx:replicate
+ restrictions:
+ rep:glob: '/*/cloudconfigs'
+
+ - path: /conf
+ permission: allow
+ privileges: crx:replicate
+ restrictions:
+ rep:glob: '/*/cloudconfigs/*'
+
+ ## replicate permission of the template and the policiess is necessary if you want to publish pages
+ - path: /conf/we-retail/settings/wcm/templates
+ permission: allow
+ privileges: crx:replicate
+
+ - path: /conf/we-retail/settings/wcm/policies
+ permission: allow
+ privileges: crx:replicate
diff --git a/actool-example/jcr_root/apps/actool-example/acl-template/we-retail.author/fragment-role.yaml b/actool-example/jcr_root/apps/actool-example/acl-template/we-retail.author/fragment-role.yaml
new file mode 100644
index 0000000..3ceb484
--- /dev/null
+++ b/actool-example/jcr_root/apps/actool-example/acl-template/we-retail.author/fragment-role.yaml
@@ -0,0 +1,24 @@
+# Role groups for We-Retail
+- DEF sitePrefix=weretail
+- DEF countryLangMasterArr=[us, ca, ch, de, fr, es, it, language-masters]
+
+
+- group_config:
+ - FOR country IN ${countryLangMasterArr}:
+
+ - ${sitePrefix}-${country}-editor:
+ - name: We-Retail ${country} editor
+ isMemberOf: fragment-restrict-for-everyone,fragment-basic-allow,content-authors,content-weretail-${country}-for-editor
+ path: /home/groups/${sitePrefix}
+
+ - ${sitePrefix}-${country}-publisher:
+ - name: We-Retail ${country} publisher
+ isMemberOf: fragment-restrict-for-everyone,fragment-basic-allow,content-authors,workflow-users,content-weretail-${country}-for-publisher
+ path: /home/groups/${sitePrefix}
+
+ - ${sitePrefix}-${country}-approver:
+ - name: We-Retail ${country} approver
+ isMemberOf: fragment-restrict-for-everyone,fragment-basic-allow,content-authors,workflow-administrators,content-weretail-${country}-for-approver
+ path: /home/groups/${sitePrefix}
+
+