11. How to Create a SKYVVA Inbound Interface Using Auto-Switch Mode with the SkyvvaSalesforce Adapter
Overview
This document explains how to create a SKYVVA Inbound Interface in Salesforce using Auto-Switch mode with the SkyvvaSalesforce Receiver Adapter in SAP Cloud Integration.
Auto-Switch mode automatically selects the appropriate processing method based on the number of root records received in a request.
Depending on the configured interface thresholds, the adapter can process the request using:
- Normal
- Batch
- Bulk
This tutorial covers:
- Creating and configuring the SKYVVA Inbound Interface in Salesforce.
- Configuring the Auto-Switch threshold settings.
- Creating the SAP CPI integration flow.
- Configuring the HTTPS Sender Adapter.
- Configuring the SkyvvaSalesforce Receiver Adapter.
- Deploying the integration flow.
- Testing different payload sizes with Postman.
- Monitoring the integration in SAP CPI and Salesforce.
Example Configuration
| Item | Value |
|---|---|
| Salesforce Objects | Account and Contact |
| Message Source | Postman |
| Middleware | SAP Cloud Integration |
| SKYVVA API Version | V3 |
| Adapter Mode | Auto-Switch |
| Interface Direction | Inbound |
| Processing Mode | Asynchronous |
| Operation Type | Upsert |
| Integrate Max Size | 200 |
| Integrate Batch Max Size | 5000 |
| Request Format | XML |
| Response Format | XML |
Context Before You Start
In short: Auto-Switch mode counts how many root records (Accounts, not counting nested Contact children) arrive in a request and picks one of three processing strategies automatically: Normal (one direct Apex call, no batching), Batch (the same direct-Apex-call mechanism, grouped into packages), or Bulk (SKYVVA's basket/attachment engine). Which one a given request gets depends purely on where its root-record count falls against two thresholds configured on the interface — Integrate Max Size and Integrate Batch Max Size.
Reasons to pick this path:
- You don't want to hand-pick a single fixed mode and have both small test calls and large
- You can keep everyday traffic on fast, direct processing while still having a path available
Good fit for:
- Traffic whose volume varies a lot between calls and where maintaining two separate
- Teams who want one interface/channel to handle both routine and occasional larger requests
End-to-end sequence: the steps below — create and configure the Interface (including the two Auto-Switch threshold fields) in Salesforce, build the CPI iFlow (HTTPS sender → SkyvvaSalesforce receiver with Mode = Auto-Switch), deploy, send test payloads of different sizes from Postman, then confirm which tier each one used and that the records landed in Salesforce.
⚠️ Note — sizeIntegrate Batch Max Sizeabove your real traffic. Requests whose
root-record count exceedsIntegrate Batch Max Sizeare handled by Bulk processing, which has
a per-file size limit and can fail on very large requests. SetIntegrate Batch Max Sizeabove
the largest number of root records you realistically expect in a single request, so your
traffic is always handled by Normal or Batch processing instead. If you do need to process
volumes larger than that in one request, contact SKYVVA support for guidance before relying on
Bulk processing for production traffic.
The processing method is selected according to the interface threshold settings:
| Root Record Count | Processing Method |
|---|---|
| Less than or equal to Integrate Max Size | Normal |
| Greater than Integrate Max Size and less than or equal to Integrate Batch Max Size | Batch |
| Greater than Integrate Batch Max Size | Bulk — see the note above before relying on this tier |
POSTMAN
↓
SAP CPI
↓
SkyvvaSalesforce Receiver
Mode = Auto-Switch
↓
SKYVVA Inbound Interface
│
├── Small request → Normal
├── Medium request → Batch
└── Large request → Bulk
↓
Salesforce
Figure 1. End-to-end message flow using Auto-Switch mode.
1. Salesforce Interface Development
1.1 Create the Inbound Interface
Create a SKYVVA Inbound Interface under the required Integration record in Salesforce.
For this example, the interface is named:
AccountContactAutoSwitch_IN
Leave the Message Type field blank. For a V3 Inbound interface, leaving Message Type unset is what triggers Hierarchical Mapping — there is no MetaData Provider/Repository/Message Type hierarchy to build first; the Mapping Tool derives the parent/child tree directly from Salesforce's own schema instead.
Configure the interface as follows:
| Setting | Value |
|---|---|
| Interface Name | AccountContactAutoSwitch_IN |
| Integration | Your SAP CPI Integration App record |
| Source/Target Name | Account |
| Status | Deployed |
| Interface Direction | Inbound |
| Processing Mode | Asynchronous |
| Operation Type | Upsert |
| Message Type | (leave blank) |
| External Mapping | Enabled |
Figure 2. SKYVVA Inbound Interface configuration — Message Type left blank, External Mapping enabled.
1.2 Configure the Hierarchical Mapping
Open the interface Mapping Tool.
For this example, the integration processes Account records with related Contact records.
The hierarchy is:
Account
│
└── Contact
With External Mapping enabled on the interface (§1.1), field-level mapping is not needed — External Mapping auto-maps fields by name on its own. All this step has to do is drag the two relationship nodes, top-down, to generate the chained sub-interface:
Recommended Mapping Order
- Drag the Account root node onto the target Account root first. This is required, not
"Warning! Please map its Parent first!" and silently does nothing.
- Expand the Contact child relationship and drag it onto the target Contact node. No individual
- Save the mapping.
Important — this step is not optional and cannot be replaced by External Mapping alone.
Dragging the Contact node in auto-creates a chained sub-interface behind the scenes (internal,
engine-managed — you don't create or configure it yourself), and that's the actual mechanism
that makes the Account+Contact hierarchy work at runtime. External Mapping only flat-maps
fields on an interface that already exists; it doesn't create this chained structure or walk
into child relationships on its own. Skip this step, and posting nested Contact data will not
produce Contact records, no matter how the payload is shaped.
⚠️ [SCREENSHOT NEEDED] Mapping Tool — Source tree showing the Account root expanded into
the Contact child relationship, with both nodes dragged onto their target counterparts (no
individual fields dragged/mapped).
Figure 3. Hierarchical Mapping Tool — Account and Contact relationship mapping.
1.3 Configure the Auto-Switch Thresholds
Auto-Switch behavior is controlled by threshold settings on the Salesforce interface.
These settings determine when SKYVVA switches between Normal, Batch, and Bulk processing.
Configure the following values according to your expected message volume:
| Setting | Example Value | Description |
|---|---|---|
| Integrate Max Size | 200 | Requests up to this number of root records use Normal processing. |
| Integrate Batch Max Size | 5000 | Requests above Integrate Max Size and up to this value use Batch processing. Requests above this value use Bulk processing. |
Root Records ≤ 200
↓
Normal Processing
Root Records > 200 and ≤ 5000
↓
Batch Processing
Root Records > 5000
↓
Bulk Processing
**Figure 4. Interface Auto-Switch threshold settings.
Important: don't leaveIntegrate Batch Max Sizeat the5000default without deliberately
checking it against your actual expected traffic — see the note in Context Before You Start.
Set it explicitly, above your real maximum root-record count per request, so it's a conscious
choice rather than an inherited default.
After completing the interface configuration and mapping, save the interface.
2. SAP CPI Development
2.1 Create the Integration Flow
In SAP Cloud Integration, navigate to Design and create an Integration Package.
Create a new Integration Flow.
Example:
| Item | Example |
|---|---|
| Integration Package | Skyvva_V4_Integration |
| Integration Flow | AccountContact_Skyvva_AutoSwitch |
- HTTPS Sender Adapter
- SkyvvaSalesforce Receiver Adapter
HTTPS Sender
↓
Start
↓
SkyvvaSalesforce Receiver
⚠️ [SCREENSHOT NEEDED] Integration flow canvas — Sender → Start → End → Receiver, showing
the HTTPS sender and SkyvvaSalesforce receiver shapes connected.
Figure 5. SAP CPI integration flow for Auto-Switch mode.
2.2 Configure the HTTPS Sender Adapter
Select the standard SAP HTTPS Sender Adapter.
General Tab
Configure the sender adapter according to your SAP CPI requirements.
⚠️ [SCREENSHOT NEEDED] HTTPS sender channel — General tab, showing Direction Sender,
Adapter Type HTTPS, Transport Protocol HTTPS, Message Protocol None.
Figure 6. HTTPS Sender Adapter — General tab.
Connection Tab
Configure the connection settings.
Example:
| Field | Example Value |
|---|---|
| Address | /skyvva/AccountContactIntegrateAutoSwitch |
| Authorization | User Role |
| User Role | ESBMessaging.send |
| CSRF Protected | Unchecked |
Important: The configured User Role must be assigned to the CPI user or credential used by Postman. Otherwise, SAP CPI may reject the request with a 403 Forbidden response.
⚠️ [SCREENSHOT NEEDED] HTTPS sender channel — Connection tab, showing the Address,
Authorization (User Role), User Role value, and CSRF Protected checkbox unchecked.
Figure 7. HTTPS Sender Adapter — Connection tab.
3. Configure the SkyvvaSalesforce Receiver Adapter
Select SkyvvaSalesforce as the receiver adapter.
The receiver channel includes the following main configuration areas:
- General
- Connection
- Skyvva
⚠️ [SCREENSHOT NEEDED] SkyvvaSalesforce receiver channel — General tab, showing Direction
Receiver, Adapter Type SkyvvaSalesforce, Transport Protocol https, Message Protocol skyvva.
Figure 8. SkyvvaSalesforce Receiver Adapter — General tab.
3.1 Connection Tab
Configure the Salesforce authentication settings.
| Field | Example Value |
|---|---|
| Authentication Type | OAuth2 |
| OAuth2 Flow | Username-Password Credential or Client Credential |
| Login URL | Your Salesforce login URL |
| User Credential | Your CPI User Credential artifact |
| Client Credential | Your CPI OAuth2 Client Credentials artifact |
| Environment | URL |
|---|---|
| Sandbox | https://test.salesforce.com |
| Production | https://login.salesforce.com |
| My Domain | Your Salesforce My Domain URL |
⚠️ [SCREENSHOT NEEDED] SkyvvaSalesforce receiver channel — Connection tab, showing
Authentication Type, OAuth2 Flow, Login URL, User Credential, and Client Credential fields.
Figure 9. SkyvvaSalesforce Receiver Adapter — Connection tab.
3.2 Skyvva Tab — Request Settings
Configure the Skyvva Request Settings as follows:
| Field | Value |
|---|---|
| Skyvva API Version | V3 |
| Integration | Your SKYVVA Integration |
| Interface | AccountContactAutoSwitch_IN |
| Mode | Auto-Switch |
| Request Format | XML |
| Response Format | XML |
| Skyvva App Version | Your installed SKYVVA version |
| Salesforce API Version | Your configured Salesforce API version |
⚠️ [SCREENSHOT NEEDED] SkyvvaSalesforce receiver channel — Skyvva tab, Request Settings
group with Skyvva API Version V3, Integration, Interface set toAccountContactAutoSwitch_IN, and Mode set to "Auto-Switch".
Figure 10. SkyvvaSalesforce Receiver Adapter — Request Settings.
Interface Processing Mode vs. Adapter Mode
The following settings are configured in different locations:
Salesforce Interface
Processing Mode = Asynchronous
SAP CPI Receiver Adapter
Mode = Auto-Switch
These settings are not duplicates.
The Processing Mode controls how the SKYVVA interface processes the message.
The Auto-Switch Mode determines which processing strategy is selected based on the number of root records in the incoming request.
3.3 Skyvva Tab — Adapter Settings
Configure the Adapter Settings.
Example:
| Field | Value |
|---|---|
| Logging Option | Default |
| Enable Retry for Fatal Connectivity Errors | Unchecked |
| HTTP Client Timeout | 60 seconds |
Increase the timeout when processing large requests that require additional time.
⚠️ [SCREENSHOT NEEDED] SkyvvaSalesforce receiver channel — Skyvva tab, Adapter Settings
group showing Logging Option, Enable Retry for Fatal Connectivity Errors, and HTTP Client
Timeout.
Figure 11. SkyvvaSalesforce Receiver Adapter — Adapter Settings.
After completing all configuration settings, save and deploy the integration flow.
⚠️ [SCREENSHOT NEEDED] Integration flow deployed and started confirmation (green/started
status in Manage Integration Content or the editor's deploy confirmation toast).
Figure 12. Integration Flow deployed successfully.
4. Get the SAP CPI Endpoint URL
Navigate to:
CPI
→ Monitoring
→ Manage Integration Content
Locate the deployed Integration Flow and copy the endpoint URL.
⚠️ [SCREENSHOT NEEDED] Manage Integration Content — Endpoints panel for this iFlow, showing
the copied endpoint URL.
Figure 13. Manage Integration Content — Endpoint URL.
Note: The endpoint URL shape depends on the tenant generation — Neo tenants usehttps://{{TenantId}}-iflmap.hcisbp.<region>.hana.ondemand.com/http/<Address>, current SAP BTP
Integration Suite (Cloud Foundry) tenants usehttps://{{TenantId}}.<runtime-cluster>.cfapps.<region>.hana.ondemand.com/http/<Address>.
Important: Always copy the exact endpoint URL displayed by your SAP CPI tenant instead of
assembling it by hand.
5. Testing with Postman
Auto-Switch mode should be tested with different payload sizes to confirm that the expected processing strategy is selected.
Using the example thresholds:
Integrate Max Size = 200
Integrate Batch Max Size = 5000
the following tests can be performed:
| Test | Root Account Records | Expected Processing |
|---|---|---|
| Small | Up to 200 | Normal |
| Medium | 201 to 5000 | Batch |
| Large | More than 5000 | Bulk — see the note in Context Before You Start before testing this row; keep Integrate Batch Max Size set above your real traffic so production requests don't land here |
⚠️ [SCREENSHOT NEEDED] Postman request configuration — POST method, endpoint URL,
Authorization matching the HTTPS sender's User Role, Content-Type header matching the Skyvva
tab's Request Format.
Figure 14. Postman request configuration.
5.1 Configure the Postman Request
Create a new request with the following configuration:
| Setting | Value |
|---|---|
| Method | POST |
| URL | Your SAP CPI endpoint URL |
| Authorization | Authentication configured for the HTTPS Sender |
| Content-Type | Match the configured Request Format |
Request Format = XML
configure the header as:
Content-Type: application/xml
5.2 Example Payload Structure
The payload must match the hierarchical structure configured in the SKYVVA interface. Under External Mapping, the adapter resolves each child node by walking the Account element's descendants looking for elements named after the mapped child object (Contact) — so nest Contact elements directly under Account, with no extra wrapper element in between:
<Accounts>
<Account>
<skyvvasolutions__ERP_DEBTOR_ID__c>ACC-000001</skyvvasolutions__ERP_DEBTOR_ID__c>
<Name>Test Account 1</Name>
<Phone>123456789</Phone>
<Contact>
<skyvvasolutions__ERP_CONTACT_ID__c>ACC-000001-C01</skyvvasolutions__ERP_CONTACT_ID__c>
<FirstName>John</FirstName>
<LastName>Smith</LastName>
</Contact>
</Account>
<Account>
<skyvvasolutions__ERP_DEBTOR_ID__c>ACC-000002</skyvvasolutions__ERP_DEBTOR_ID__c>
<Name>Test Account 2</Name>
<Phone>987654321</Phone>
<Contact>
<skyvvasolutions__ERP_CONTACT_ID__c>ACC-000002-C01</skyvvasolutions__ERP_CONTACT_ID__c>
<FirstName>Jane</FirstName>
<LastName>Doe</LastName>
</Contact>
</Account>
</Accounts>
Important: the actual XML element names and hierarchy must match the SKYVVA hierarchical
mapping configured in your Salesforce interface (§1.2).skyvvasolutions__ERP_DEBTOR_ID__c/skyvvasolutions__ERP_CONTACT_ID__care this example's External ID fields — since Operation
Type isUpsert, each object needs one populated or the upsert fails with "No External Id
Found In The Mapping." Adjust field names/values for your org. A ready-to-use generator script
and sample files at several sizes are available undertutorial/SkyvvaBulk/(originally built
for the Skyvva Bulk tutorial, but the same shape applies here).
⚠️ [SCREENSHOT NEEDED] Postman request and response for a Normal-tier or Batch-tier test
payload — the XML body sent and theNewstatus response received.
Figure 15. Postman request and response.
5.3 Expected Response
This example uses:
Processing Mode = Asynchronous
Therefore, the immediate response confirms that the request was accepted for processing.
The response does not necessarily mean that all Account and Contact records have completed processing.
Use SAP CPI and Salesforce monitoring to verify the final processing result.
6. Monitoring
6.1 SAP CPI Monitoring
Navigate to:
CPI
→ Monitor
→ Monitor Message Processing
Locate the message and verify that it completed successfully.
⚠️ [SCREENSHOT NEEDED] CPI Monitor Message Processing — the test message shown with a
completed/successful status.
Figure 16. SAP CPI Monitor Message Processing.
A successful CPI message indicates that the request was successfully processed through the SAP CPI integration flow.
6.2 Salesforce Monitoring
Navigate to:
Salesforce
→ Message Monitoring
Locate the message associated with:
AccountContactAutoSwitch_IN
Review the processing status and verify that the data was processed successfully.
⚠️ [SCREENSHOT NEEDED] Salesforce Message Monitoring, showing the processed message for
theAccountContactAutoSwitch_INinterface with a successful status.
Figure 17. Salesforce Message Monitoring.
6.3 Verify Salesforce Records
After processing is complete, verify the records in Salesforce.
Confirm that:
- Account records were created or updated successfully.
- Related Contact records were processed correctly.
- The expected field mappings were applied.
- No processing errors were reported.
Summary
The complete integration flow is:
Postman
↓
HTTPS Sender Adapter
↓
SAP Cloud Integration
↓
SkyvvaSalesforce Receiver Adapter
Mode = Auto-Switch
↓
SKYVVA Inbound Interface
↓
Auto-Switch Processing
│
├── Normal
├── Batch
└── Bulk
↓
Salesforce Account and Contact
Configuration Summary
| Component | Configuration |
|---|---|
| Interface Direction | Inbound |
| Interface Processing Mode | Asynchronous |
| Operation Type | Upsert |
| External Mapping | Enabled |
| Integrate Max Size | Example: 200 |
| Integrate Batch Max Size | Example: 5000 |
| SKYVVA API Version | V3 |
| Adapter Mode | Auto-Switch |
| Request Format | XML |
| Response Format | XML |
The processing strategy is automatically selected according to the number of root records in the incoming request and the threshold values configured on the SKYVVA interface.