Sample deployment scripts

The sample scripts, along with the properties file, are used for deploying in the runtime environment (test, staging, or production). However, some of the cleanup scripts are not recommended for the runtime environment.

Scripts

The scripts give samples on how to deploy a project version to a runtime environment, monitor the deployment, and check the object store to verify that the Content Project Deployment Initialization has been performed. The cpds.properties.sample file contains a list of properties that are used as input for the deployment scripts.

All sample scripts and the deployment properties file are available in the product archive.

For more information about the parameters, use the documentation that is provided in the sample script files and properties file.

The scripts can be divided into the following categories:
Content Platform Engine object store scripts
  • The cpds_getOSConfigStatus.sh script checks the project deployment configuration status on the object store.
  • The cpds_configureOS.sh script initializes or updates or upgrades the Content Platform Engine object store to the current level. Run this script if the getOSConfigStatus.sh script returns a response in which the value of the isInitialized parameter is false.
Project deployment related scripts
  • The cpds_deployProj.sh script deploys a version of the deployment project for the content project.
  • The cpds_getDeployedProjSnapshot.sh script returns the project version information for the deployed snapshot or version.
  • The cpds_getDeploymentStatus.sh script returns the deployment record for the deployment project version.
Deployment check scripts
  • The cpds_systemPrecheck.sh script performs a system check for the Content Project Deployment Service and returns status of connections, Document Processing engine database projects, and whether the user can deploy a project to the environment.
  • The cpds_projectPrecheck.sh script provides the capability to check or preview data and content definition changes without actually deploying the project version to the object store. The script can be run for a new project version before it is deployed to identify changes and issues. The script returns alerts that are associated with changes made in the specified version against the previous design repository version and against the object store for an existing project deployment.
Deployment artifact cleanup scripts
Attention: These scripts are intended for use in the development environment only and are not recommended for runtime environments.
  • The cpds_cleanUpProject.sh script removes documents and metadata from the Content Platform Engine repository and removes the associated Document Processing engine project information.
  • The cpds_cleanUpTeams.sh script cleans up the teams that are associated to the specified project name.
IAM/Zen authentication script
The helper_getZenToken.sh authentication script is used by all the scripts to log in to the IAM and Zen server to provide a Zen bearer token.
deprecated icon (Deprecated) UMS authentication script
The helper_getUMSToken.sh UMS authentication script is used by all the scripts to log in to the UMS server and provider a bearer token.
Note: The sample scripts all use curl commands with the -k value as an example. This option allows the curl tool to perform "insecure" SSL connections. Replace it with a more secure option, like --cacert <certificate file>, and use a certificate file with one or more PEM certificates to create more secure HTTPS connections. For more curl options that you can use to secure connections with certificates, see the curl help and documentation.

Content Project Deployment Service properties file

This file is a collection of properties that are used as input for the deployment and status scripts. You make a copy of the sample file and complete it with the values for your environment. The format of the file is set up for defined key-value pairs, separated by the equal character (=). The key has the same name as the parameter name that is passed into the script.

For each item, you replace the values with the actual values for your environment. Some of the properties describe your authoring environment, the source of your project, while some others describe the runtime environment where you want to deploy the project.
Important:
  • Do not include an equal sign '=' in any value.
  • Make sure not to add extra spaces or slashes "/" to any URL routes.
  • The cpds.properties file contains credential information and should be secured after you fill it out.

When you edit your copy of the cpds.properties file, read the descriptions and explanations in the script for more details about the properties and values. In general, you provide information about the configuration details of both your authoring environment and your runtime environment, and you also provide information about your project and object store.

The following categories and properties are required for the scripts in the deployment process. Replace all the values in the angle brackets with your own environment values::
Runtime environment (destination) settings

runtimeUseZen=true
runtimeZenIamUrl=<cp-console URL for IAM login Test/Staging/Prod Environment>
runtimeZenUrl=<cpd URL for ZEN login Test/Staging/Prod Environment>
runtimeUser=<User Name  Test/Staging/Prod Environment>
runtimePwd=<Password>

Authoring/development (source) settings

devUseZen=true
devZenIamUrl=<cp-console URL for IAM login Test/Staging/Prod Environment>
devZenUrl=<cpd URL for ZEN login Test/Staging/Prod Environment>
devUser=<User Name Test/Staging/Prod Environment>
devPwd=<Password>

Content Project Deployment Service information for the runtime environment

runtimeCpdsUrl=<Content Project Deployment URL>

Project and version information for your Document Processing Designer project

projectName=<Project Name>
snapshotVersion=<version>

Object store name for the runtime environment

runtimeObjectStore=<Object Store SymbolicName>
Use the following table to find where to set the relevant information in the cpds.properties file for the Zen environment.
Table 1. Values for cpds.properties file
Value Location
runtimeZenIamUrl
  1. On the Runtime environment, go to the OpenShift® console and select your CP4BA project where Cloud Pak foundational and Identity Management (IM) services are installed. For example, your existing project might be adp.
  2. Go to Networking > Routes > Location and get the cp-console location. For example: runtimeZenIamUrl=https://cp-console.apps.myserver.cp.ibm.com.
runtimeZenUrl
  1. On the Runtime environment, go to the Red Hat® OpenShift console and select your project namespace, for example, adp.
  2. Go to Networking > Routes > Location and get the cpd location. For example, runtimeZenUrl=https://cpd-adp.apps.myserver.cp.ibm.com.
runtimeUser
A user who is a member of the DocProcessingManagers Team on the Runtime Environment.
Note: For deployment, the user must be a member of the DocProcessingManagers, or DocProcessingAnalysts.
runtimePwd

The password for the runtimeUser.

devZenIamUrl
  1. On the Authoring environment, go to the Red Hat OpenShift console and select your CP4BA project where Cloud Pak foundational and Identity Management (IM) services are installed. For example, your existing project might be adp.
  2. Go to Networking > Routes > Location and get the cp-console location. For example, devZenIamUrl=https://cp-console.apps.myserver.cp.ibm.com.
devZenUrl
  1. On the Authoring environment, go to the Red Hat OpenShift console and select your project namespace, for example, adp.
  2. Go to Networking > Routes > Location and get the cpd location. For example, devZenUrl=https://cpd-adp.apps.myserver.cp.ibm.com.
devUser
A user who is a member of the DocProcessingManagers UMS Team on the runtime Environment.
Note: For deployment, the user must be a member of the DocProcessingManagers, the DocProcessingAnalysts, or the ProjectAdmin-<projectIdentifier> Team in the Authoring environment.
devPwd The password for the devUser.
runtimeCpdsUrl

The URL of the Content Project Deployment Service in the Runtime environment.

  1. Go to the Red Hat OpenShift console and select your project namespace, for example, adp.
  2. Open ConfigMaps and find the <cluster name>-cp4ba-access-info. For example: icp4adeploy-cpd4ba-access-info.
  3. Get the cpds-access-info and remove the /ibm-dba-content-deployment/ part, which gives you the runtime CPDS URL. For example,
    cpds-access-info = https://cpd-adp.apps.myserver.cp.ibm.com/adp/cpds/ibm-dba-content-deployment/
    runtimeCpdsUrl = https://cpd-adp.apps.myserver.cp.ibm.com/adp/cpds
projectName

The Document Processing Designer project’s Acronym. You can find this information in:

  1. The URL of the Document Processing Designer project, projectID. Value: https://cpd-adp.apps.myserver.cp.ibm.com/adp/designer/?projectId=<ProjectAcronym>
  2. Or go to your Business Automation page. Select your project and view the About information for the selected project, Acronym.
snapshotVersion

The Document Processing Designer project version that is used for deployment. You can find the project version in the Authoring environment, in the Document Processing Designer project. Open the project, select Version/Deploy, and find the snapshot version for the deployed version.

Example: snapshotVersion=v2-2020-10-13-1825

runtimeObjectStore

The symbolic name of the Object Store for the Content Process Engine that is used for deployment. Example: DEVOS1

acceptLanguage=en_US

Specify the language that the client prefers to get back a status response. The default value is set to en_US if the value is not specified.

The default value is set to en_US if not specified.

Example: acceptLanguage=en_US

cleanProjOptions

This value is optional, which can be uncommented from the properties sample if you are using the cpds_cleanUpProject.sh script. For more information, see Cleaning up the object store and deleting Document Processing engine project.

  1. cleanProjOptions is a JSON string option that is passed in to clean the project REST URL.
  2. The defaults for these options are:
    • filterIncludeDocDetails: false
    • timeOutInSecs: 10
    • cleanPropertyTemplates: false
  3. Descriptions for the suboptions in the cleanProjOptions string.
    • filterIncludeDocDetails is a Boolean value with the default as false. If true, the details of each deleted document are returned.
    • timeOutInSecs is an integer value with a default of 10 seconds. This value limits the number of seconds to clean up the documents of a project.

      If the time is too short, cleanup is not completed and the API returns that status. User can continuously rerun the API until the project is deleted.

    • cleanPropertyTemplates is a Boolean value with default of false. If true, the property templates that are associated with the project are removed.
      Note: Property templates can be shared with other projects. Property templates can be deleted only if NO other projects in that objectStore are using it. Otherwise, that property is skipped.

      Example: cleanProjOptions=" \"filterIncludeDocDetails\": false, \"timeOutInSecs\": 10, \"cleanPropertyTemplates\": false "

