{"id":18925149,"url":"https://github.com/exadel-inc/etoolbox-rollout-manager","last_synced_at":"2025-06-22T17:07:30.109Z","repository":{"id":103491163,"uuid":"421841191","full_name":"exadel-inc/etoolbox-rollout-manager","owner":"exadel-inc","description":"The tool for Adobe Experience Manger (AEM) allowing to roll out changes to multiple levels of live relationships simultaneously","archived":false,"fork":false,"pushed_at":"2025-06-17T23:22:52.000Z","size":1488,"stargazers_count":18,"open_issues_count":14,"forks_count":0,"subscribers_count":2,"default_branch":"develop","last_synced_at":"2025-06-22T17:07:23.175Z","etag":null,"topics":["aem","exadel-martech"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/exadel-inc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-10-27T14:00:42.000Z","updated_at":"2025-05-05T11:32:09.000Z","dependencies_parsed_at":"2024-08-28T20:19:36.032Z","dependency_job_id":"9d457935-c271-40b5-ab8a-156e9211c006","html_url":"https://github.com/exadel-inc/etoolbox-rollout-manager","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/exadel-inc/etoolbox-rollout-manager","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exadel-inc%2Fetoolbox-rollout-manager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exadel-inc%2Fetoolbox-rollout-manager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exadel-inc%2Fetoolbox-rollout-manager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exadel-inc%2Fetoolbox-rollout-manager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/exadel-inc","download_url":"https://codeload.github.com/exadel-inc/etoolbox-rollout-manager/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exadel-inc%2Fetoolbox-rollout-manager/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261330126,"owners_count":23142482,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aem","exadel-martech"],"created_at":"2024-11-08T11:09:45.883Z","updated_at":"2025-06-22T17:07:25.096Z","avatar_url":"https://github.com/exadel-inc.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# EToolbox Rollout Manager\n\n![GitHub contributors](https://img.shields.io/github/contributors/exadel-inc/etoolbox-rollout-manager)\n![GitHub Repo stars](https://img.shields.io/github/stars/exadel-inc/etoolbox-rollout-manager)\n![GitHub Repo forks](https://img.shields.io/github/forks/exadel-inc/etoolbox-rollout-manager)\n![GitHub issues](https://img.shields.io/github/issues/exadel-inc/etoolbox-rollout-manager)\n[![License](https://img.shields.io/badge/License-Apache%202.0-green.svg)](https://opensource.org/licenses/Apache-2.0)\n\n**EToolbox Rollout Manager** is a tool for Adobe Experience Manger (AEM) allowing to roll out changes to multiple levels of live relationships simultaneously.\n\n## Description\n\n**EToolbox Rollout Manager** is a comprehensive AEM tool meant for AEM website content managers and QA departments. The Rollout Manager can help users roll out changes and updates across multiple levels of AEM live copies. In other words, users can synchronize content in all necessary live copies simultaneously instead of doing so manually for every individual page. Not only does Exadel Rollout Manager reduce the manual effort needed to apply all changes, but it also presents all updates through a user-friendly interface.\n\n![overview](_img/overview.png)\n\n## System Requirements\n\nAEM 6.5 | AEM 6.4 | Java SE | Maven\n---------|---------|---------|---------\n6.5.5.0+ | 6.4.8.1+ | 8, 11 | 3.3.9+\n\n## Installation\nThe tool can be installed using the package or via building the project.\n\n### Package\n1. Get the latest package version from https://github.com/exadel-inc/etoolbox-rollout-manager/releases\n2. Install the package _**etoolbox-rollout-manager.all-XX.zip**_ using the _Package Manager_\n3. Ensure that the bundle **_EToolbox Rollout Manager - Core (etoolbox-rollout-manager.core)_** is in _Active_ state.\n4. Ensure the nodes **_/content/etoolbox/rollout-manager/servlet_** and **_/apps/wcm/core/content/sites/jcr:content/actions/selection/rollout_** are present.\n\n### How to build\n\nRun the following command in the project root directory to build all the modules and deploy the `all` package to a local instance of AEM:\n\n`mvn clean install -PautoInstallSinglePackage`\n\n## Getting Started\n1. Go to _Sites_ and select a page to be rolled out.\n   \n   ![get-started-1](_img/get-started-1.png)\n   \n2. Click the _Rollout_ button in the action bar.\n3. Select target paths and check the _Include subpages_ if necessary, click _Rollout_ in the dialog.\n   \n   ![get-started-2](_img/get-started-2.png)\n\n## Features\n### Toolbar button\nThe _Rollout_ button is added to the _Sites_ action bar:\n\n![toolbar](_img/toolbar.png)\n\nThe button is active if the conditions listed below are satisfied.\n\n#### Button active conditions\n- Single selection.\n- Selected page has live relationships.\n- Parent page of the selected page must exist under at least one live relationship (i.e target) path.\n\n### Loader before the dialog shows\nFoundation UI's _wait()_ function is used to show a wait mask before the dialog is loaded. The delay may be caused by collecting target paths and vary depending on the live copies structure complexity.\n\n![wait-mask](_img/wait-mask.png)\n\n### Target paths\nThe list of live relationships is collected recursively for the selected page and transformed to target paths.  First, the live relationships for the current page are fetched, then for each live  relationship the process of fetching is repeated, until relationships for all levels are collected.\n\n![targets](_img/targets.png)\n\n#### Exclusions\n- If a live copy was created with the property _Exclude sub pages_ enabled, or the live copy the has the property _Live Copy Inheritance_ disabled in page properties, rollout/synchronization for child pages won't be available.\n  \n  ![exclude-subpages](_img/exclude-subpages.png)\n  \n  ![inheritance-disabled](_img/inheritance-disabled.png)\n  \n  Let's suppose there are a blueprint page _/content/we-retail/language-masters/en_ and its child _/content/we-retail/language-masters/en/experience_. The blueprint _/content/we-retail/language-masters/en_ has a live copy _/content/we-retail/ca/en_, and the child's live relationship is _/content/we-retail/ca/en/experience_. Presuming that the live copy _/content/we-retail/ca/en_ has the property _Live Copy Inheritance_ disabled, _/content/we-retail/ca/en/experience_ won't be present in the _Target paths_ for _/content/we-retail/language-masters/en/experience_.\n  \n  ![inheritance-disabled-example](_img/inheritance-disabled-example.png)\n\n- If a page is in a live copy exclusions, synchronization of the page won't be available under this live copy path. In the example above if the page _/content/we-retail/ca/en/experience_ is deleted, the path _experience_ will be added to the exclusions set of _/content/we-retail/ca/en_. Thus, _/content/we-retail/ca/en/experience_ won't be present in the _Target paths_ for _/content/we-retail/language-masters/en/experience_.\n  \n### Nested checkbox tree\nThe checkbox tree is built based on nested [Coral.Accordion](https://www.adobe.io/experience-manager/reference-materials/6-5/coral-ui/coralui3/Coral.Accordion.html) widgets in conjunction with [Coral.Checkbox](https://www.adobe.io/experience-manager/reference-materials/6-5/coral-ui/coralui3/Coral.Checkbox.html). The tree is scrollable.\n\n#### Checkboxes states\n- 3 states for a checkbox if contains children: check itself + check children \u003e check itself + uncheck children \u003e uncheck itself\n- 2 states for a checkbox if no children: check \u003e uncheck\n- in addition, checking the current checkbox also checks all parent checkboxes, since it shouldn't be possible to rollout child path w/o rolling out parent target paths\n\n#### Select/Unselect all\nThe button allows to select or unselect all target paths. The button label is changed accordingly (Select all \u003e Unselect all).\n\n![select-all](_img/select-all.png)\n\n![unselect-all](_img/unselect-all.png)\n\n#### Not Rolled Out label\nThe _Not Rolled Out_ label is shown if a selected page doesn't exist under a target path and will be created during a rollout process.\n\n![new-label](_img/not-rolled-out-label.png)\n\n#### Selection validation\nThe _Rollout_ button is disabled if no target paths are selected.\n\n![validation](_img/validation.png)\n\n### Rollout\n#### Include subpages\nThe option implies rolling out of all child pages along with the selected page to target paths (similarly to the _Rollout page and all sub pages_ OOTB feature).\n\n![include-subpages](_img/include-subpages.png)\n\n#### Rollout in progress\nThe message informing that the rollout process in progress is displayed after clicking the _Rollout_ button.\n\n![rollout-in-progress](_img/rollout-in-progress.png)\n\n#### Success/Fail message\nThe message informing about the rollout process result is displayed after completion.\n\n![completed](_img/completed.png)\n   \n## Contributing\n\nContributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are **greatly appreciated**.\n\n1. Fork the Project\n2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)\n3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)\n4. Push to the Branch (`git push origin feature/AmazingFeature`)\n5. Open a Pull Request\n\n## License\n\nThis project is available under the [Apache License, Version 2.0](https://opensource.org/licenses/Apache-2.0).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexadel-inc%2Fetoolbox-rollout-manager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fexadel-inc%2Fetoolbox-rollout-manager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexadel-inc%2Fetoolbox-rollout-manager/lists"}