In the old days when we install Sitecore Modules for on-premise environments, we can install them directly on the Sitecore application or serialise them into source control (TDS and dlls etc..) then deploy with the solution or automate the processes using Powershell or other scripts. However now with Cloud being the future, especially with Azure App Services, hosting environment is no longer an easy access place where a lot of manual stuff were happening.

Therefore Sitecore standardised WedDeploy as the main deployment approach and created a number of concepts (Such as Sitecore WebDeploy package, Sitecore CargoPayload, Sitecore Azure Toolkit and Sitecore Bootloader) to handle different deployment requirements to support Cloud and also enables a more streamlined deployment process.

I did an article explaining how Sitecore Bootload works in this link. And in this article, I listed all kinds of scenarios while installing a Sitecore Module and how each of them should be handled in the new landscape.

  • File addition (any type)
    • WedDeploy packages
  • File change
    • XML file content
      • File already in destination folder but not in WebDeploy packages
        • Need environment variable injection during deployment time
          • SetParameters.xml + xdt Transformation + Sitecore Bootloader, only CargoPayload directory in App_Data\Transforms
        • Don’t need environment variable injection during deployment time
          • xdt Transformation + Sitecore Bootloader, CargoPayload zip or directory in App_Data\Transforms
      • File already In destination folder and also in WebDeploy packages
        • Need environment variable injection during deploy time
          • No exisiting dynamic environment variables
            • WebDeploy package + SetParameters.xml 
          • Have existing dynamic environment variables
            • SetParameters.xml + xdt Transformation + Sitecore Bootloader, only CargoPayload directory in App_Data\Transforms
        • Don’t need environment variable injection during deploy time
          • No exisiting dynamic environment variables
            • WebDeploy package
          • Have existing dynamic environment variables
            • xdt Transformation + Sitecore Bootloader, CargoPayload zip or directory in App_Data\Transforms
    • XML file enable and disable
      • No need for dynamic enable or disable in different deployments
        • Sitecore Azure Toolkit - Update-SCWebDeployPackage -CargoPayloadPath with CargoPayload (must be sccpl file, with ioactions.xml)
      • Need to allow deployment time control for enable and disable
        • SetParameters.xml + Sitecore Azure Toolkit - Update-SCWebDeployPackage -CargoPayloadPath with CargoPayload (must be sccpl file, with ioactions.xml)
    • Other
      • Hasn’t encountered yet
  • File deletion
    • Hasn’t encountered yet. Only disabling XML file as above so far.
  • Sitecore Items changes
    • SetParameters.xml + dacpac files + Sitecore Azure Toolkit. Can use Sitecore Azure Toolkit to convert a normal Sitecore package or TDS package to dacpac files to be used in WebDeploy packages
  • SQL changes
    • SetParameters.xml + dacpac files

So far, those should cover all the major modules such as WFFM, EXM, Active Directory and Data Exchange Framework modules. Will continue to add if encountered new scenarios. Welcome suggestions as well.