cleanTeamsOptions
This value is optional, which can be uncommented from the properties sample by using the cpds_cleanUpTeams.sh script. For more information, see Cleaning up the business teams.
  • cleanTeamsOptions is a JSON string option that is passed in to clean the team REST url.
  • If the value is not specified, the default is "\"cleanTeams\": true".
  • Descriptions of sub-options in the cleanTeamsOptions string.
    • cleanTeams is a Boolean value. The default is true, which removes the teams that are NOT referenced in any projects in the Object Store.

Example: cleanTeamsOptions="\"cleanTeams\": true"

Getting the object store configuration status

The cpds_getOSConfigStatus.sh script runs the Content Project Deployment Service REST GET initialization endpoint, which verifies that the Content Project Deployment configuration has been run on the Content Platform Engine Object Store and is at the appropriate software levels. This script is run for initialization as well as for upgrades.
GET /v1/repositories/{repositoryIdentifier}/initialization
The following example shows how to run the script using the cpds.properties file:
./cpds_getOSConfigStatus.sh --file cpds.properties

For more information about the GET /v1/repositories/{repositoryIdentifier}/initialization request, see the Swagger documentation.

Code samples for getting the object store configuration status

Output
The following example shows sample output.
./cpds_getOSConfigStatus.sh --file cpds.properties
		Extracting fields from file cpds.properties ......
		Getting RunTime ZENToken ...
		{"data":{"contentAnalyzerHandlerVersion":"20.0.3.0-dev-180","contentAnalyzerMetadataVersion":"20.0.3.0.8","contentDeploymentMetadataVersion":"20.0.3.0.0","isInitialized":true,"umsRoleHandlerMetadataVersion":"20.0.3.0.1","umsRoleHandlerVersion":"20.0.3.0-dev-180"},"status":{"code":200,"message":"Successfully retrieved the initialization status of the repository.","messageId":"FNRDD0013I"}}
		Return Code=200
Explanation
The following example explains the possible output.
{
	  "data": {
	    "contentAnalyzerHandlerVersion": "21.0.2.0-dev-246",
	    "contentAnalyzerMetadataVersion": "21.0.2.0.10",
	    "contentDeploymentMetadataVersion": "21.0.3.0.0",
	    "isInitialized": true,   ==> the Object store is configured to the appropriate levels for Document Content Deployment
	    "umsRoleHandlerMetadataVersion": "20.0.3.0.1",
	    "umsRoleHandlerVersion": "21.0.2.0-dev-246"
	  },
	  "status": {
	    "code": 200,
	    "message": "Successfully retrieved the initialization status of the repository.",
	    "messageId": "FNRDD0013I"
	  }
	}

Configuring the object store

The cpds_configureOS.sh runs the Content Project Deployment Service REST POST initialization endpoint, which initializes or updates the Content Platform Engine object store. If the cpds_getOSInitStat.sh script was run and the object store returned false for the isInitialized parameter, the operations performed in this script initialize the object store to the appropriate levels.

Note: The operator automatically configures and initializes the object store when setting up an Automation Document Processing object store.

To run the script, the user must be a Content Platform Engine administrator for the object store and a member of the DocProcessingManagers team on the Runtime (Test/Staging/Prod) environment.

Note: For Authoring or Starter environments, the user must be a Content Platform Engine administrator for the object store and a member of the DocProcessingManagers or DocProcessingAnalysis team.
The following example shows how to run the script using the cpds.properties file:
./cpds_configureOS.sh --file cpds.properties

For more information about the POST /v1/repositories/{repositoryIdentifier}/initialization request, see the Swagger documentation.

Code samples for configuring the object store

Output
The following example shows sample output.
 ./cpds_configureOS.sh --file cpds.properties
	Extracting fields from file cpds.properties ......
	Getting RunTime ZENToken ...
	{"data":{"elapsedTime":624,"initializationStatus":"Success"},"status":{"code":200,"message":"Successfully initialized the repository.","messageId":"FNRDD0002I"}}
	Return Code=200
Explanation
The following example explains the possible output.
{
	  "data": {
	    "elapsedTime": 624, => the number of ms to perform the initialization/upgrade
	    "initializationStatus": "Success" => the initialization/upgrade was successful.
	  },
	  "status": {
	    "code": 200,
	    "message": "Successfully initialized the repository.",
	    "messageId": "FNRDD0002I"
	  }
	}

Deploying a project version

The cpds_deployProj.sh script deploys a Document Processing Designer project and version from the authoring or development environment into a runtime (test/staging/production) environment. The project is deployed to the Content Platform Engine object store and the associated Document Processing engine runtime environment. The script uses this Content Project Deployment Service REST endpoint to deploy the project.
POST /v1/deployment/projects/{projectIdentifier}/branches/{branchName}/snapshots/{snapshotName}
The cpds_deployProj.sh script uses the synchronous mode deployment. Set it to asynchronous to make your request asynchronous.
POST /v1/deployment/projects/{projectIdentifier}/branches/{branchName}/snapshots/{snapshotName}?repositoryIdentifier={objectStore}&operationMode=Async
Note: For asynchronous deployment, a 202 return code might not indicate an error because this code is also used to indicate that the project is in progress. For details of the deployment, you can look up the deployment record.

This script requires log-in credentials from both the authoring environment (the source) and the runtime environment (the destination for the deployment). You provide them as parameter values in the cpds.properties file.

The following example shows how to run the script using the cpds.properties file.
 ./cpds_deployProj.sh --file cpds.properties
The following example shows how to run the script by using the cpds.properties file while overriding the runtimeObjectStore value with a different object store name.
 ./cpds_deployProj.sh --file cpds.properties --runtimeObjectStore OS2

For more information about the POST /v1/deployment/projects/{projectIdentifier}/branches/{branchName}/snapshots/{snapshotName} request, see the Swagger documentation.

Code samples for deploying a project version

Output
./cpds_deployProj.sh --file cpds.properties 
 Extracting fields from file cpds.properties ......
 Getting RunTime ZENToken ...
 Getting Dev ZENToken ... 
 Deploying project ...
Mitigations
If deployment takes a long time, you can try the following mitigations.
  • Run cpds_getDeployedProjSnapshot.sh to return the overview information about the deployed project version.
  • Run cpds_getDeploymentRec.sh and, to retrieve progress details, pass an identifier by setting the deploymentRecordId parameter to the lastDeploymentRecordId value that you retrieved in the previous step.

    This process can take about 1 to 3 minutes.

Return codes
Deployment can return the following codes.
  • 200: deployment is successful.
  • 202: deployment failed midstream and some deployment artifacts were created.
  • Anything that is NOT 200 or 202: deployment failed at the start because of configuration issue. No artifact was created.

    If this script returns immediately with a status that is NOT 200 or 202, issues might need to be corrected before redeploy. Do not call the next shell script because this is a global setup issue, which must be fixed before you can deploy any project in this environment.

    In this case, go to the CPDS server and ensure that the Content Designer Rest API (CDRA) URL (REPO_SERVICE_URL environment variable) is correctly configured to allow the CPDS server to connect to the CDRA server. For more information, consult the system.log file on the CPDS server. 

