---
title: "The structure of an SCCPL transformation"
slug: "the-structure-of-an-sccpl-transformation"
abstract: "Use this reference to ensure the structure of your SCCPL package is correct."
---
# The structure of an SCCPL transformation

A Sitecore Cargo Payload (SCCPL) package is the extension of a ZIP package with the following structure:

| Command | Description |
| --- | --- |
| `CopyToWebsite/*` | Copies files to the Website folder in the target installation. You can use this to deploy new files or overwrite existing files, such as resource files, DLLs, and configuration files. |
| `CopyToRoot/*` | Copies files to the root of the Web Deployment Package (WDP). You usually use this, for example, to inject .dacpac or .sql files to perform database changes. |
| `Xdts/*` | XDT transformations for XML files are under the Website root. Use XDT transformations to tweak configuration files that the WDP deploys without adding new configuration files. The file name convention is: `{original file name}.xdt`.<br><br>> [!note]<br>> SCCPL transformations use the [XDT syntax](https://docs.microsoft.com/en-us/previous-versions/aspnet/dd465326(v=vs.110)) to transform XML files, not the Sitecore configuration patch syntax. |
| `IOActions/*.ioxml` | An XML file that describes the actions that are going to happen to the files in a WDP package. See the example in the following [IO Actions section](https://doc.sitecore.com/xp/en/developers/sat/30/sitecore-azure-toolkit/the-structure-of-an-sccpl-transformation.html#UUID-0db37c77-158e-cc5e-5811-f6dab25c3f6c_section-idm45765716462176). |

<details>
<summary><h2>The structure of a SCCPL package</h2></summary>

The following example shows the structure of a SCCPL package.

| Package | Description |
| --- | --- |
| `CopyToWebsite\App_Config\Include\Component.config` | Configuration file for a new component, integration into Sitecore. |
| `CopyToWebsite\bin\Component.dll` | DLL file for the component. |
| `CopyToWebsite/sitecore/shell/client/Applications/Component/page.cshtml` | Resource file - MVC page view. |
| `Xdts\App_Config\ConnectionStrings.config.xdt` | XDT transformation: adding connection string for the new component. |
| `IOActions\Component.ioxml` | Enable/disable configuration files. |

</details>

<details>
<summary><h2>Basic SCCPL packages</h2></summary>

You can fine-tune your Sitecore solution to match your needs by using SCCPL packages. There are two different approaches to doing this:

- Adjust your current SCCPL.

    > [!note]
    > If you choose this option, you must branch and merge on updates.

- Create a new SCCPL based on your current SCCPL in the Cargo folder, (the Cargo folder includes SCCPLs). Then, include the relevant SKU file, (in `$SKU.packaging.config.json`, you can [learn how to process a SCCPL](https://doc.sitecore.com/xp/en/developers/sat/30/sitecore-azure-toolkit/packaging-a-sitecore-solution-for-the-microsoft-azure-app-service.html "Packaging a Sitecore solution for the Microsoft Azure App Service")).

    The following table outlines the basic Sitecore SCCPL packages:

    | Package | Description |
    | --- | --- |
    | `Sitecore.Cloud.Search.Azure.sccpl` | Transforms the `web.config` file using the Azure Cognitive Search provider. It is also a patch to add the `ConnectionStrings.config` file to the cloud.search connection string. |
    | `Sitecore.Cloud.ApplicationInsights.sccpl` | Copies the Application Insights configuration files to both the*/base and the App_Config/Sitecore/Azure/* folders, and the assemblies files to the*/bin* folder. The` ConnectionStrings.config` file also transforms to add the `appinsights.instrumentationkey` connection and updates the `web.config` file with the Application Insights configuration. |
    | `Sitecore.Cloud.DisableAnalytics.sccpl` | Applies the current SCCPL for the XM WDPs. This disables the Analytics and XConnect connection strings in the` ConnectionStrings.config` file and turns off the `Xdb.Enabled` setting in the `Sitecore.Xdb.config` file. |
    | `Sitecore.Cloud.DisableExm.sccpl` | Applies the current SCCPL for the XM WDPs. This disables the EXM connection strings in the `ConnectionStrings.config` file and turns off the `EXM.Enabled` setting in the `Sitecore.EmailExperience.Core.config` file. |
    | `Sitecore.Cloud.Common.sccpl` | A common SCCPL for all WDPs. The main actions of this package include:<br><br><ul><li>Setting the data folder to `D:\home\site\wwwroot\App_Data`</li><li>Preparing a placeholder for a Sitecore license</li><li>Disabling the `Sitecore.Diagnostics.config` file</li><li>Changing the value of the `customErrors `modesetting to "`Off`" (`customErrors mode="Off"`)</li></ul> |
    | `Sitecore.Cloud.HttpsRedirection.sccpl` | A common SCCPL for all WDPs. This package transforms the `web.config` file to apply https redirection. |
    | `Sitecore.Cloud.IPSecurity.sccpl` | Updates the `web.config` file with an example of IP filtering to limit access to the CM, Processing, and DDS roles. |
    | `Sitecore.Cloud.Redis_CD.sccpl` | Applies the SCCPL for the CD WDP to the XM and XP topologies, and enables the Redis cache configuration and connection strings. |
    | `Sitecore.Cloud.RoleSpecific_CD.sccpl` | Applies the SCCPL for the CD WDP to the XM and XP topologies.<br><br>The main actions of this package include:<br><br><ul><li>Setting the *WDP*role to `ContentDelivery `in the `web.config` file.</li><li>Setting the correct connection strings list for the *CD*role in the `connectionstrings.config` file.</li></ul> |
    | `Sitecore.Cloud.RoleSpecific_CM.sccpl` | Applies the SCCPL for the CM WDP to the XM and XP topologies.<br><br>The main actions of this package include:<br><br><ul><li>Setting the *WDP*role to `ContentManagemen`t in the` web.config` file.</li><li>Setting the correct connection strings list for the *CM*role in the `connectionstrings.config` file</li></ul> |
    | `Sitecore.Cloud.RoleSpecific_DDS.sccpl` | Applies the SCCPL for the DDS role to the XP topology.<br><br>The main action of this package is:<br><br><ul><li>Setting the WDP role to ContentManagement, DedicatedDispatch in the web.config file.</li></ul> |
    | `Sitecore.Cloud.RoleSpecific_PRC.sccpl` | Sets the correct connection strings list for the DDS role and applies the PRC WDP for the XP and xDB topologies.<br><br>The main actions of this package include:<br><br><ul><li>Setting the WDP role to *Processing*in the `web.config` file.</li><li>Setting the correct connection strings list for the *PRC*role in the `connectionstrings.config` file.</li></ul> |
    | `Sitecore.Cloud.RoleSpecific_REP.sccpl` | Applies the SCCPL for the CM WDP to the XP and xDB topologies.<br><br>The main actions of this package include:<br><br><ul><li>Setting the WDP role to *Reporting*in the `web.config` file.</li><li>Setting the correct connection strings list for the *REP*role in the `connectionstrings.config` file.</li></ul> |
    | `Sitecore.Cloud.RoleSpecific_XDBSingle.sccpl` | Applies the SCCPL for the Sitecore Single WDP to the xDB Single topology.<br><br>The main actions of this package include:<br><br><ul><li>Setting the WDP role to Processing, Reporting in the `web.config file`.</li><li>Setting the correct connection strings list for the Single (PRC+REP) role in the `connectionstrings.config` file.</li></ul> |
    | `Sitecore.Cloud.RoleSpecific_XMSingle.sccpl` | Applies the SCCPL for the Sitecore Single WDP to the XM Single topology.<br><br>The main actions of this package include:<br><br><ul><li>Setting the WDP role to *ContentManagement*, *ContentDelivery*in the `web.config` file.</li><li>Setting the correct connection strings list for the Single (CM+CD) role in the `connectionstrings.config` file.</li></ul> |
    | `Sitecore.Cloud.RoleSpecific_XPSingle.sccpl` | Applies the SCCPL for Sitecore Single WDP to the XP Single topology.<br><br>The main action of this package is:<br><br><ul><li>Setting the correct connection strings list for the Single (CM+CD+PRC+REP) role in the `connectionstrings.config` file.</li></ul> |
    | `Sitecore.Cloud.Security.sccpl` | Copies database accounts creation scripts to the website root and transforms the` web.config file` with security rules. |
    | `Sitecore.Cloud.Security_CD.sccpl` | Transforms the `web.config` file with security rules for the CD role. |
    | `Sitecore.Cloud.SetCompatibilityLevel.sccpl` | Copies the SQL server compatibility level scripts to the website root. |
    | `Sitecore.Cloud.Thundercracker.sccpl` | The main actions of this package include:<br><br><ul><li>Removing the *UploadWatcher*folder functionality, (because it is not applicable for Azure).</li><li>Changing the location of the *Media.CacheFolder* folder.</li><li>Changing the `PageStateStore `and `ViewStateStore `settings to write to the DB.</li></ul> |

</details>

<details>
<summary><h2>IOActions</h2></summary>

The IOActions are described in .ioxml files with path and action attributes; the enable, disable, and delete action values; and the following structure:

```text
<IOActions><IOAction path="App_Config\Include\001.Sitecore.Speak.Important.config" action="disable" />…</IOActions>

```

| Attributes | Description |
| --- | --- |
| path | The path to the file that you want to change, relative to the *Website*folder.<br><br>The value must be the exact path to a single file, including the expected extension(s). Wildcards are not supported. |
| action | A file-level action (enable, disable, or delete) that is performed on the file. |

| IO actions | Description |
| --- | --- |
| enable | Enable a configuration file by renaming it from `*.config.disabled`, or `*.config.example`, to `*.config`. |
| disable | Disable a configuration file by renaming it from `*.config` to `*.config.disabled`. |
| delete | Delete the file from the package. |

</details>