Newer Version Available
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.
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}