Explanation
	{
	  "data": {
	    "branchName": "master",
	    "caProjectDescriptor": "a1263c2a-778f-452a-b4ca-e55ef79dda9d", => Document Processing engine project descriptor associated with the deployment project.
	    "deploymentStatus": {
	      "status": "Success", => Options are Success or Failed
	      "type": "Redeploy" => New, the first time the version is deployed or Redeploy, a subsequent deployment of the same version
	    },
	    "lastDeploymentRecordId": "{50A5E775-0000-C314-82C6-1D87C9F34749}", => the last deployment record can be used to find out information about the deployment. See  cpds_getDeploymentStatus.sh
        "precheckDetails": {
            "alerts": [
                {
                    "alertAction": "No action is needed.", 
                    "alertCode": "A800", 
                    "alertMessage": "The property template DbaCDDCustomernumber will be added to the object store.        ", 
                    "alertSeverity": "Informational", 
                    "artifactType": "PropertyTemplate", 
                    "changeSourceType": "ObjectStore", 
                    "changeType": "PropertyAdded", 
                    "propertySymbolicName": "DbaCDDCustomernumber", 
                    "referenceId": 0
                }, 
                {
                    "alertAction": "No action is needed.", 
                    "alertCode": "A800", 
                    "alertMessage": "The property template DbaCDDAccountnumber will be added to the object store.        ", 
                    "alertSeverity": "Informational", 
                    "artifactType": "PropertyTemplate", 
                    "changeSourceType": "ObjectStore", 
                    "changeType": "PropertyAdded", 
                    "propertySymbolicName": "DbaCDDAccountnumber", 
                    "referenceId": 1
                }, 
                {
                    "alertAction": "No action is needed.", 
                    "alertCode": "A800", 
                    "alertMessage": "The property template DbaCDDDuedate will be added to the object store.        ", 
                    "alertSeverity": "Informational", 
                    "artifactType": "PropertyTemplate", 
                    "changeSourceType": "ObjectStore", 
                    "changeType": "PropertyAdded", 
                    "propertySymbolicName": "DbaCDDDuedate", 
                    "referenceId": 2
                }, 
                {
                    "alertAction": "No action is needed.", 
                    "alertCode": "A800", 
                    "alertMessage": "The property template DbaCDDPaymentreceived will be added to the object store.        ", 
                    "alertSeverity": "Informational", 
                    "artifactType": "PropertyTemplate", 
                    "changeSourceType": "ObjectStore", 
                    "changeType": "PropertyAdded", 
                    "propertySymbolicName": "DbaCDDPaymentreceived", 
                    "referenceId": 3
                }, 
                {
                    "alertAction": "No action is needed.", 
                    "alertCode": "A800", 
                    "alertMessage": "The property template DbaCDDPreviousbalance will be added to the object store.        ", 
                    "alertSeverity": "Informational", 
                    "artifactType": "PropertyTemplate", 
                    "changeSourceType": "ObjectStore", 
                    "changeType": "PropertyAdded", 
                    "propertySymbolicName": "DbaCDDPreviousbalance", 
                    "referenceId": 4
                }, 
                {
                    "alertAction": "No action is needed.", 
                    "alertCode": "A800", 
                    "alertMessage": "The property template DbaCDDTotalamountdue will be added to the object store.        ", 
                    "alertSeverity": "Informational", 
                    "artifactType": "PropertyTemplate", 
                    "changeSourceType": "ObjectStore", 
                    "changeType": "PropertyAdded", 
                    "propertySymbolicName": "DbaCDDTotalamountdue", 
                    "referenceId": 5
                }, 
                {
                    "alertAction": "No action is needed.", 
                    "alertCode": "A800", 
                    "alertMessage": "The property template DbaCDDCompanynameandaddress will be added to the object store.        ", 
                    "alertSeverity": "Informational", 
                    "artifactType": "PropertyTemplate", 
                    "changeSourceType": "ObjectStore", 
                    "changeType": "PropertyAdded", 
                    "propertySymbolicName": "DbaCDDCompanynameandaddress", 
                    "referenceId": 6
                }, 
                {
                    "alertAction": "No action is needed.", 
                    "alertCode": "A800", 
                    "alertMessage": "The property template DbaCDDUnpaidAndNewCharge will be added to the object store.        ", 
                    "alertSeverity": "Informational", 
                    "artifactType": "PropertyTemplate", 
                    "changeSourceType": "ObjectStore", 
                    "changeType": "PropertyAdded", 
                    "propertySymbolicName": "DbaCDDUnpaidAndNewCharge", 
                    "referenceId": 7
                }, 
                {
                    "alertAction": "No action is needed.", 
                    "alertCode": "A800", 
                    "alertMessage": "The property template DbaCDDPin will be added to the object store.        ", 
                    "alertSeverity": "Informational", 
                    "artifactType": "PropertyTemplate", 
                    "changeSourceType": "ObjectStore", 
                    "changeType": "PropertyAdded", 
                    "propertySymbolicName": "DbaCDDPin", 
                    "referenceId": 8
                }, 
                {
                    "alertAction": "No action is needed.", 
                    "alertCode": "A800", 
                    "alertMessage": "The property template DbaCDDWebSite will be added to the object store.        ", 
                    "alertSeverity": "Informational", 
                    "artifactType": "PropertyTemplate", 
                    "changeSourceType": "ObjectStore", 
                    "changeType": "PropertyAdded", 
                    "propertySymbolicName": "DbaCDDWebSite", 
                    "referenceId": 9
                }, 
                {
                    "alertAction": "No action is needed.", 
                    "alertCode": "A800", 
                    "alertMessage": "The property template DbaCDDStatementDate will be added to the object store.        ", 
                    "alertSeverity": "Informational", 
                    "artifactType": "PropertyTemplate", 
                    "changeSourceType": "ObjectStore", 
                    "changeType": "PropertyAdded", 
                    "propertySymbolicName": "DbaCDDStatementDate", 
                    "referenceId": 10
                }, 
                {
                    "alertAction": "No action is needed.", 
                    "alertCode": "A200", 
                    "alertMessage": "The class definition DbaJL126UtilityBill will be added to the object store.", 
                    "alertSeverity": "Informational", 
                    "artifactType": "Class", 
                    "changeSourceType": "ObjectStore", 
                    "changeType": "ClassAdded", 
                    "classSymbolicName": "DbaJL126UtilityBill", 
                    "referenceId": 11
                }, 
                {
                    "alertAction": "No action is needed.", 
                    "alertCode": "A200", 
                    "alertMessage": "The class definition DbaJL126Invoice will be added to the object store.", 
                    "alertSeverity": "Informational", 
                    "artifactType": "Class", 
                    "changeSourceType": "ObjectStore", 
                    "changeType": "ClassAdded", 
                    "classSymbolicName": "DbaJL126Invoice", 
                    "referenceId": 12
                }, 
                {
                    "alertAction": "No action is needed.", 
                    "alertCode": "A200", 
                    "alertMessage": "The class definition DbaJL126GasBill will be added to the object store.", 
                    "alertSeverity": "Informational", 
                    "artifactType": "Class", 
                    "changeSourceType": "ObjectStore", 
                    "changeType": "ClassAdded", 
                    "classSymbolicName": "DbaJL126GasBill", 
                    "referenceId": 13
                }, 
                {
                    "alertAction": "No action is needed.", 
                    "alertCode": "A200", 
                    "alertMessage": "The class definition DbaJL126INVOICE will be added to the object store.", 
                    "alertSeverity": "Informational", 
                    "artifactType": "Class", 
                    "changeSourceType": "ObjectStore", 
                    "changeType": "ClassAdded", 
                    "classSymbolicName": "DbaJL126INVOICE", 
                    "referenceId": 14
                }
            ], 
            "classes": [
                {
                    "referenceId": 11, 
                    "definitionFile": "CD_UtilityBill.json", 
                    "displayName": "Utility Bill", 
                    "symbolicName": "DbaJL126UtilityBill"
                }, 
                {
                    "referenceId": 12, 
                    "definitionFile": "CD_Invoice.json", 
                    "displayName": "Invoice", 
                    "symbolicName": "DbaJL126Invoice"
                }, 
                {
                    "referenceId": 13, 
                    "definitionFile": "CD_GasBill.json", 
                    "displayName": "Gas Bill", 
                    "symbolicName": "DbaJL126GasBill"
                }, 
                {
                    "referenceId": 14, 
                    "definitionFile": "CD_INVOICE.json", 
                    "displayName": "INVOICE", 
                    "symbolicName": "DbaJL126INVOICE"
                }
            ], 
            "propertyTemplates": [
                {
                    "referenceId": 0, 
                    "cardinality": "Single", 
                    "dataDefinitionFile": "proj://CDD/DD_cfe8c0fd-5df8-4a92-81fc-a75aa09997c7_CustomerNumber.json", 
                    "dataType": "String", 
                    "definitionName": "Customernumber", 
                    "symbolicName": "DbaCDDCustomernumber"
                }, 
                {
                    "referenceId": 1, 
                    "cardinality": "Single", 
                    "dataDefinitionFile": "proj://CDD/DD_a3e14089-d37f-4e97-9453-da46d35f0f1b_AccountNumber.json", 
                    "dataType": "String", 
                    "definitionName": "Accountnumber", 
                    "symbolicName": "DbaCDDAccountnumber"
                }, 
                {
                    "referenceId": 2, 
                    "cardinality": "Single", 
                    "dataDefinitionFile": "proj://CDD/DD_25f602c8-c310-48f1-8e8f-9ae9a892b3ab_DueDate.json", 
                    "dataType": "DateTime", 
                    "definitionName": "Duedate", 
                    "symbolicName": "DbaCDDDuedate"
                }, 
                {
                    "referenceId": 3, 
                    "cardinality": "Multi", 
                    "dataDefinitionFile": "proj://CDD/DD_8743e449-ca39-4229-874f-65df2590e932_Paymentreceived.json", 
                    "dataType": "Boolean", 
                    "definitionName": "Paymentreceived", 
                    "symbolicName": "DbaCDDPaymentreceived"
                }, 
                {
                    "referenceId": 4, 
                    "cardinality": "Single", 
                    "dataDefinitionFile": "proj://CDD/DD_35ad3772-179b-4490-8955-e3c8b7d36c18_Balance.json", 
                    "dataType": "Float", 
                    "definitionName": "Previousbalance", 
                    "symbolicName": "DbaCDDPreviousbalance"
                }, 
                {
                    "referenceId": 5, 
                    "cardinality": "Single", 
                    "dataDefinitionFile": "proj://CDD/DD_35ad3772-179b-4490-8955-e3c8b7d36c18_Balance.json", 
                    "dataType": "Float", 
                    "definitionName": "Totalamountdue", 
                    "symbolicName": "DbaCDDTotalamountdue"
                }, 
                {
                    "referenceId": 6, 
                    "cardinality": "Single", 
                    "dataDefinitionFile": "proj://CDD/DD_709aa21d-79fa-4a2c-b3ba-dea7cfdf01a5_Companynameandaddress.json", 
                    "dataType": "String", 
                    "definitionName": "Companynameandaddress", 
                    "symbolicName": "DbaCDDCompanynameandaddress"
                }, 
                {
                    "referenceId": 7, 
                    "cardinality": "Single", 
                    "dataDefinitionFile": "proj://CDD/DD_e3181ef1-02f8-402d-8e0c-8a3993ed86b9_unpaidandnewcharge.json", 
                    "dataType": "String", 
                    "definitionName": "UnpaidAndNewCharge", 
                    "symbolicName": "DbaCDDUnpaidAndNewCharge"
                }, 
                {
                    "referenceId": 8, 
                    "cardinality": "Single", 
                    "dataDefinitionFile": "proj://CDD/DD_f6e6c14e-5c04-43bf-b12d-da10a1dcfd42_Pin.json", 
                    "dataType": "String", 
                    "definitionName": "Pin", 
                    "symbolicName": "DbaCDDPin"
                }, 
                {
                    "referenceId": 9, 
                    "cardinality": "Single", 
                    "dataDefinitionFile": "proj://CDD/DD_d3418061-4b46-4a36-b0e6-61eb0ff26597_WebSite.json", 
                    "dataType": "String", 
                    "definitionName": "WebSite", 
                    "symbolicName": "DbaCDDWebSite"
                }, 
                {
                    "referenceId": 10, 
                    "cardinality": "Single", 
                    "dataDefinitionFile": "proj://CDD/DD_04a73b45-4c57-4a5b-859e-b83db33377a5_InvoiceDate.json", 
                    "dataType": "DateTime", 
                    "definitionName": "StatementDate", 
                    "symbolicName": "DbaCDDStatementDate"
                }
            ]
        }, 
	    "projectId": "{2A0DDE5C-4753-441E-B7AB-107E1D708898}", => the project id guid for the deployed project
	    "projectIdentifier": "PRJ999", => the project identifier for the deployed project
	    "projectVersionId": "{9D7B952E-8E1D-4E11-AD11-2D0395904E64}",  => the deployed project version guid.  For each version deployed of a project, a deployed project version is created.
	    "repositoryIdentifier": "OS3", ==> the Object store the project was deployed 
	    "snapshotName": "v1-2020-11-19-0105" ==> The version of the project deployed
	  },
	  "status": {
	    "code": 200,
	    "message": "Successfully deployed the project.",
	    "messageId": "FNRDD0003I"
	  }
	}

