Note: This release is in preview. Features described here don’t become generally available until the latest general availability date that Salesforce announces for this release. Before then, and where features are noted as beta, pilot, or developer preview, we can’t guarantee general availability within any particular time frame or at all. Make your purchase decisions only on the basis of generally available products and features.
Issue Multi-Root Insurance Policy Action
This action is available in API version 66.0 and later.
Supported REST HTTP Methods
- URI
- /services/data/v68.0/actions/standard/issueMultiRootInsurancePolicy
- Formats
- JSON, XML
- HTTP Methods
- POST
- Authentication
- Authorization: Bearertoken
Inputs
| Input | Details |
|---|---|
| issueMultiRootPolicyInputRep |
|
Outputs
| Output | Details |
|---|---|
| jobIdentifier |
|
Example
- POST
-
This sample request is for the Issue Multi-Root Insurance Policy action.
1{ 2 "inputs": [ 3 { 4 "issueMultiRootPolicyInputRep": { 5 "contextId": "c98a08a0a9725b7a7d42c35d02e49d80c77a5aae4ea687b0bf09a7997d2af3d3", 6 "insurancePolicy": { 7 "policyName": "Test Auto Ins policy Via REST", 8 "policyNumber": "PLC5678987", 9 "effectiveFromDate": "2024-01-01", 10 "effectiveToDate": "2024-12-31", 11 "referencePolicyNumber": "1011" 12 }, 13 "transactionRecord": { 14 "name": "Sold Policy Transaction" 15 }, 16 "billingRecord": { 17 "billDayOfMonth": 15, 18 "billToContact": "003xx000000001aEAA" 19 }, 20 "additionalInput": [ 21 { 22 "instanceKey": "AutoBundle2", 23 "additionalFieldsList": [ 24 { 25 "key": "AssetDescription__c", 26 "value": "Test_AssetDescription__c" 27 }, 28 { 29 "key": "SourceSystem", 30 "value": "Test_SourceSystem" 31 } 32 ] 33 }, 34 { 35 "instanceKey": "AutoDriver", 36 "additionalFieldsList": [ 37 { 38 "key": "ParticipantName", 39 "value": "Test_ParticipantName" 40 }, 41 { 42 "key": "Participant_Hometown__c", 43 "value": "Test_Participant_Hometown__c" 44 } 45 ] 46 }, 47 { 48 "instanceKey": "AutoRoot", 49 "additionalFieldsList": [ 50 { 51 "key": "Primary_Policy_Holder__c", 52 "value": "Test_Primary_Policy_Holder__c" 53 }, 54 { 55 "key": "PolicyDescription", 56 "value": "Test_PolicyDescription" 57 } 58 ] 59 }, 60 { 61 "instanceKey": "AutoBundle2_AutoComp1", 62 "additionalFieldsList": [ 63 { 64 "key": "Coverage_Description__c", 65 "value": "Test_Coverage_Description__c" 66 }, 67 { 68 "key": "Description", 69 "value": "Test_Description" 70 } 71 ] 72 } 73 ] 74 } 75 } 76 ] 77} -
This is a sample code to call the Issue Multi-Root Insurance Policy action from Apex.
1public with sharing class MultiRootPolicyIssuanceInvocable { 2 3 /** 4 * Execute Multi-Root Policy Issuance with parameters map 5 * Usage: MultiRootPolicyIssuanceInvocable.executeMultiRootIssuance(paramsMap); 6 * 7 * @param params Map of parameters: 8 * - contextId (String, REQUIRED) 9 * - policyName (String, optional) 10 * - policyNumber (String, optional) 11 * - referencePolicyNumber (String, optional) 12 * - effectiveFromDate (String, optional) 13 * - effectiveToDate (String, optional) 14 * - transactionName (String, optional) 15 * - additionalFields (Map<String, Map<String, String>>, optional) 16 */ 17 public static void executeMultiRootIssuance(Map<String, Object> params) { 18 // Extract and validate contextId (REQUIRED) 19 String contextId = (String) params.get('contextId'); 20 if (String.isBlank(contextId)) { 21 System.debug('ERROR: contextId is required'); 22 return; 23 } 24 25 // Multi-Root Issue Policy IA - Create the standard Invocable Action 26 Invocable.Action action = Invocable.Action.createStandardAction('issueMultiRootInsurancePolicy'); 27 28 // Instantiate the IA input object for Multi-Root Policy Issuance 29 // IMPORTANT: Use IssueMultiRootPolicyInputRep, NOT IssuePolicyIAInputRep 30 ConnectApi.IssueMultiRootPolicyInputRep policyInput = 31 new ConnectApi.IssueMultiRootPolicyInputRep(); 32 33 // Set context ID (REQUIRED) 34 policyInput.contextId = contextId; 35 36 // Extract optional parameters 37 String policyName = (String) params.get('policyName'); 38 String policyNumber = (String) params.get('policyNumber'); 39 String referencePolicyNumber = (String) params.get('referencePolicyNumber'); 40 String effectiveFromDate = (String) params.get('effectiveFromDate'); 41 String effectiveToDate = (String) params.get('effectiveToDate'); 42 String transactionName = (String) params.get('transactionName'); 43 Map<String, Map<String, String>> additionalFields = 44 (Map<String, Map<String, String>>) params.get('additionalFields'); 45 46 // Populate Insurance Policy details (using IA classes) - all optional 47 if (!String.isBlank(policyName) || !String.isBlank(policyNumber) || 48 !String.isBlank(referencePolicyNumber) || !String.isBlank(effectiveFromDate) || 49 !String.isBlank(effectiveToDate)) { 50 51 ConnectApi.InsPolicyIAInputRep insurancePolicy = 52 new ConnectApi.InsPolicyIAInputRep(); 53 54 if (!String.isBlank(policyName)) { 55 insurancePolicy.policyName = policyName; 56 } 57 if (!String.isBlank(policyNumber)) { 58 insurancePolicy.policyNumber = policyNumber; 59 } 60 if (!String.isBlank(referencePolicyNumber)) { 61 insurancePolicy.referencePolicyNumber = referencePolicyNumber; 62 } 63 if (!String.isBlank(effectiveFromDate)) { 64 insurancePolicy.effectiveFromDate = effectiveFromDate; 65 } 66 if (!String.isBlank(effectiveToDate)) { 67 insurancePolicy.effectiveToDate = effectiveToDate; 68 } 69 70 policyInput.insurancePolicy = insurancePolicy; 71 } 72 73 // Populate Transaction record (using IA transaction representation) - optional 74 if (!String.isBlank(transactionName)) { 75 ConnectApi.InsPolicyTrxnIAInputRep transactionRecord = 76 new ConnectApi.InsPolicyTrxnIAInputRep(); 77 transactionRecord.name = transactionName; 78 policyInput.transactionRecord = transactionRecord; 79 } 80 81 // Populate additional input for multi-root policies - optional 82 if (additionalFields != null && !additionalFields.isEmpty()) { 83 List<ConnectApi.InsPolicyAddlInputIARep> additionalInputList = new List<ConnectApi.InsPolicyAddlInputIARep>(); 84 85 for (String instanceKey : additionalFields.keySet()) { 86 ConnectApi.InsPolicyAddlInputIARep additionalInput = 87 new ConnectApi.InsPolicyAddlInputIARep(); 88 89 // Set instance key (e.g., "AutoSilver", "FamilyHealth") 90 additionalInput.instanceKey = instanceKey; 91 92 // Build additional fields list for this instance 93 Map<String, String> fieldsMap = additionalFields.get(instanceKey); 94 if (fieldsMap != null && !fieldsMap.isEmpty()) { 95 List<ConnectApi.AdditionalFieldIARep> fieldsList = new List<ConnectApi.AdditionalFieldIARep>(); 96 97 for (String fieldKey : fieldsMap.keySet()) { 98 ConnectApi.AdditionalFieldIARep field = new ConnectApi.AdditionalFieldIARep(); 99 field.key = fieldKey; 100 field.value = fieldsMap.get(fieldKey); 101 fieldsList.add(field); 102 } 103 104 additionalInput.additionalFieldsList = fieldsList; 105 } 106 107 additionalInputList.add(additionalInput); 108 } 109 110 policyInput.additionalInput = additionalInputList; 111 } 112 113 // Set invocation parameters 114 // IMPORTANT: Parameter name is issueMultiRootPolicyInputRep (camelCase) 115 action.setInvocationParameter('issueMultiRootPolicyInputRep', policyInput); 116 117 System.debug('Starting Multi-Root Policy Issuance Invocable Action (issueMultiRootInsurancePolicy)...'); 118 System.debug('Context ID: ' + contextId); 119 if (!String.isBlank(policyName)) { 120 System.debug('Policy Name: ' + policyName); 121 } 122 123 try { 124 // Invoke the action 125 List<Invocable.Action.Result> results = action.invoke(); 126 127 System.debug('Multi-Root Policy Issuance IA result = ' + results); 128 129 // Process results 130 for (Invocable.Action.Result result : results) { 131 if (result.isSuccess()) { 132 System.debug('SUCCESS: Multi-Root Policy Issuance completed successfully!'); 133 Object outputValue = result.getOutputParameters().get('jobIdentifier'); 134 if (outputValue != null) { 135 System.debug('Job Identifier: ' + outputValue); 136 } else { 137 System.debug('Multi-Root Policy Issuance job started - result: ' + result.getOutputParameters()); 138 } 139 } else { 140 System.debug('ERROR: Multi-Root Policy Issuance failed'); 141 System.debug('Error Details: ' + result.getErrors()); 142 } 143 } 144 145 } catch (Exception e) { 146 System.debug('EXCEPTION in Multi-Root Policy Issuance Invocable Action: ' + e.getMessage()); 147 System.debug('Stack Trace: ' + e.getStackTraceString()); 148 } 149 } 150} 151 152 153/* 154 * USAGE EXAMPLE: 155 * Copy and paste this code into Developer Console Execute Anonymous Window 156 */ 157Map<String, Object> params = new Map<String, Object>(); 158params.put('contextId', <your-context-id-here>); 159params.put('policyName', 'James Multi-Root Policy'); 160params.put('policyNumber', 'James Multi-Root Policy'); 161params.put('referencePolicyNumber', 'James1234'); 162params.put('effectiveFromDate', '2026-01-01'); 163params.put('effectiveToDate', '2026-10-31'); 164params.put('transactionName', 'Sold Policy Transaction'); 165 166// Build additional fields configuration 167Map<String, Map<String, String>> additionalFields = new Map<String, Map<String, String>>(); 168 169// Configuration for AutoSilver instance 170Map<String, String> autoFields = new Map<String, String>(); 171autoFields.put('PolicyName', 'James Auto Policy'); 172autoFields.put('Name', 'James Auto Policy'); 173additionalFields.put(<your-instanceKey-goes-here>, autoFields); 174 175// Configuration for FamilyHealth instance 176Map<String, String> healthFields = new Map<String, String>(); 177healthFields.put('PolicyName', 'James Medical Policy'); 178healthFields.put('Name', 'James Medical Policy'); 179additionalFields.put(<your-instanceKey-goes-here>, healthFields); 180 181params.put('additionalFields', additionalFields); 182 183MultiRootPolicyIssuanceInvocable.executeMultiRootIssuance(params); -
This sample response is for the Issue Multi-Root Insurance Policy action.
1[ 2 { 3 "actionName": "issueMultiRootInsurancePolicy", 4 "errors": null, 5 "invocationId": null, 6 "isSuccess": true, 7 "outcome": null, 8 "outputValues": { 9 "jobIdentifier": "55SG000000PgSH4A0" 10 }, 11 "sortOrder": -1, 12 "version": 1 13 } 14]