Related to Code Promotion to higher environment: 1) We have our appli

Related to Code Promotion to higher environment:

1) We have our application running in QA. It uses version1.0 of a plugin. The input datatype is say, CustomerDetails (version 1.0)
2) In Dev we have upgraded the plugin to version1.1 The associated datatype is also upgraded to use CustomerDetails (version1.1)

This being the case, how should we go about promoting build from Dev to QA?

Import Application first and then replace the plugin? Will there be any side-effects due to the updates made? Else, how should we go about it? (background: we always get into issues in Dev whenever we make updates to datatype used by the plugin)
...

OriginalPostID-115995

OriginalPostID-115995

  Discussion posts and replies are publicly visible

  • The documentation states that you cannot change the node inputs/outputs of a registered smart service without having to use a different smart service key and remapping yoru models to point to this new smart service forum.appian.com/.../Custom_Smart_Service_Plug-ins This is to guarantee running instances are not impacted by input/output changes.

    Smart services get registered in the environment mapping node inputs and outputs types to local data type ids. When you update a CDT by deleting and re-uploading the old CDT gets versioned to ^X where X is an integer that represents the version. The current version gets the name withou any ^X suffix but since it's a new version it gets a new local ID.

    If you simply deploy the plug-in without following the best practices from that link I posted then this will fail to deploy because it will try to map its inputs to, let's say {mycompany:mydomain:cdts}MyCDT which now has a local ID Y while initially the plug-in was registered to point to version 1 of this CDT with local ID Z. This causes a validation error during the deployment resulting in an: "Invalid Attempt to Change Node Inputs/Outputs" error.

    When updating the CDT you have to:

    1. Deprecate the current smart service.
    2. Create a copy of your smart service within the same plug-in but change its key in appian-plugin.xml (with all changes this implies within the plug-in)
    3. Remap your models so they point to the new smart service (you need to drag and drop)
    3. You can now deploy these two items to any new environment

    In regards to your question the procedure to promote should be something like this:

    1. Delete the CDT to be updated in the target environment
    2. Deploy the plug-in (which now has a new key and a deprecated version)
    3. Import the new application.
  • * The three last steps assume the new CDT is embedded in the plug-in therefore it will be re-created with the plug-in deployment, otherwise it will need to be uploaded manually after step #1