Getting the deployment of the project version

The deployment of a project version might take a few minutes. The cpds_getDeploymentProjSnapshot.sh script returns the identifiers of the project version and of the last deployment record for the snapshot or version that is deployed. This script can be run about 20 seconds after the deployment has started. The deployment record ID is the value of the latestDeploymentRecordId parameter in the deployment script output. To get the status of the deployment, enter this identifier as input to the cpds_getDeploymentStatus.sh script. The script uses this Content Project Deployment Service REST endpoint to deploy the project.
GET /v1/deployment/projects/{projectIdentifier}/branches/{branchName}/snapshots/{snapshotName}
The following example shows how to run the script using the cpds.properties file:
./cpds_getDeployedProjSnapshot.sh --file cpds.properties

For more information about the GET /v1/deployment/projects/{projectIdentifier}/branches/{branchName}/snapshots/{snapshotName} request, see the Swagger documentation.

Code samples for getting the deployment of the project version

Output
The following example shows sample output.
	./cpds_getDeployedProjSnapshot.sh --file cpds.properties
	Extracting fields from file cpds.properties ......
	Getting Runtime ZENToken ...
	Retrieving the deployed project information for OS3/PRJ999/v1-2020-11-19-0105 ...
	
	
	{"data":{"branchName":"master","caProjectDescriptor":"a1263c2a-778f-452a-b4ca-e55ef79dda9d","deploymentStatus":{"status":"Success","type":"Redeploy"},"lastDeploymentRecordId":"{50A5E775-0000-C314-82C6-1D87C9F34749}","projectId":"{9D7B952E-8E1D-4E11-AD11-2D0395904E64}","projectIdentifier":"PRJ999","projectVersionId":"{9D7B952E-8E1D-4E11-AD11-2D0395904E64}","repositoryIdentifier":"OS3","snapshotName":"v1-2020-11-19-0105"},"status":{"code":200,"message":"Successfully retrieved the information for the deployed project snapshot.","messageId":"FNRDD0009I"}}
	Return Code=200
Explanation
The following section shows an explanation of the output.
	{
	  "data": {
	    "branchName": "master",
	    "caProjectDescriptor": "a1263c2a-778f-452a-b4ca-e55ef79dda9d", =>Document Processing engine project descriptor associated with the deployment project.
	    "deploymentStatus": {
	      "status": "Success", => Options are Success or Failed
	      "type": "Redeploy" => New, the first time the version is deployed or Redeploy, a subsequent deployment of the same version
	    },
	    "lastDeploymentRecordId": "{50A5E775-0000-C314-82C6-1D87C9F34749}", => the last deployment record can be used to find out information about the deployment. See  cpds_getDeploymentStatus.sh
	    "projectId": "{2A0DDE5C-4753-441E-B7AB-107E1D708898}", => the project id guid for the deployed project
	    "projectIdentifier": "PRJ999", => the project identifier for the deployed project
	    "projectVersionId": "{9D7B952E-8E1D-4E11-AD11-2D0395904E64}",  => the deployed project version guid.  For each version deployed of a project, a deployed project version is created.
	    "repositoryIdentifier": "OS3", ==> the Object store the project was deployed 
	    "snapshotName": "v1-2020-11-19-0105" ==> The version of the project deployed
	  },
	  "status": {
	    "code": 200,
	    "message": "Successfully retrieved the information for the deployed project snapshot.",
	    "messageId": "FNRDD0009I"
	  }
	}
	    
	Get Failed - Invalid input Sample:
	If the information is all correct, this error can result because of timing.  The deployment project and deployment project version may not have been created by the time the GET request for the project and version has been issued.  Wait a few seconds and try again.
	
	
	{
	  "status": {
	    "code": 400,
	    "messageId": "FNRDD1004E"",
	    "message": " Invalid input::java.lang.IllegalArgumentException null projectIdentifier = PRJ123, branchName = master, snapshotName = v4-2020-12-01-0051"
	  },
	  "errors": [
	    {
	      "errorId": 1004,
	      "explanation": "Invalid input ",
	      "action": "Reenter your information and try again"
	    }
	  ]
	}

Returning the deployment status for the project version

The deployment of a project version might take a few minutes and the cpds_getDeploymentStatus.sh script provides the ability to monitor the progress of the deployment. Because the deployment can take a few minutes, you can use this script to poll the status of the deployment.

The following example shows how to run the script by using the cpds.properties file and the required deploymentRecId value. Use the lastDeploymentRecordId value, which you retrieved from the cpds_getDeploymentProjSnapshot.sh or cpds_deployProj.sh script.
./cpds_getDeploymentStatus.sh --file cpds.properties --deploymentRecId D00E6C75-0000-CB1E-9CA6-ED3F7DB2AE9B

For more information about the GET /v1/deploymentrecords/{deploymentRecordId} request, see the Swagger documentation.

Code samples for returning the deployment status for the project version

Output
The following example shows sample output.
./cpds_getDeploymentStatus.sh --file cpds.properties --deploymentRecId 50A5E775-0000-C314-82C6-1D87C9F34749
	Extracting fields from file cpds.properties ......
	Getting Runtime ZENToken ...
	Retrieving deploymentRecord ...
	
	
	{"data":{"branchName":"master","caProjectDescriptor":"a1263c2a-778f-452a-b4ca-e55ef79dda9d","contentAnalyzerStatus":{"machineLearningElapsedTime":5244,"newProject":false,"ontologyElapsedTime":32734,"projectCreationElapsedTime":0,"startTime":"2020-11-20T21:53:10.173Z"},"contentEngineStatus":{"existingClasses":2,"existingPropertyTemplates":5,"existingRoles":19,"newClasses":0,"newPropertyTemplates":0,"newRoles":0,"propertiesAndClassesElapsedTime":3244,"rolesElapsedTime":8308,"totalClasses":2,"totalPropertyTemplates":5,"totalRoles":19},"id":"50A5E775-0000-C314-82C6-1D87C9F34749","information":{"completionStatus":"Success","completionTime":"2020-11-20T21:53:48.151Z","existingTeams":12,"gitRepoRetrievalStatus":{"dataDefinitionsParsed":5,"gitElapsedTime":0},"newProject":false,"newTeams":0,"newVersion":false,"stages":["ReadSnapshot","Teams","ContentMetadata","Roles","ImportCAML","ImportCAOntology"],"startTime":"2020-11-20T21:52:54.544Z","teamsElapsedTime":2213,"totalElapsedTime":53607,"totalTeams":12},"projectId":"{2A0DDE5C-4753-441E-B7AB-107E1D708898}","projectIdentifier":"DM999","projectVersionId":"{9D7B952E-8E1D-4E11-AD11-2D0395904E64}","snapshotName":"v1-2020-11-19-0105"},"status":{"code":200,"message":"Successfully retrieved the deployment record.","messageId":"FNRDD0006I"}}
		Return Code=200
Explanation
The following example explains the possible output.
  
	  "data": {
	    "branchName": "master",
	    "caProjectDescriptor": "a1263c2a-778f-452a-b4ca-e55ef79dda9d", =>Document Processing engine project descriptor associated with the deployment project.
	    "contentAnalyzerStatus": {
	      "machineLearningElapsedTime": 5244,  => The number of milliseconds to import the machine learning
	      "newProject": false, => True if a new Document Processing engine project descriptor was created  for the project or false if one existed and was updated during the deployment
	      "ontologyElapsedTime": 32734,=> The number of ms to import the Document Processing engine files and definitions 
	      "projectCreationElapsedTime": 0,
	      "startTime": "2020-11-20T21:53:10.173Z"
	    },
	    "contentEngineStatus": {
	      "existingClasses": 2,
	      "existingPropertyTemplates": 5,
	      "existingRoles": 19,
	      "newClasses": 0,
	      "newPropertyTemplates": 0,
	      "newRoles": 0,
	      "propertiesAndClassesElapsedTime": 3244,
	      "rolesElapsedTime": 8308,
	      "totalClasses": 2,
	      "totalPropertyTemplates": 5,
	      "totalRoles": 19
	    },
	    "id": "50A5E775-0000-C314-82C6-1D87C9F34749", => the deployment record id
	    "information": { => overall deployment information
	      "completionStatus": "Success", => Completion status of the deployment , Success or Failed 
	      "completionTime": "2020-11-20T21:53:48.151Z", => Time the deployment was completed
	      "existingTeams": 12,
	      "gitRepoRetrievalStatus": {
	        "dataDefinitionsParsed": 5,
	        "gitElapsedTime": 0
	      },
	      "newProject": false,
	      "newTeams": 0,
	      "newVersion": false,
	      "stages": [
	        "ReadSnapshot",
	        "Teams",
	        "ContentMetadata",
	        "Roles",
	        "ImportCAML",
	        "ImportCAOntology"
	      ],
	      "startTime": "2020-11-20T21:52:54.544Z",
	      "teamsElapsedTime": 2213,
	      "totalElapsedTime": 53607,
	      "totalTeams": 12
	    },
	    "projectId": "{2A0DDE5C-4753-441E-B7AB-107E1D708898}", => the project id guid for the deployed project
	    "projectIdentifier": "PRJ999", => the project identifier for the deployed project
	    "projectVersionId": "{9D7B952E-8E1D-4E11-AD11-2D0395904E64}",  => the deployed project version guid.  For each version deployed of a project, a deployed project version is created.
	    "snapshotName": "v1-2020-11-19-0105" ==> The version of the project deployed
	  },
	  "status": {
	    "code": 200,
	    "message": "Successfully retrieved the deployment record.",
	    "messageId": "FNRDD0006I"
	  }
	}  
	   
