Deploying Marketplace Apps

Article • 05.08.2022 • 3 minute(s) to read

An App Package is a file that contains all the information needed to run your app. It includes all Entity Types, Processes, Settings, and all configuration settings necessary to run your App.

Potential risks of deploying new versions of App Packages

  • Attributes of Entity Types could get removed if the new version does not contain the attribute.
  • Different App Packages may use the same data model (potentially in other versions)
  • App Packages may not contain essential configuration parts, and the App may not work.
Scenario A
  • An app package gets created, and specific requirements for a single account or a single subscription force the administrator to introduce specific attributes for Entity Types.
  • Therefore the “core” App Package gets modified in a few attributes from the pre-installed version.
  • After an upgrade to a new App version, data stored in the additional attributes gets deleted.
Scenario B
  • An app package gets created and additional Apps, covering different use cases, use the same base data models.
  • Therefore the “core” App Package gets modified by different Apps and is not compatible with at least one of the Apps using the package.

How to make sure your Marketplace App contains all necessary configuration

  • Define test cases you want to test with this App and deploy them in a test environment (test subscription).
  • After finishing the deployment, check if all your tests have passed. If not, go back one stage, fix the configuration, and retest the previously failed function.

How to avoid overwriting existing Entity Types and losing data

Create at least three subscriptions; name the first “build”, the second “test,” and the third “live” (representing the different stages of your App)

Customize an existing App
  1. Deploy an app in the “build” subscription and make the necessary changes to the Entity Types
  2. Create a new App Package only containing the changed Entity Types (“Customized App Package”)
  3. Deploy the “merged” solution to “test” and execute your test scenarios
  4. After successfully executing the tests, deploy the solution to “live”.
Upgrade a customized App
  1. Create an additional subscription called “merge” and deploy your customized App to this subscription
  2. Upgrade the existing core app in “build” (losing all customized attributes)
  3. Compare and add missing attributes of your “merge” subscription and create a new version of your “Customized App Package”.
  4. Deploy your new version of the “Customized App Package” to build and check for missing attributes
  5. Deploy the “merged” solution to “test” and execute your test scenarios
  6. After successfully executing the tests, deploy the solution to “live”.

Comparing the layered vs. the absolute approach of deploying Entity Types

  • Create a layered App Hierarchy where specific modifications are managed as “patches” or “mods” toward the “core” solution.
  • Creating a hierarchy of Entity Types where each layer includes attributes of the previous layer reduces the likelihood of lost data through deployment issues
  • A layered architecture also helps upgrade core entity types and maintain specific customization needs.