The Integration Configuration Workbook serves as the primary blueprint for designing, documenting, and implementing technical interfaces. This document is a modular template designed specifically for Integration Leads and Developers to standardize the transition from high-level requirements to detailed technical execution.
The objective of this workbook is to provide a "single source of truth" for all integration logic. Rather than starting from scratch for every integrations, users can select the relevant modules (bits and pieces) applicable to their specific use case.
Once finalized, the data captured here serves as the foundation for the Functional Specifications and technical documentation maintained within Confluence.
Property | Value |
Integration Name | [e.g., ERP Order Submission] |
Integration ID/Reference | [e.g., INT-001] |
Direction | [Inbound / Outbound / Bidirectional] |
Integration Pattern | [Synchronous / Asynchronous / Batch / Event-Driven] |
Source System | [e.g., Salesforce CRM] |
Target System | [e.g., SAP ERP] |
Technical Owner | [Name / Email] |
Business Owner | [Name / Email] |
Expected Volume | [e.g., 1000 records/day] |
SLA Requirements | [e.g., Response within 5 seconds] |
[Describe the business purpose and use case for this integration...]
Inbound Integration: External systems call Salesforce APIs. Configure a Connected App for authentication and document the Salesforce API endpoints to be exposed.
Setting | Value | Required |
Connected App Name | [e.g., ERP_Integration_App] | Required |
API Name | [e.g., ERP_Integration_App] | Required |
Contact Email | [admin@company.com] | Required |
Description | [Connected App for ERP integration] | Optional |
Setting | Value |
OAuth Flow | [JWT Bearer / Client Credentials / Web Server & Refresh Token / Username-Password] |
Callback URL | |
Consumer Key | [Generated after creation] |
Consumer Secret | [Generated after creation - store securely] |
Scope | Description | Selected |
api | Access and manage your data | [Yes/No] |
refresh_token | Perform requests at any time (offline_access) | [Yes/No] |
full | Full access | [Yes/No] |
id | Access identity URL service | [Yes/No] |
Setting | Value |
Enable Client Credentials | [Yes/No] |
Run As User | [Integration User] |
Setting | Value |
Use Digital Signatures | [Yes/No] |
Certificate Name | [e.g., JWT_Certificate] |
Setting | Value |
IP Relaxation | [Enforce IP restrictions / Relax IP restrictions] |
Refresh Token Policy | [Expire after X hours / Valid until revoked] |
Permitted Users | [All users may self-authorize / Admin approved users] |
Setting | Value |
Require secret for Web Server Flow | [Yes/No] |
Require secret for Refresh Token Flow | [Yes/No] |
Require Proof Key for Code Exchange (PKCE) extension for Supported Authorization Flows | [Yes/No] |
Enable Refresh Token Rotation | [Yes/No] |
Issue JSON Web Token (JWT)-based access tokens for named users | [Yes/No] |
Setting | Value |
API Type | [REST API / SOAP API / Bulk API 2.0 / Composite API / GraphQL / Apex REST] |
API Version | [e.g., v59.0] |
Base URL | |
Endpoint Path | [e.g., /services/data/v59.0/sobjects/Account] |
HTTP Method | [GET / POST / PATCH / PUT / DELETE] |
Content-Type | [application/json / application/xml] |
Operation | Method | Endpoint |
Create Record | POST | /services/data/vXX.0/sobjects/{SObject}/ |
Get Record by ID | GET | /services/data/vXX.0/sobjects/{SObject}/{id} |
Update Record | PATCH | /services/data/vXX.0/sobjects/{SObject}/{id} |
Delete Record | DELETE | /services/data/vXX.0/sobjects/{SObject}/{id} |
Query Records (SOQL) | GET | /services/data/vXX.0/query/?q={SOQL} |
Composite Request | POST | /services/data/vXX.0/composite |
Composite Graph | POST | /services/data/vXX.0/composite/graph |
Bulk Job (Ingest) | POST | /services/data/vXX.0/jobs/ingest |
Apex REST Service | * | /services/apexrest/{YourEndpoint} |
Setting | Value | Required |
Username | [e.g., integrationuser@test.com] | Required |
License Type | [e.g., Salesforce Integration, Salesforce] | Required |
Profile | [e.g., Salesforce API Only System Integrations, Minimum Access ] | Required |
Role | [IT] | Required |
Permission Set Group | [e.g.: ERP_Integration_Access ] | Required |
Permission Set License(s) | [e.g.: Salesforce CPQ ] | Optional |
Outbound Integration: Salesforce calls external system APIs using the Integration Framework. Configure Named Credentials for authentication and create an INT_Outbound_Integration__c record.
Setting | Value | Required |
Named Credential Name | [e.g., ERP_API_Credential] | Required |
Named Credential API Name | [e.g., ERP_API_Credential] | Required |
URL | Required | |
External Credential | [e.g., ERP_External_Credential] | Required |
Generate Authorization Header | [Yes/No] | Optional |
Allow Formulas in HTTP Header | [Yes/No] | Optional |
Setting | Value |
External Credential Name | [e.g., ERP_External_Credential] |
Authentication Protocol | [OAuth 2.0 / JWT Token Exchange / JWT Bearer / Custom / No Auth] |
Token Endpoint URL | |
Scope | [e.g., api read write] |
Issuer (JWT) | [e.g., salesforce-client-id] |
Subject (JWT) | [e.g., service-account@company.com] |
Audience (JWT) | [e.g., https://api.external-system.com] |
Signing Certificate | [Certificate name in Salesforce] |
Header Name | Header Value | Description |
[X-API-Key] | [{!$Credential.ERP_External_Credential.ApiKey}] | [API Key for authentication] |
[X-Client-Id] | [your-client-id] | [Client identifier] |
Note: Remote Site Settings are required if NOT using Named Credentials, or for additional domains that need to be whitelisted.
Setting | Value |
Remote Site Name | [e.g., ERP_API_Site] |
Remote Site URL | |
Disable Protocol Security | [No (Recommended)] |
Description | [Remote site for ERP API integration] |
Integration Framework: This custom object stores the configuration for outbound integrations. Create one record for each integration endpoint.
Field (API Name) | Value | Required |
Name | [e.g., ERP_Order_Submission] | Required |
Integration Reference INT_Integration_Ref__c | [e.g., INT_ERP_ORDER_001] | Required |
Approach INT_Approach__c | [Callout / Click-Through] | Required |
Method INT_Method__c | [GET / POST / PUT / PATCH / DELETE] | Optional |
Named Credential INT_Named_Credential__c | [e.g., ERP_API_Credential] | Required |
Service Path INT_Service_Path__c | [e.g., /api/v1/orders] | Optional |
Timeout (ms) INT_Timeout__c | [e.g., 120000] | Optional |
Correlation ID Header INT_Correlation_Id_Header__c | [e.g., X-Correlation-Id] | Optional |
User Reference Header INT_User_Reference_Header__c | [e.g., X-User-Reference] | Optional |
Custom Auth Header INT_Custom_Auth_Header__c | [e.g., X-API-Key] | Optional |
Custom Auth Header Value INT_Custom_Auth_Header_Value__c | [Header value] | Optional |
Custom Auth Header 2 INT_Custom_Auth_Header2__c | [e.g., X-Client-Secret] | Optional |
Custom Auth Header Value 2 INT_Custom_Auth_Header_Value2__c | [Header value 2] | Optional |
Store Logs As Info INT_Store_Logs_As_Info__c | [Yes/No] | Optional |
Log HTTP Headers INT_Log_HTTP_Headers__c | [Yes/No] | Optional |
Field (API Name) | Value |
Mock Enabled INT_Mock_Enabled__c | [Yes/No] |
Mock Named Credential INT_Mock_Named_Credential__c | [e.g., Mock_ERP_API] |
Mock Service Path INT_Mock_Service_Path__c | [e.g., /mock/api/v1/orders] |
Field (API Name) | Value |
Clickthrough Base URL INT_Clickthrough_Base_URL__c |
Extended Integration Framework: EIF provides advanced features like asynchronous callouts, transformation engine integration, and platform event support. Configure EIF_Integration_Config__c records for enhanced capabilities.
Field (API Name) | Value | Required |
Name | [e.g., ERP_Order_Extended_Config] | Required |
Operation Code EIF_Operation_Code__c | [e.g., ORDER_SUBMIT] | Optional |
Outbound Integration Ref EIF_Integration_Setting_Ref__c | [e.g., INT_ERP_ORDER_001] | Required |
Callout Response Type EIF_Callout_Response_Type__c | [TRA_OrderSubmission_Srv.Response] | Optional |
Is Active EIF_Is_Active__c | [Yes/No] | Optional |
Integration Mechanism EIF_Integration_Mechanism__c | [Synchronous Callout / Asynchronous Callout / Platform Event] | Required |
Field (API Name) | Value |
Transformation Type EIF_Transformation_Type__c | [No Transformation / Transformation Engine / Custom Extension] |
Transformation Code EIF_Transformation_Code__c | [e.g., ORDER_TRANSFORM_001] |
Transformation Class EIF_Transformation_Class__c | [e.g., OrderTransformationService] |
Suppress Null Values EIF_Suppress_Elements_With_Null_Value__c | [Yes/No] |
Field (API Name) | Value |
Callout Response Type EIF_Callout_Response_Type__c | [e.g., OrderResponseWrapper] |
Note: These settings apply when Integration Mechanism is set to "Asynchronous Callout".
Field (API Name) | Value |
Max Retry Number EIF_Async_Callout_Max_Retry_Nr__c | [e.g., 3] |
Retry Interval (seconds) EIF_Async_Callout_Retry_Interval__c | [e.g., 60] |
Exclude Status Codes For Retry EIF_Exclude_Status_Codes_For_Retry__c | [e.g., 400,401,403,404] |
Async Callout Result Behavior EIF_Async_Callout_Result_Behavior__c | [See options below] |
Async Callout Result Handler EIF_Async_Callout_Result_Handler__c | [e.g., OrderCallbackHandler] |
Option | Selected | Description |
Fire Platform Event On Error | [Yes/No] | Publish platform event when callout fails |
Execute Callback Handler On Error | [Yes/No] | Execute Apex handler class on failure |
Fire Platform Event On Success | [Yes/No] | Publish platform event when callout succeeds |
Execute Callback Handler On Success | [Yes/No] | Execute Apex handler class on success |
Field (API Name) | Value |
Enable Platform Event Debugging EIF_Enable_Platform_Event_Debugging__c | [Yes/No] |
Mapping Definition is only to be used if the Transformation Type is set to Transformation Engine.
Field (API Name) | Value | Required |
Name | [e.g., ERP Order Transform] | Required |
Mapping Code EIF_Operation_Code__c | [e.g., ORDER_TRANSFORM_001] | Required |
Type Type__c | [e.g.,Standard] | Required |
Assign Initial Context to TRS_Assign_Initial_Context_To__c | [orderId] | Optional |
Is Active TRS_Is_Active__c | [Yes/No] | Optional |
Description TRS_Description__c | [Synchronous Callout / Asynchronous Callout / Platform Event] | Optional |
Suppress Null Elements TRS_Supress_Null_Elements__c | [Yes/No] | Optional |
Treat Empty Lists as Null Elements TRS_Treat_Empty_Lists_as_Null_Elements__c | [Yes/No] | Optional |
By Pass Validation Rules TRS_By_Pass_Validation_Rules__c | [Yes/No] | Optional |
JSON Template | ||
Refer to TRS - Import Configuration From Template | ||
Property | Value |
Certificate Name | [e.g., Integration_Certificate] |
Certificate Type | [Self-Signed / CA-Signed] |
Key Size | [2048 bits / 4096 bits] |
Expiration Date | [e.g., 2025-12-31] |
Purpose | [Describe what this certificate is used for] |
Security Notice: Never store actual secrets in this document. Use references to secure storage locations (e.g., Named Credentials, External Credentials, or secure vault).
Credential | Storage Location | Notes |
API Key | [e.g., External Credential: ERP_External_Cred] | [Notes] |
Client ID | [Storage location] | [Notes] |
Client Secret | [Storage location] | [Notes] |
Property | Value |
Authentication Type | [OAuth 2.0 / JWT / API Key / Basic Auth] |
Token Endpoint | |
Token Lifetime | [e.g., 3600 seconds] |
Refresh Token Lifetime | [e.g., 86400 seconds] |
[Describe the authentication flow step by step]
Property | Value |
Content-Type | [application/json / application/xml] |
{
"orderId": "ORD-001",
"customer": {
"id": "CUST-001",
"name": "Acme Corporation"
},
"items": [
{
"productId": "PROD-001",
"quantity": 10,
"unitPrice": 99.99
}
],
"totalAmount": 999.90
}
Salesforce Field | API Field | Type | Required | Notes |
[Order.OrderNumber] | [orderId] | [String] | [Yes/No] | [Notes] |
[Account.Name] | [String] | [Yes/No] | [Notes] | |
[...] | [...] | [...] | [...] | [...] |
{
"status": "success",
"externalId": "EXT-ORD-001",
"message": "Order created successfully",
"timestamp": "2024-01-15T10:30:00Z"
}
{
"status": "error",
"errorCode": "VALIDATION_ERROR",
"message": "Invalid order data",
"details": [
{
"field": "items",
"error": "At least one item is required"
}
]
}
API Field | Salesforce Field | Type | Notes |
[externalId] | [Order.External_Id__c] | [String] | [Notes] |
[status] | [Order.Integration_Status__c] | [String] | [Notes] |
[...] | [...] | [...] | [...] |
Status Code | Meaning | Salesforce Action |
200 OK | [Success] | [Update record with external ID] |
201 Created | [Resource created] | [Update record with external ID] |
400 Bad Request | [Validation error] | [Log error, notify user] |
401 Unauthorized | [Authentication failed] | [Refresh token, retry] |
403 Forbidden | [Access denied] | [Log error, escalate] |
404 Not Found | [Resource not found] | [Log error] |
429 Too Many Requests | [Rate limit exceeded] | [Retry with backoff] |
500 Internal Server Error | [External system error] | [Retry with backoff] |
503 Service Unavailable | [Service temporarily unavailable] | [Retry with backoff] |
Scenario | Handling Approach |
Timeout | [Retry up to X times with exponential backoff] |
Network Error | [Retry up to X times, then queue for later] |
Validation Error | [Log error, update record status, notify user] |
Authentication Error | [Refresh token and retry once] |
Rate Limiting | [Implement exponential backoff] |
Partial Success | [Process successful items, log failures] |
Setting | Value |
Max Retry Attempts | [e.g., 3] |
Initial Retry Delay | [e.g., 1 second] |
Backoff Multiplier | [e.g., 2x] |
Max Retry Delay | [e.g., 60 seconds] |
Retryable Status Codes | [e.g., 429, 500, 502, 503, 504] |
Non-Retryable Status Codes | [e.g., 400, 401, 403, 404] |
Setting | Value |
Log Level | [INFO / DEBUG / ERROR] |
Log Request Payload | [Yes/No] |
Log Response Payload | [Yes/No] |
Log HTTP Headers | [Yes/No] |
Monitoring Dashboard | [Link to dashboard] |
Alert Recipients | [Email addresses or Slack channel] |