Deployment status
Deployment can also fail for a variety of reasons and then returns errors.
currentStage: stage where error occurs. List of ordered stages can be found in "stages" field. 
completionStatus: "Failed"
lastErrorId: an id assigned to a particular message. 
lastError: a localized version of the error message. Additional data can be appended to help diagnose issue.
Deployment appears InProgress when it takes some time to complete. The response returned in this case is similar, with the following exceptions:
  • The currentStage value is set to the stage that deployment is currently processing.
  • The completionStatus value is set to InProgress.
  • The lastErrorId and lastError values are not set.

Prechecking the system

The cpds_systemPrecheck.sh script runs the Content Project Deployment Service REST precheck endpoint to the following effects.
GET /v1/precheck
  • Verifies that the user has privileges to deploy.
  • Verifies that the connections used for the Content Project Deployment Service are accessible.
  • Reports the Document Processing engine project database availability where Content Project Deployment is configured.
The following example shows how to run the script by using the cpds.properties file:
./cpds_systemPrecheck.sh --file cpds.properties

For more information about the GET /v1/precheck, see the Swagger documentation.

Code samples for prechecking the system

Output
The following example shows sample output.
 ./cpds_systemPrecheck.sh --file cpds.properties
	Extracting fields from file cpds.properties .....
	Getting RunTime ZENToken ...
	{"data":		
	{"caConnectionState":"Success","caProjectsAvailable":1,"caProjectsDeleteState":1,"caProjectsUsed":1,
	"canDeploy":true,"cpeConnectionState":"Success","gitConnectionState":"Success","umsTeamConnectionState":"Success"},
	"status":{"code":200,"message":"Precheck of Content Project Deployment Service is successful.","messageId":"FNRDD0019I"}}
       Return Code=200
