Purpose
Allows you to run a script to execute custom actions when users deactivate an agreement.
Example use case
Your company uses an external system to manage customer-specific agreement prices. To push agreed prices to that system when users publish an agreement, configure the Post Agreement Quote Publish Groovy extension point. To automatically update or remove those prices when users deactivate an agreement, configure the Post Agreement Deactivate extension point.
Setup
Upload the script for Post Agreement Deactivate.
For details about uploading and configuring Groovy scripts, read Upload a Groovy script.
Binding variables
In addition to the common binding variables, the following binding variables are available for this extension point.
Variable name | Class | Description |
|---|---|---|
agreement | Agreement | Represents the published agreement. Contains functions you can use to query and modify the agreement. |
agreementHeader | AgreementHeader | Represents the AgreementHeader object. Contains functions you can use to query and modify the agreement and its line items. |
Expected output
No output expected.
Script execution
A script that you upload for this extension point runs automatically when users deactivate an agreement. If you use the agreement and agreementHeader variables in the script to modify the agreement data, the system applies changes to the agreement object associated with the published agreements.
If no script is uploaded for this extension point, the system deactivates agreements without additional actions.
Sample script
// Import necessary classes for the script
import com.imc.vocabulary.Schema
import com.imc.iss.groovy.agreements.Agreement
import com.imc.iss.groovy.agreements.AgreementHeader
import com.imc.iss.groovy.agreements.AgreementLine
// Script purpose: Modify Agreement objectName, Header, and Double Policy Values
System.out.println('=== Script Execution: Agreement Deactivate Started ===')
// Agreement section
def agreementObjectName = agreement.getAgreementDataAttributeValue(
Schema.objectName.getUriAsString()
)
System.out.println('Agreement URI: ' + agreement.getAgreementURI())
System.out.println('Agreement Object Name: ' + agreementObjectName)
agreement.setAgreementDataAttribute(
Schema.objectName.getUriAsString(),
agreementObjectName + ' - Deactivate'
)
System.out.println('→ Added suffix "Deactivate" in Agreement objectName')
System.out.println('--- Agreement Section Completed ---')
// AgreementHeader section
System.out.println('=== Script Execution: AgreementHeader Started ===')
def agreementHeaderObjectName = agreementHeader.getAgreementHeaderDataAttributeValue(
Schema.objectName.getUriAsString()
)
def agreementHeaderStartDate = agreementHeader.getAgreementHeaderDataAttributeValue(Schema.agreementHeaderStartDate.getUriAsString())
def agreementHeaderEndDate = agreementHeader.getAgreementHeaderDataAttributeValue(Schema.agreementHeaderEndDate.getUriAsString())
System.out.println('AgreementHeader Object Name: ' + agreementHeaderObjectName)
System.out.println('AgreementHeader Start Date: ' + agreementHeaderStartDate)
System.out.println('AgreementHeader End Date: ' + agreementHeaderEndDate)
agreementHeader.setAgreementHeaderDataAttribute(
Schema.objectName.getUriAsString(),
agreementHeaderObjectName + ' - Deactivate'
)
System.out.println('→ Added suffix "Deactivate" in AgreementHeader objectName')
System.out.println('--- AgreementHeader Section Completed ---')
// AgreementLine policy update
System.out.println('=== Doubling the Policy Value at All Levels of AgreementLine: Started ===')
for (AgreementLine agreementLine : agreementHeader.getAgreementLines()) {
doublePolicyValue(agreementLine)
}
// Helper method: double policy value recursively
void doublePolicyValue(AgreementLine agreementLine) {
def position = agreementLine.getAgreementLineDataAttributeValue(Schema.agreementLinePosition.getUriAsString())
def policyValue = agreementLine.getAgreementLinePolicyValue()
def newPolicyValue = 2 * policyValue
agreementLine.setAgreementLineDataAttribute(
Schema.agreementLinePolicyValue.getUriAsString(),
newPolicyValue
)
System.out.println("Policy Value at position ${position}: Prev=${policyValue}, Now=${newPolicyValue}")
List<AgreementLine> childLines = agreementLine.getAgreementLines()
for (AgreementLine child : childLines) {
doublePolicyValue(child)
}
}
System.out.println('=== Doubling the Policy Value at All Levels of AgreementLine: Completed ===')
// Script end
System.out.println('=== Script Execution: Agreement Deactivate Completed ===')
return agreement