Best Practice for code promotion

Hello All,

I am looking for information in terms of code promotions from the different environments with Anaplan. Currently if we have a development environment with our models and we have moved the code to a test/stage environment for UAT. In order to propogate the code to prod would you move the code base from dev to prod or move the test/stage environment code base to prod? Would appreciate any other information in terms of best practice from an ALM point of view.

Answers

  • There is a great complilation of ALM best practice resources here:

    For your specific question, it is covered in ALM explained—Part 2: testing:

    It is recommended that the development model is always used as the source for all test and production models. The advantages of this are as follows:

    - The source of the production model(s) remains constant; there is no confusion over which model is the source for the target model(s).

    - Using a consistent source minimizes the chance of breaking the compatibility

    - Test models can be deleted after use to save on workspace used

    - It is possible to create multiple test models to validate different revision tag changes (e.g. one test model could be at ‘Revision 3’, another at ‘Revision 4’). Testing on ‘Revision 3’ may be complete, so, if desired, ‘Revision 3’ could be deployed, while testing on ‘Revision 4’ is progressing.

    - Depending on the scope of the testing, a fully populated dataset may be required. If this is the case, it is simple to copy the production model to become a test model.

  • sjeena
    edited March 2023

    Thanks Ryan, so we would never deploy from a stage or QA environment to prod? Would this process not cause defects in terms of competing Revision tags? A typical ALM lifecycle involves dev to Stage/QA to Prod so what is the reasoning to deploy from development models?

  • @sjeena You can push the RT from any model to PROD as long as it is compatible but the recommendation is that you use DEV as a source and @ryan_kohn has already mentioned a lot of reasons why is it recommended. Take a look at it if you happen to miss it.

    - "The source of the production model(s) remains constant; there is no confusion over which model is the source for the target model(s).

    - Using a consistent source minimizes the chance of breaking the compatibility

    - Test models can be deleted after use to save on workspace used

    - It is possible to create multiple test models to validate different revision tag changes (e.g. one test model could be at ‘Revision 3’, another at ‘Revision 4’). Testing on ‘Revision 3’ may be complete, so, if desired, ‘Revision 3’ could be deployed, while testing on ‘Revision 4’ is progressing."

    Hope that helps,

    Misbah

    Miz Logix

  • Thanks Ryan, so we would never deploy from a stage or QA environment to prod? Would this process not cause defects in terms of competing Revision tags? A typical ALM lifecycle involves dev to Stage/QA to Prod so what is the reasoning to deploy from development models?

    @sjeena The revisions in a model can only ever move forward, so you won't have competing revision tags. Here's a visual of how this process could look (source):