Modeling with concurrent developers
Generally, modeling in Anaplan is straightforward when there is only one developer owning all the changes within a model. However, as your user base grows, so do the number of use cases and requests for enhancements. This means several developers may be developing functionality within the same Anaplan model concurrently. How do you minimize the impact to production models when there are a number of changes being released by multiple developers?
When we encountered this challenge, to remain agile we had to develop a process in order to quickly release new functionality to our users, but have enough controls in place to minimize downstream impacts and disruptions. The key was developing a framework that was adopted by the team to ensure anything released went through the relevant reviews and approvals. Below I share our process when it comes to modeling with concurrent developers.
Our development framework
Our development framework is represented in the diagram below. Each box depicts a different model in the development lifecycle. In summary, developers can freely make changes to the development model and sync this to the UAT model for testing. Only UAT and CAB-approved changes are then added into the pre-production mode to be synced to the production model. It is important to re-develop these changes in a pre-prod as UAT models contain a lot of unfinalized development, and cannot be synced directly to prod.
- DEV = Development Model (standard, offline model)
- Used for development of functionality, structural changes, and unit testing, and generally contained less production data to minimize model size.
- Once a developer was happy with the changes, this would be synced via ALM to the UAT model.
- UAT = User Acceptance Testing Model (deployed, online model)
- UAT models are generally a more recent copy of the production model so that changes were tested with the most relevant production data. Our UAT model was linked up with the testing environment of other systems to easily test downstream system impact.
- Once in the UAT model, the changes would be peer-reviewed by another developer. This is a technical review to check if changes have been developed most efficiently and to model standards.
- After the change has passed tech review, it goes to the end user for testing and sign-off.
- All changes that have been UAT approved and are expected to have downstream impacts will go to the Change Advisory Board (CAB), where system owners evaluate and approve the expected impacts of the change.
- PRE-PROD = Pre-production Model (standard, offline model)
- The pre-prod model is a copy of the production model two weeks before the scheduled deployment date.
- Developers carefully re-develop changes into pre-prod, complete unit tests and production data variance checks to ensure that the outcome and impacts of the change is expected. It also gives a chance for developers to test against the most up-to-date production data.
- PROD = Production Model (deployed, online model)
- During the deployment window, changes from pre-prod will be synced to prod via ALM with variance checks and any production data changes.
- End users will need to do a Production Verification Test (PVT) following deployment to check that the change is working as expected in prod.
This framework does require double development, but it works for our organization and allows us to deliver new functionality quickly.
Have you had challenges developing in Anaplan with larger teams? Add your tips in the comment section below!
About the author: Julie Le
Julie Le is a Certified Master Analanner and has over five years of experience in Anaplan involving large-scale implementations and teams.
Comments
-
Awesome post! Thank you for sharing.
I am curious. 1) Do you use single WS for all four models or you divide them somehow?
2) Do you think you can name a minimum number of modelers working in a single model required to consider implementing this approach?
3) What about new UX? Do you have an App/Pages for UAT/ Pre-Prod stage or you are able to keep the ALM in UX too? Not sure how to keep one page using ALM if models are unsynced (UAT & Prod probably can't share the same IDs for the models' entities)
0 -
Thank you! I'll try my best to answer your questions:
- We divide our workspaces based on the development lifecycle, e.g. Dev and preprod models will live in a separate workspace (only available for developers and isolates any system processing due to incorrect formulas to this workspace only), UAT models have a dedicated UAT workspace (which most users will have access to) and Production models have a Prod workspace
- We had a team of about 8 developers, so this approach was required for consistency and auditing purposes. Generally I would implement it a similar approach if 3 or more developers are working on changes that impact the same area in the model, but if there is good communication between the developers and everything will be tested in a similar timeframe, then it's okay not to have it as well.
- This is a good question, we don't have a great process for new UX changes so if there's a change in UAT that impacts a UX page, it will be shown in the new UX page for all models (this is not a good approach). However, this is a great article on how to approach ALM for the new UX, where you use Draft and Published pages: https://community.anaplan.com/t5/How-To/Application-Lifecycle-Management-for-the-User-Experience/ta-p/65921
6 -
What would be the minimum number of models to maintain control like this? If we don't have the available workspace to have, in this case, four models, can we do without the Pre-Prod?
0 -
Hey @adpinto, you would need 4 models to maintain a control like this (Dev, UAT, Pre-prod, Prod). Pre-prod is important if there are a lot of untested development in the Dev and UAT environments that you don't want to push to Production. You can minimise the space of the Dev model by creating the model from a revision tag, rather than a model copy. This removes all production data from the Dev model, making it significantly smaller!
https://help.anaplan.com/290c84a6-5fcd-462b-a7f0-008f580838b2-Working-with-Revision-Tags
1