Explanation
The following example explains the possible output.
	{
	{  "data": {{
	    "caConnectionState": "Success", => indicates the Document Processing engine connection tested was successful.
	    "caProjectsAvailable": 1, ==> number of available Document Processing engine project databases used for new project creation. There needs to be at least one new project available for new projects being deployed.  In a development environment, two projects are required for each deployment.  One for the design and one for the deployment to an object store.
	    "caProjectsDeleteState": 1, ==> number of Document Processing engine projects that are in the deletion state.  The admin would be able to cleanup old projects.
	    "caProjectsUsed": 1, ==> number of Document Processing engine project used.
	    "canDeploy": true, ==> user has appropriate permissions to be able to deploy.
	    "cpeConnectionState": "Success", ==> indicates the Content Platform Engine connection test was successful.
	    "gitConnectionState": "Success",  ==> indicates the Content Design REST API connection test was successful.
	    "umsTeamConnectionState": "Success" ==> indicates the Teams Services connection test was successful.
	  },
	  "status": {
	    "code": 200
	    "message": "Precheck of Content Project Deployment Service is successful."
	    "messageId": "FNRDD0019I
	 }  
	}	
Connection issue
This sample shows a connection issue.
{	
	  "data": {{
	    "caConnectionError":
	      "action": "Ask your system administrator to review the error logs on the Content Project Deployment Service application server for more details."
	      "errorId": 516
	      "explanation": "Failed to connect to Document Processing engine.
	    },
	    "caConnectionState": "Failed", ==> Document Processing engine connection test failed.  See caConnectionError for error explanation, errorId and action to be taken. NOTE: Any failure for the connection states (ca, cpe, git, Team) needs to be addresses before a project can be deployed and the Content Project Deployment Service is fully functional.
	    "canDeploy": true
	    "cpeConnectionState": "Success"
	    "gitConnectionState": "Success"
	    "umsTeamConnectionState": "Success
	  },
	  "status": {
	    "code": 200
	    "message": "Precheck of Content Project Deployment Service is successful."
	    "messageId": "FNRDD0019I
	 } 
	}}
	 

Prechecking the new project version to deploy

The cpds_projectPrecheck.sh script runs the Content Project Deployment Service REST GET project precheck endpoint, which performs a precheck without initiating a deployment or persisting any other changes to the design repository or the target object store.
GET /deployment/projects/{projectIdentifier}/branches/{branchName}/snapshots/{snapshotName}/precheck
Note: The information returned in the project precheck details is also returned for the deployment endpoint.
The following example shows how to run the script by using the cpds.properties file.
./cpds_projectPrecheck.sh --file cpds.properties

For more information about the GET /deployment/projects/{projectIdentifier}/branches/{branchName}/snapshots/{snapshotName}/precheck request, see the Swagger documentation.

Alerts are separated into three categories (values of the alertSeverity parameter). The following list shows the types of alerts and examples of types of changes in each category (values of the changeType parameter).
Incompatible
These errors cause downstream deployment failures.
  • Data type changes - The Content Designer prevents these changes. The changeType parameter is set to DataType.
  • Cardinality (single or multivalue) changes - Content Designer versions earlier than 21.0.2 might have allowed these changes. The changeType parameter is set to Cardinality.
ExistingDataImpact
These warnings can impact in-progress objects. In general, they describe changes that are more restrictive in nature, and existing data could become invalid.
  • A property is now required (isRequired). The changeType parameter is set to IsValueRequired.
  • The maximum length of a String to a more restrictive length. The changeType parameter is set to MaximumLength.
  • The minimum and maximum values of an integer or double value are more restrictive. The changeType parameter is set to MinimumValue or MaximumValue.
  • A new property is added so that existing data would have no value. The changeType parameter is set to PropertyAdded.
  • Class retention settings changes. The changeType parameter has the RetentionChange value.
Information
These changes are less restrictive in nature and reflect a silent CPDS behavior.
  • The isRequired parameter is automatically set to false for unmapped properties. The changeType parameter has the PropertyRemoved value.
  • The maximum length of a String is set to a less restrictive length. The changeType parameter has the MaximumLength value.
  • The minimum and maximum values of an integer or double value are more restrictive. The changeType parameter has the MinimumValue or MaximumValue value.
  • Other changes that do not impact existing data. The changeType parameter is set to PropertyRemoved, or ClassRemoved, or ClassAdded.
Note: A project version with incompatible changes fails when deployment is attempted.

The returned data is broken up into alerts, classes, and property templates. In the list of alerts list, each alert has a reference identifier. This identifier corresponds to an artifact in the classes section or the property template section. That artifact provides more information about the identity of the class, property, property template, or subproperty.

In the following example, alerts for which the changeSourceType parameter is set to DesignRepo are checked only when a version is deployed to any object store for the first time. With this first deployment, additional information about the version is captured in the design repository and certain metadata is established. Alerts for which the changeSourceType parameter is set to ObjectStore are always checked against what is currently deployed to the object store (if it is deployed at all).

Code samples for prechecking the new project version to deploy

Output
The following example shows sample output.
./cpds_projectPrecheck.sh --file cpds.properties
	  Extracting fields from file cpds.properties ......
	  Getting RunTime ZENToken ...
	
	{"data":{"alerts":[{"alertAction":"No action is needed.","alertCode":"A803","alertMessage":"The property template DbaCDDConsigneeAndShipper0003 is added to the design repository.        ","alertSeverity":"Informational","artifactType":"PropertyTemplate","changeSourceType":"DesignRepo","changeType":"PropertyAdded","propertySymbolicName":"DbaCDDConsigneeAndShipper0003","referenceId":0},{"alertAction":"Ensure that the application is not adversely affected by any missing data.","alertCode":"A403","alertMessage":"The property DbaCDDConsigneeAndShipper0003 will be added to the class DbaJL125BillofLading in this version of the project in the design repository.         ","alertSeverity":"ExistingDataImpact","artifactType":"Property","changeSourceType":"DesignRepo","changeType":"PropertyAdded","classSymbolicName":"DbaJL125BillofLading","propertySymbolicName":"DbaCDDConsigneeAndShipper0003","referenceId":2},{"alertAction":"No action is needed.","alertCode":"A800","alertMessage":"The property template DbaCDDConsigneeAndShipper0003 will be added to the object store.        ","alertSeverity":"Informational","artifactType":"PropertyTemplate","changeSourceType":"ObjectStore","changeType":"PropertyAdded","propertySymbolicName":"DbaCDDConsigneeAndShipper0003","referenceId":0},{"alertAction":"Ensure that the application is not adversely affected by any missing data.","alertCode":"A400","alertMessage":"The property DbaCDDConsigneeAndShipper0003 will be added to the class DbaJL125BillofLading in the object store. Existing instances of the class in the object store will not have values for this property.           ","alertSeverity":"ExistingDataImpact","artifactType":"Property","changeSourceType":"ObjectStore","changeType":"PropertyAdded","classSymbolicName":"DbaJL125BillofLading","propertySymbolicName":"DbaCDDConsigneeAndShipper0003","referenceId":2}],"classes":[{"referenceId":1,"classProperties":[{"referenceId":2,"cardinality":"Single","dataDefinitionFile":"proj://CDD/DD_d23e45a1-abec-4172-af6b-5ec65172e8f3_ConsigneeAndShipper.json","dataType":"Composite","definitionName":"ConsigneeAndShipper","displayName":"ConsigneeAndShipper","symbolicName":"DbaCDDConsigneeAndShipper0003"}],"definitionFile":"CD_BillofLading.json","displayName":"Bill of Lading","symbolicName":"DbaJL125BillofLading"}],"propertyTemplates":[{"referenceId":0,"cardinality":"Single","dataDefinitionFile":"proj://CDD/DD_d23e45a1-abec-4172-af6b-5ec65172e8f3_ConsigneeAndShipper.json","dataType":"Composite","definitionName":"ConsigneeAndShipper","symbolicName":"DbaCDDConsigneeAndShipper0003"}]},"status":{"code":200,"message":"Precheck of project version is successful.","messageId":"FNRDD0020I"}} 
	Return 200
Example of returned data
		  "data": {

		    "alerts": [
		      // Same alerts as returned from precheck phase of deployment
		    ]

		    "propertyTemplates": [
		      // Same information returned from precheck phase of deployment
		    ]
		    "classes":[ 
		      // Same information returned from precheck phase of deployment
		      ]
		    }   
Explanation
The following example explains the possible output.
	{
	  "data": {
	    "alerts": [
	      {
	        "alertAction": "No action is needed.",  ==>What action can be taken for the alert
	        "alertCode": "A803", ==> the alert code.  All alerts start with the letter 'A'.
	        "alertMessage": "The property template DbaCDDConsigneeAndShipper0003 is added to the design repository.",  ==> Alert messages
	        "alertSeverity": "Informational", ==> Type of alert.  See Alert Categories
	        "artifactType": "PropertyTemplate", ==> Type of artifact for this alert.  Types are: Class, PropertyTemplate, Property or SubProperty
	        "changeSourceType": "DesignRepo",  ==>  The type of source where the new project version change is different.  Types are: DesignRepo (Design repository checks with prior version) and ObjectStore (checks with the object store)
	        "changeType": "PropertyAdded", =>  the type of change.  Change types: DataType, Cardinality, MinimumValue, MaximumValue,MaximumLength, IsValueRequired, PropertyAdded, PropertyRemoved, ClassAdded, ClassRemoved, RetentionChange.
	        "propertySymbolicName": "DbaCDDConsigneeAndShipper0003",  ==> the property if the alert is related to a property or property template.
	        "referenceId": 0   ==> The reference id will correspond to the reference id in an artifact defined in the classes or propertyTemplates section
	      },
	      {
	        "alertAction": "Ensure that the application is not adversely affected by any missing data.",
	        "alertCode": "A403",
	        "alertMessage": "The property DbaCDDConsigneeAndShipper0003 will be added to the class DbaJL125BillofLading in this version of the project in the design repository.         ",
	        "alertSeverity": "ExistingDataImpact",
	        "artifactType": "Property",
	        "changeSourceType": "DesignRepo",
	        "changeType": "PropertyAdded",
	        "classSymbolicName": "DbaJL125BillofLading",  ==> the class if the alert is related to a class or property within a class.
	        "propertySymbolicName": "DbaCDDConsigneeAndShipper0003",
	        "referenceId": 2
	      },
	      {
	        "alertAction": "No action is needed.",
	        "alertCode": "A800",
	        "alertMessage": "The property template DbaCDDConsigneeAndShipper0003 will be added to the object store.",
	        "alertSeverity": "Informational",
	        "artifactType": "PropertyTemplate",
	        "changeSourceType": "ObjectStore",
	        "changeType": "PropertyAdded",
	        "propertySymbolicName": "DbaCDDConsigneeAndShipper0003",
	        "referenceId": 0
	      },
	      {
	        "alertAction": "Ensure that the application is not adversely affected by any missing data.",
	        "alertCode": "A400",
	        "alertMessage": "The property DbaCDDConsigneeAndShipper0003 will be added to the class DbaJL125BillofLading in the object store. Existing instances of the class in the object store will not have values for this property. ",
	        "alertSeverity": "ExistingDataImpact",
	        "artifactType": "Property",
	        "changeSourceType": "ObjectStore",
	        "changeType": "PropertyAdded",
	        "classSymbolicName": "DbaJL125BillofLading",
	        "propertySymbolicName": "DbaCDDConsigneeAndShipper0003",
	        "referenceId": 2
	      }
	    ],
	    "classes": [
	      {
	        "referenceId": 1,
	        "classProperties": [
	          {
	            "referenceId": 2,  ==> The reference id can be mapped to alert reference ids for particular alerts.
	            "cardinality": "Single",
	            "dataDefinitionFile": "proj://CDD/DD_d23e45a1-abec-4172-af6b-5ec65172e8f3_ConsigneeAndShipper.json",
	            "dataType": "Composite",
	            "definitionName": "ConsigneeAndShipper",
	            "displayName": "ConsigneeAndShipper",
	            "symbolicName": "DbaCDDConsigneeAndShipper0003"
	          }
	        ],
	        "definitionFile": "CD_BillofLading.json",
	        "displayName": "Bill of Lading",
	        "symbolicName": "DbaJL125BillofLading"
	      }
	    ],
	    "propertyTemplates": [
	      {
	        "referenceId": 0,
	        "cardinality": "Single",
	        "dataDefinitionFile": "proj://CDD/DD_d23e45a1-abec-4172-af6b-5ec65172e8f3_ConsigneeAndShipper.json",
	        "dataType": "Composite",
	        "definitionName": "ConsigneeAndShipper",
	        "symbolicName": "DbaCDDConsigneeAndShipper0003"
	      }
	    ]
	  },
	  "status": {
	    "code": 200,
	    "message": "Precheck of project version is successful.",
	    "messageId": "FNRDD0020I"
	  }
	}:

Cleaning up the object store and deleting the associated Document Processing engine project

The cpds_cleanUpProject.sh script cleans up artifacts for the specified deployed project in Content Platform Engine repository and the associated Document Processing engine project. The script prompts the user with a warning and requires the user to type in YES before running the command to the Content Project Deployment Service.

Important: Clean up projects only in the development environment. It is NOT recommended in runtime environments. Do not clean an active project.

In the development environment, you can run this script if you are a member of either the Doc Processing Managers or the Doc Processing Analysts teams.

The script runs this Content Project Deployment Service REST endpoint. This request deletes the artifacts that are associated with the deployed project identifier --including documents associated with the project classes, project-related classes, roles, deployed project versions and deployed project and metadata from the Content Platform Engine-- and marks the Document Processing engine project as deleted.
POST /projects/{projectId}/cleanup
The script supports the following options.
filterIncludeDocDetails
Boolean value with default is false. If true, returns the details of each deleted document so an additional section, "documentDetails": [] will be returned with the ID, name and className of the each document deleted.
timeOutInSecs
Integer value with default to 10 seconds. This value limits the number of seconds to clean up the documents of a project. If the time is too short, cleanup will not be complete.
cleanPropertyTemplates
Boolean value with default to false. If true, removes the property templates associated with the project.
Note:
  • Property templates can be shared with other projects. A property template can be deleted only if no other project in that object store is using the template. Otherwise, that property is skipped.
  • If no options are specified, default options apply.
    \"filterIncludeDocDetails\": false
    \"timeOutInSecs\": 10
    \"cleanPropertyTemplates\": false
The following example shows how to run the script by using the cpds.properties file, without removing project-related templates:
./cpds_cleanUpProject.sh --file cpds.properties --deployedProjectId EB9B7698-8C1F-45C1-AD04-B7DA7A10E717
The following example shows how to run the script by using the cpds.properties file, with the option to clean the associated property templates:
./cpds_cleanUpProject.sh --file cpds.properties --deployedProjectId EB9B7698-8C1F-45C1-AD04-B7DA7A10E717
The following example shows how to run the script using the cpds.properties file, with the option to clean up the project without removing associated templates output:
./cpds_cleanUpProject.sh --file cpds.properties --deployedProjectId 44542974-9241-4343-8949-AB24C56457ED

For more information about the POST /projects/{projectId}/cleanup request, see the Swagger documentation.

Code samples for cleaning up the object store and deleting the associated Document Processing engine project

Output
The following example shows sample output.
Extracting fields from file cpds.properties ......
	  Getting RunTime ZENToken ...

	  WARNING: Deletion of a project will remove most artifacts associated with a deployed project. 
	  These artifacts include:  documents, document classes, roles, ca project, project versions, project, 
	  project deployment records associated with a project. Unreferenced property templates can be deleted 
	  if passed in an override flag. In the dev env, operation is opened to users who are EITHER  members 
	  of Doc Processing Managers or Content Analysts. In  the runtime env, operation is opened only to users 
	  who are BOTH members of Doc Processing Mgrs and OS admins.
		
	  Type YES to proceed with deletion or return to exit ? YES
	  Cleaning project ...
	
	{"data":{"documentClassDetails":[{"id":"{4CEA3A2A-973A-4386-8041-75AAB05AC02C}","symbolicName":"DbaJL123UtilityBill"}],"documentsCountDetails":[{"className":"DbaJL123UtilityBill","count":0}],"elapsedTime":2,"id":"44542974-9241-4343-8949-AB24C56457ED","projectVersionDetails":[{"id":"{6D72B307-F901-4A55-9E12-4D9302E0FD4E}","snapshotName":"v34-2021-04-26-1833"}],"roleDetails":[{"displayName":"Document Viewers-JL123 Membership","id":"{70DF79DB-35A6-4041-875E-021978F49B21}","roleClassName":"DbaUMSTeamDynamicRole","umsTeamUUID":"a623f3c6-22c4-460d-abcc-8d60543ab89c"},{"displayName":"Document Viewers-JL123-UtilityBill Membership","id":"{9CFFD44D-1D8C-456C-8011-BDA95C8E152A}","roleClassName":"DbaUMSTeamDynamicRole","umsTeamUUID":"2d9d90a1-7e69-45a0-8788-ca1efb6779ce"},{"displayName":"Document Editors-JL123-UtilityBill Membership","id":"{4107EA60-8EEA-45AA-A948-0CE414186E3B}","roleClassName":"DbaUMSTeamDynamicRole","umsTeamUUID":"b1198b5c-55f1-49c7-8607-741bb2856781"},{"displayName":"Classification Workers-JL123 Membership","id":"{E97B288B-269D-4E95-BA8F-27C55A1C89B8}","roleClassName":"DbaUMSTeamDynamicRole","umsTeamUUID":"dbe5eed2-1509-4768-8f0d-9f8e964a3d07"},{"displayName":"Document Owners-JL123 Membership","id":"{3029DCB3-BA28-40FF-A160-C7C8B194C373}","roleClassName":"DbaUMSTeamDynamicRole","umsTeamUUID":"5c5f0ebc-32d1-4ee3-981a-c03b0fd89a67"},{"displayName":"Project Admins-JL123 Membership","id":"{B75AC624-B88F-419D-BCDF-1D5EECECBD70}","roleClassName":"DbaUMSTeamDynamicRole","umsTeamUUID":"fe6b1bf5-7ce4-4765-8e2a-e3dda6a1d839"},{"displayName":"Document Owners-JL123-UtilityBill Membership","id":"{A1D28D71-612B-449F-8765-ED3405C19377}","roleClassName":"DbaUMSTeamDynamicRole","umsTeamUUID":"435f7476-95f6-42c3-b295-9f1925631352"},{"displayName":"Document Editors-JL123 Membership","id":"{5E71E654-AC39-4FCA-96A2-7C00B9312878}","roleClassName":"DbaUMSTeamDynamicRole","umsTeamUUID":"9c72aab0-3ea7-4440-b124-83258c06b37d"},{"displayName":"Classification Workers-JL123","id":"{B556D3FA-8B6B-40FF-9AA0-C01FAFF0D2FE}","roleClassName":"DbaClassificationWorkersRole"},{"displayName":"Project Admins-JL123","id":"{A1C9578B-1FFC-48F0-9278-1B4A12EAB449}","roleClassName":"DbaProjectAdminsRole"},{"displayName":"Document Owners-JL123-UtilityBill","id":"{3EC70A5A-51B5-420D-8D7E-D32F2EC0CB1D}","roleClassName":"DbaProjectDocumentOwnersRole"},{"displayName":"Document Editors-JL123-UtilityBill","id":"{71BCB3A8-E294-4D62-BAC2-F35851A939DF}","roleClassName":"DbaProjectDocumentEditorsRole"},{"displayName":"Document Viewers-JL123-UtilityBill","id":"{FC86E9F0-70E2-4FE5-A53B-7CE70A7F11A4}","roleClassName":"DbaProjectDocumentViewersRole"}]},"status":{"code":200,"message":"Successfully cleaned up the project.","messageId":"FNRDD0004I"}}
	Return Code=200	
Explanation
The following example explains the possible output.
	{
	  "data": {
	    "documentClassDetails": [  ==> Classes deleted
	      {
	        "id": "{4CEA3A2A-973A-4386-8041-75AAB05AC02C}",
	        "symbolicName": "DbaJL123UtilityBill"
	      }
	    ],
	    "documentsCountDetails": [  ==> Documents deleted specified by for each Classes deleted
	      {
	        "className": "DbaJL123UtilityBill", ==> deleted class
	        "count": 0  ==> number of documents deleted which were instantiated from the deleted class
	      }
	    ],
	    "elapsedTime": 2,
	    "id": "44542974-9241-4343-8949-AB24C56457ED", ==> Deployed Project guid 
	    "projectVersionDetails": [   ==> Deployed project versions
	      {
	        "id": "{6D72B307-F901-4A55-9E12-4D9302E0FD4E}",
	        "snapshotName": "v34-2021-04-26-1833"
	      }
	    ],
	    "roleDetails": [  ==> Roles associated to the project which were deleted
	      {
	        "displayName": "Document Viewers-JL123 Membership", ==> Display Name
	        "id": "{70DF79DB-35A6-4041-875E-021978F49B21}", ==> Role guid
	        "roleClassName": "DbaUMSTeamDynamicRole",  ==> symbolic role name
	        "umsTeamUUID": "a623f3c6-22c4-460d-abcc-8d60543ab89c"==>Team guid associated with the role
	      },
	      {
	        "displayName": "Document Viewers-JL123-UtilityBill Membership",
	        "id": "{9CFFD44D-1D8C-456C-8011-BDA95C8E152A}",
	        "roleClassName": "DbaUMSTeamDynamicRole",
	        "umsTeamUUID": "2d9d90a1-7e69-45a0-8788-ca1efb6779ce"
	      },
	      {
	        "displayName": "Document Editors-JL123-UtilityBill Membership",
	        "id": "{4107EA60-8EEA-45AA-A948-0CE414186E3B}",
	        "roleClassName": "DbaUMSTeamDynamicRole",
	        "umsTeamUUID": "b1198b5c-55f1-49c7-8607-741bb2856781"
	      },
	      {
	        "displayName": "Classification Workers-JL123 Membership",
	        "id": "{E97B288B-269D-4E95-BA8F-27C55A1C89B8}",
	        "roleClassName": "DbaUMSTeamDynamicRole",
	        "umsTeamUUID": "dbe5eed2-1509-4768-8f0d-9f8e964a3d07"
	      },
	      {
	        "displayName": "Document Owners-JL123 Membership",
	        "id": "{3029DCB3-BA28-40FF-A160-C7C8B194C373}",
	        "roleClassName": "DbaUMSTeamDynamicRole",
	        "umsTeamUUID": "5c5f0ebc-32d1-4ee3-981a-c03b0fd89a67"
	      },
	      {
	        "displayName": "Project Admins-JL123 Membership",
	        "id": "{B75AC624-B88F-419D-BCDF-1D5EECECBD70}",
	        "roleClassName": "DbaUMSTeamDynamicRole",
	        "umsTeamUUID": "fe6b1bf5-7ce4-4765-8e2a-e3dda6a1d839"
	      },
	      {
	        "displayName": "Document Owners-JL123-UtilityBill Membership",
	        "id": "{A1D28D71-612B-449F-8765-ED3405C19377}",
	        "roleClassName": "DbaUMSTeamDynamicRole",
	        "umsTeamUUID": "435f7476-95f6-42c3-b295-9f1925631352"
	      },
	      {
	        "displayName": "Document Editors-JL123 Membership",
	        "id": "{5E71E654-AC39-4FCA-96A2-7C00B9312878}",
	        "roleClassName": "DbaUMSTeamDynamicRole",
	        "umsTeamUUID": "9c72aab0-3ea7-4440-b124-83258c06b37d"
	      },
	      {
	        "displayName": "Classification Workers-JL123",
	        "id": "{B556D3FA-8B6B-40FF-9AA0-C01FAFF0D2FE}",
	        "roleClassName": "DbaClassificationWorkersRole"
	      },
	      {
	        "displayName": "Project Admins-JL123",
	        "id": "{A1C9578B-1FFC-48F0-9278-1B4A12EAB449}",
	        "roleClassName": "DbaProjectAdminsRole"
	      },
	      {
	        "displayName": "Document Owners-JL123-UtilityBill",
	        "id": "{3EC70A5A-51B5-420D-8D7E-D32F2EC0CB1D}",
	        "roleClassName": "DbaProjectDocumentOwnersRole"
	      },
	      {
	        "displayName": "Document Editors-JL123-UtilityBill",
	        "id": "{71BCB3A8-E294-4D62-BAC2-F35851A939DF}",
	        "roleClassName": "DbaProjectDocumentEditorsRole"
	      },
	      {
	        "displayName": "Document Viewers-JL123-UtilityBill",
	        "id": "{FC86E9F0-70E2-4FE5-A53B-7CE70A7F11A4}",
	        "roleClassName": "DbaProjectDocumentViewersRole"
	      }
	    ]
	  },
	  "status": {
	    "code": 200,
	    "message": "Successfully cleaned up the project.",
	    "messageId": "FNRDD0004I"
	  }
	}

Cleaning up the business teams

The cpds_cleanUpTeams.sh script removes teams that are associated with the project name specified from the Business Teams Server. The script prompts the user with a warning and requires the user to type in YES before running the command to the Content Project Deployment Service.

Important: Clean up teams only in the authoring environment. It is NOT recommended in a runtime environment. If the project is deployed to multiple Content Platform Engine repositories, the teams are shared. The cleanup process removes all the teams that are associated with the project name, which makes other deployments of the same project unusable. Redeploying the project re-creates the teams. However, you must add all the users to teams that were previously deleted.

In the development environment, you can run this script if you are a member of either the Doc Processing Managers or the Doc Processing Analysts teams.

The script runs the Content Project Deployment Service REST POST endpoint, which cleans up teams related to the project name.
POST /projects/{projectIdentifier}/teamscleanup
The following example shows how to run the script by using the cpds.properties file:
./cpds_cleanUpTeams.sh --file cpds.properties
The following example shows how to run the script by using the cpds.properties file, with the option to override the project name:
./cpds_cleanUpTeams.sh --file cpds.properties --projectName PROJ1

For more information about the POST /projects/{projectIdentifier}/teamscleanup request, see the Swagger documentation.

By default, the project related teams is deleted for the project name (one per project):
  • Project Admins-<projectName>
  • Classification Workers-<projectName>
  • Business Owners-<projectName>
  • Document Owners<projectName>
  • Document Editors-<projectName>
  • Document Viewers-<projectName>
  • Project class related teams (one per class for the project):
  • Document Owners-<projectName>-<documentTypeName>
  • Document Editors-<projectName>-<documentTypeName>
  • Document Viewers-<projectName>-<documentTypeName>
Optionally, you can return a list of all the teams for review before the deletion by running this command.
--cleanTeamsOptions "\"cleanTeams\": false"

Code samples for cleaning up the business teams

Output
The following example shows sample output.
  ./cpds_cleanUpTeams.sh --file cpds.properties
	  Extracting fields from file cpds.properties ......
	  Getting RunTime ZENToken ...
	  "cleanTeams": true
	
	   WARNING: Deletion of project-related teams will remove all teams associated to the project. 
	   If the project is deployed in one or more repositories using these same teams, the project in 
	   these environments will no longer function.
	   
	   Type YES to proceed with deletion or return to exit ? YES
	
     {"data":{"teamDetails":[{"displayName":"Business Owners-JL123","distinguishedName":"cn=businessowners,project=jl123,scope=project,application=capture","uuid":"724735a2-cea3-4c5f-ab39-f27bfacd9e1c"},{"displayName":"Classification Workers-JL123","distinguishedName":"cn=classificationworkers,project=jl123,scope=project,application=capture","uuid":"dbe5eed2-1509-4768-8f0d-9f8e964a3d07"},{"displayName":"Document Editors-JL123","distinguishedName":"cn=documenteditors,project=jl123,scope=project,application=capture","uuid":"9c72aab0-3ea7-4440-b124-83258c06b37d"},{"displayName":"Document Owners-JL123","distinguishedName":"cn=documentowners,project=jl123,scope=project,application=capture","uuid":"5c5f0ebc-32d1-4ee3-981a-c03b0fd89a67"},{"displayName":"Document Viewers-JL123","distinguishedName":"cn=documentviewers,project=jl123,scope=project,application=capture","uuid":"a623f3c6-22c4-460d-abcc-8d60543ab89c"},{"displayName":"ProjectAdmins-JL123","distinguishedName":"cn=projectadmins,project=jl123,scope=project,application=capture","uuid":"fe6b1bf5-7ce4-4765-8e2a-e3dda6a1d839"},{"displayName":"Document Editors-JL123-BillofLading","distinguishedName":"cn=documenteditors,class=billoflading,project=jl123,scope=projectclass,application=capture","uuid":"e18ee7f9-7f25-4ac0-8435-6923762de966"},{"displayName":"Document Editors-JL123-UtilityBill","distinguishedName":"cn=documenteditors,class=utilitybill,project=jl123,scope=projectclass,application=capture","uuid":"b1198b5c-55f1-49c7-8607-741bb2856781"},{"displayName":"Document Owners-JL123-BillofLading","distinguishedName":"cn=documentowners,class=billoflading,project=jl123,scope=projectclass,application=capture","uuid":"3342f424-929e-433c-be0a-0a339d95d1aa"},{"displayName":"Document Owners-JL123-UtilityBill","distinguishedName":"cn=documentowners,class=utilitybill,project=jl123,scope=projectclass,application=capture","uuid":"435f7476-95f6-42c3-b295-9f1925631352"},{"displayName":"Document Viewers-JL123-BillofLading","distinguishedName":"cn=documentviewers,class=billoflading,project=jl123,scope=projectclass,application=capture","uuid":"b8602e0d-a3f6-466b-9598-217c88040e11"},{"displayName":"Document Viewers-JL123-EnergyBill","distinguishedName":"cn=documentviewers,class=energybill,project=jl123,scope=projectclass,application=capture","uuid":"d075177c-c47e-4b5d-90de-97a81bf87646"},{"displayName":"Document Viewers-JL123-Invoice","distinguishedName":"cn=documentviewers,class=invoice,project=jl123,scope=projectclass,application=capture","uuid":"b84af045-bac5-40f2-bfcc-4eda5ec262bf"},{"displayName":"Document Viewers-JL123-UtilityBill","distinguishedName":"cn=documentviewers,class=utilitybill,project=jl123,scope=projectclass,application=capture","uuid":"2d9d90a1-7e69-45a0-8788-ca1efb6779ce"}]},"status":{"code":200,"message":"Retrieved the teams that are associated with the Project Identifier.","messageId":"FNRDD0018I"}}
	Return Code=200
Explanation
The following example explains the possible output.
{
	  "data": {
	    "teamDetails": [ <== array of teams identified by the project name which have been deleted from the Teams Server
	      {
	        "displayName": "Business Owners-JL123",  ==> display name for the Team deleted.
	        "distinguishedName": "cn=businessowners,project=jl123,scope=project,application=capture",  ==> Team Distinguished Name 
	        "uuid": "724735a2-cea3-4c5f-ab39-f27bfacd9e1c"  ==> Team guid for the deleted team
	      },
	      {
	        "displayName": "Classification Workers-JL123",
	        "distinguishedName": "cn=classificationworkers,project=jl123,scope=project,application=capture",
	        "uuid": "dbe5eed2-1509-4768-8f0d-9f8e964a3d07"
	      },
	      {
	        "displayName": "Document Editors-JL123",
	        "distinguishedName": "cn=documenteditors,project=jl123,scope=project,application=capture",
	        "uuid": "9c72aab0-3ea7-4440-b124-83258c06b37d"
	      },
	      {
	        "displayName": "Document Owners-JL123",
	        "distinguishedName": "cn=documentowners,project=jl123,scope=project,application=capture",
	        "uuid": "5c5f0ebc-32d1-4ee3-981a-c03b0fd89a67"
	      },
	      {
	        "displayName": "Document Viewers-JL123",
	        "distinguishedName": "cn=documentviewers,project=jl123,scope=project,application=capture",
	        "uuid": "a623f3c6-22c4-460d-abcc-8d60543ab89c"
	      },
	      {
	        "displayName": "ProjectAdmins-JL123",
	        "distinguishedName": "cn=projectadmins,project=jl123,scope=project,application=capture",
	        "uuid": "fe6b1bf5-7ce4-4765-8e2a-e3dda6a1d839"
	      },
	      {
	        "displayName": "Document Editors-JL123-BillofLading",
	        "distinguishedName": "cn=documenteditors,class=billoflading,project=jl123,scope=projectclass,application=capture",
	        "uuid": "e18ee7f9-7f25-4ac0-8435-6923762de966"
	      },
	      {
	        "displayName": "Document Editors-JL123-UtilityBill",
	        "distinguishedName": "cn=documenteditors,class=utilitybill,project=jl123,scope=projectclass,application=capture",
	        "uuid": "b1198b5c-55f1-49c7-8607-741bb2856781"
	      },
	      {
	        "displayName": "Document Owners-JL123-BillofLading",
	        "distinguishedName": "cn=documentowners,class=billoflading,project=jl123,scope=projectclass,application=capture",
	        "uuid": "3342f424-929e-433c-be0a-0a339d95d1aa"
	      },
	      {
	        "displayName": "Document Owners-JL123-UtilityBill",
	        "distinguishedName": "cn=documentowners,class=utilitybill,project=jl123,scope=projectclass,application=capture",
	        "uuid": "435f7476-95f6-42c3-b295-9f1925631352"
	      },
	      {
	        "displayName": "Document Viewers-JL123-BillofLading",
	        "distinguishedName": "cn=documentviewers,class=billoflading,project=jl123,scope=projectclass,application=capture",
	        "uuid": "b8602e0d-a3f6-466b-9598-217c88040e11"
	      },
	      {
	        "displayName": "Document Viewers-JL123-EnergyBill",
	        "distinguishedName": "cn=documentviewers,class=energybill,project=jl123,scope=projectclass,application=capture",
	        "uuid": "d075177c-c47e-4b5d-90de-97a81bf87646"
	      },
	      {
	        "displayName": "Document Viewers-JL123-Invoice",
	        "distinguishedName": "cn=documentviewers,class=invoice,project=jl123,scope=projectclass,application=capture",
	        "uuid": "b84af045-bac5-40f2-bfcc-4eda5ec262bf"
	      },
	      {
	        "displayName": "Document Viewers-JL123-UtilityBill",
	        "distinguishedName": "cn=documentviewers,class=utilitybill,project=jl123,scope=projectclass,application=capture",
	        "uuid": "2d9d90a1-7e69-45a0-8788-ca1efb6779ce"
	      }
	    ]
	  },
	  "status": {
	    "code": 200,
	    "message": "Retrieved the teams that are associated with the Project Identifier.",
	    "messageId": "FNRDD0018I"
	  }
	}