logComplianceEvaluations(loggingInputs)

Log compliance check events for control. This API supports a maximum number of 25 logs per request. You can make up to 200,000 audit log API calls per year.

API Version

64.0

Signature

public static ConnectApi.ComplianceLoggingResponse logComplianceEvaluations(ConnectApi.ComplianceLoggingInfo loggingInputs)

Parameters

loggingInputs
Type: ConnectApi.ComplianceLoggingInfo
Details of the logging request for a compliance evaluation.

Return Value

Type: ConnectApi.ComplianceLoggingResponse

Compliance bulk logging result.

Example

1public with sharing class ComplianceLoggingService {
2
3    /**
4     * Logs a single compliance event.
5     *
6     * This is a convenience wrapper that builds a single
7     * ComplianceControllogValue and delegates to the bulk
8     * logging method.
9     *
10     * @param controlVersionApiName API name of the control version (required)
11     * @param isCompliant Whether the compliance check passed (required)
12     * @param inContextOf Salesforce record ID providing business context (required)
13     * @param status SUCCESS or ERROR (required)
14     * @param complianceMessage Message describing the compliance result (optional)
15     * @param transactionKey External correlation ID for tracing across systems (optional)
16     * @return ConnectApi.ComplianceLoggingResponse
17     */
18    public static ConnectApi.ComplianceLoggingResponse logComplianceEvent(
19        String controlVersionApiName,
20        Boolean isCompliant,
21        String inContextOf,
22        String status,
23        String complianceMessage,
24        String transactionKey
25    ) {
26        // Create a single compliance log entry
27        ConnectApi.ComplianceControllogValue controllog =
28            new ConnectApi.ComplianceControllogValue();
29
30        controllog.controlVersionApiName = controlVersionApiName;
31        controllog.isCompliant = isCompliant;
32        controllog.inContextOf = inContextOf;
33        controllog.status = status;
34        controllog.complianceMessage = complianceMessage;
35        controllog.transactionKey = transactionKey;
36        
37        // Add to a list and invoke the bulk logging API
38        List<ConnectApi.ComplianceControllogValue> controllogs =
39            new List<ConnectApi.ComplianceControllogValue>();
40        controllogs.add(controllog);
41
42        return logComplianceEvents(controllogs);
43    }
44    
45    /**
46     * Logs multiple compliance events in a single API call.
47     *
48     * Use this method when logging multiple control evaluations
49     * to reduce API calls and improve performance.
50     *
51     * @param controllogs List of compliance log entries
52     * @return ConnectApi.ComplianceLoggingResponse
53     */
54    public static ConnectApi.ComplianceLoggingResponse logComplianceEvents(
55        List<ConnectApi.ComplianceControllogValue> controllogs
56    ) {
57        try {
58            // Create the request payload for the Compliance Logging API
59            ConnectApi.ComplianceLoggingInfo input =
60                new ConnectApi.ComplianceLoggingInfo();
61            input.controllogs = controllogs;
62            
63            // Invoke the Industries Compliance Logging API
64            ConnectApi.ComplianceLoggingResponse response =
65                ConnectApi.IndustriesCompliance.logComplianceEvaluations(input);
66            
67            System.debug('Compliance logging successful. Response: ' + response);
68            return response;
69            
70        } catch (Exception e) {
71            // Log and rethrow as a domain-specific exception
72            System.debug(
73                LoggingLevel.ERROR,
74                'Error logging compliance events: ' + e.getMessage()
75            );
76            throw new ComplianceLoggingException(
77                'Failed to log compliance events: ' + e.getMessage(),
78                e
79            );
80        }
81    }
82    
83    /**
84     * Simple method using the same pattern as your working example.
85     *
86     * This method demonstrates a minimal compliance log
87     * with a default SUCCESS status and message.
88     *
89     * @param controlVersionApiName API name of the control version
90     * @param inContextOf Salesforce record ID providing context
91     * @param isCompliant Whether the compliance check passed
92     * @param transactionKey External correlation ID
93     * @return ConnectApi.ComplianceLoggingResponse
94     */
95    public static ConnectApi.ComplianceLoggingResponse logSimpleCompliance(
96        String controlVersionApiName, 
97        String inContextOf, 
98        Boolean isCompliant,
99        String transactionKey
100    ) {
101        List<ConnectApi.ComplianceControllogValue> controllogs =
102            new List<ConnectApi.ComplianceControllogValue>();
103
104        ConnectApi.ComplianceControllogValue controllog =
105            new ConnectApi.ComplianceControllogValue();
106
107        controllog.transactionKey = transactionKey;
108        controllog.inContextOf = inContextOf;
109        controllog.controlVersionApiName = controlVersionApiName;
110        controllog.status = 'SUCCESS';
111        controllog.complianceMessage = 'Is Compliant';
112        controllog.isCompliant = isCompliant;
113
114        controllogs.add(controllog);
115
116        ConnectApi.ComplianceLoggingInfo input =
117            new ConnectApi.ComplianceLoggingInfo();
118        input.controllogs = controllogs;
119
120        // Call the Compliance Logging API
121        ConnectApi.ComplianceLoggingResponse response =
122            ConnectApi.IndustriesCompliance.logComplianceEvaluations(input);
123        return response;
124    }
125    
126    /**
127     * Custom exception for compliance logging errors.
128     *
129     * Used to wrap lower-level exceptions thrown during
130     * Compliance Logging API invocation.
131     */
132    public class ComplianceLoggingException extends Exception {}
133}