2. SkyvvaSalesforce Sender Adapter in SAP Cloud Platform Integration
This document introduces the SkyvvaSalesforce Sender Adapter, which is used to bring data from Salesforce into SAP Cloud Integration (SAP CPI).
The adapter is configured on the sender side of an integration flow. It supports two independent ways of getting data out of Salesforce: subscribing to Salesforce events (PushTopic, Generic Events, Platform Events, or Change Data Capture) over CometD, or scheduling a recurring SOQL query against a SKYVVA Interface.
The following example shows a simple end-to-end integration flow:
Figure 1. End-to-end sample integration flow using the SkyvvaSalesforce sender adapter.
Context Before You Start
In short: this adapter is the entry point on the SAP CPI side for data coming out of Salesforce — an iFlow's sender channel, configured either to subscribe to a Salesforce event stream or to poll a SKYVVA Interface's own SOQL query on a schedule, so that Salesforce activity or record data starts an iFlow run in CPI.
Reasons to reach for it:
- You need SAP CPI to react to something happening in Salesforce (a record change, a platform event) as it happens, without CPI having to ask.
- You need SAP CPI to pull a set of Salesforce records on a recurring schedule (e.g. every night, every 15 minutes) using a query you control from a SKYVVA Interface record, rather than hand-building a Query REST call in the iFlow.
- Outbound-from-Salesforce scenarios where Salesforce is the source of truth and CPI (or a system behind it) needs to be notified or kept in sync — see Outbound Asynchronous Interface: Salesforce Account to SAP CPI and Outbound Synchronous Interface: Salesforce Account to SAP CPI (Request/Response) for the interface-side setup this channel calls into.
- Teams that need to understand every tab/field on this channel before choosing between event-driven and schedule-driven extraction.
2. Sender Adapter Configuration
Select SkyvvaSalesforce as the sender adapter in the SAP Cloud Integration integration flow.
The sender adapter includes the following main configuration areas:
- General
- Connection
- Processing
- Scheduler (a standard SAP-provided tab, relevant only for some Processing Mode/Operation combinations — see §9)
Figure 2. Selecting SkyvvaSalesforce as the sender adapter type.
The General tab identifies the channel itself, once SkyvvaSalesforce has been selected as the sender adapter:
| Parameter | Description |
|---|---|
| Name | The channel's display name in the iFlow. Editable free text. |
| Direction | Fixed to Sender — determined by which side of the iFlow the channel is placed on, not user-selectable here. |
| System | Fixed to Sender, matching Direction. |
| Description | Optional free-text notes about the channel. |
| Adapter Type | Fixed to SkyvvaSalesforce — identifies which adapter is handling this channel. |
| Transport Protocol | Fixed to https. |
| Message Protocol | Fixed to skyvva. |
The Direction/System/Adapter Type/Transport Protocol/Message Protocol values are all fixed by the adapter registration itself — only Name and Description are actually editable on this tab.
Figure 3. SkyvvaSalesforce sender channel — General tab (
Direction = Sender, Adapter Type = SkyvvaSalesforce).
3. Connection Tab
The Connection tab is used to configure authentication for the Salesforce connection. It works exactly the same way as on the receiver channel.
Configure the following settings:
| Parameter | Description |
|---|---|
| Authentication Type | Defines the authentication mechanism used to connect to Salesforce. |
| OAuth2 Flow | Defines the OAuth2 flow used for authentication. |
| Login URL | Specifies the Salesforce login URL. |
| User Credential | Specifies the User Credential artifact when using the Username-Password Credential flow. |
| Client Credential | Specifies the OAuth2 Client Credentials artifact when using the Client Credential flow. |
Figure 4. SkyvvaSalesforce sender channel — Connection tab .
3.1 Authentication Type
The Authentication Type is currently fixed to: OAuth2
3.2 OAuth2 Flow
Select one of the following OAuth2 flows:
- Username-Password Credential (default)
- Client Credential
| OAuth2 Flow | Fields shown | Fields to fill in |
|---|---|---|
Username-Password Credential | User Credential and Client Credential | Both — see §3.4 and §3.5. |
Client Credential | Client Credential only | Client Credential only. |
3.3 Login URL
Enter the URL of the Salesforce organization.
Examples:
| Environment | Login URL |
|---|---|
| Sandbox | https://test.salesforce.com |
| Production | https://login.salesforce.com |
| My Domain | Your Salesforce My Domain URL |
3.4 User Credential
The User Credential field is displayed when: OAuth2 Flow = Username-Password Credential
Enter the name of the User Credential artifact deployed in SAP CPI.
The credential is configured under: Monitoring → Manage Security → Security Material
The User Credential contains the Salesforce username, password, and security token when required.
3.5 Client Credential
The Client Credential field specifies the OAuth2 Client Credentials artifact deployed in the SAP CPI keystore.
The credential contains the Salesforce Connected App or External Client App credentials, including:
- Consumer Key
- Consumer Secret
4. Processing Tab
The Processing tab opens with one top-level field that determines everything else on the tab:
| Field | Description |
|---|---|
| Processing Mode | Selects how the sender channel gets data out of Salesforce: Event Processing (default) subscribes to a Salesforce event stream; Schedule Processing polls a SKYVVA Interface's SOQL query on a recurring timer. |
Figure 5. SkyvvaSalesforce sender channel — Processing tab, Processing Mode selector.
5. Event Processing
When Processing Mode is set to Event Processing (the default), the Event Processing Details group appears:
| Field | Description |
|---|---|
| Event Type | Selects which kind of Salesforce event stream to subscribe to: PushTopic Events, Generic Events, Platform Events, or Change Data Capture Events. |
| Replay Id Approach | Selects where in the event stream to start receiving events from. |
| Replay Id | Only shown when Replay Id Approach = "Events from a specific position (Custom)". The specific replay position to resume from, e.g. 9. |
| Operation | Selects how the subscription is driven: Topic - Subscribe (continuous) or Topic - Polling (scheduled). |
| Poll Wait Time (in ms) | Only shown when Operation = Topic - Polling. How long each scheduled poll stays subscribed collecting events before disconnecting. |
| Channel Name | The Salesforce channel to subscribe to. Its expected prefix depends on the selected Event Type — see §5.4. |
| Max Buffer Size (in bytes) | The maximum capacity reserved for buffering incoming events. |
| Message Expiration (in ms) | How long a processed event's replay ID is remembered for duplicate-detection, minimum 300000 ms (5 minutes). |
| Subscription Mechanism | Whether the subscription runs on every runtime node or on a single node only. |
| Subscription Behaviour On Reset | Where a resubscription (after an error, restart, or redeploy) resumes from. |
| Max Network Delay (in ms) | The maximum time the client waits for a response to a connect request before timing out. |
Figure 6. SkyvvaSalesforce sender channel — Processing tab, Event Processing Details .
5.1 Event Type
Select the kind of Salesforce event to subscribe to:
| Event Type | Description |
|---|---|
PushTopic Events | Classic SOQL-based PushTopic notifications on record changes. Default. |
Generic Events | Custom notification channels published by Salesforce Apex/flows. |
Platform Events | Custom event objects (__e suffix) published by Salesforce. |
Change Data Capture Events | Standard or custom object change events published automatically by Salesforce CDC. |
5.2 Replay Id Approach
Select where in the event stream the subscription should start:
| Replay Id Approach | Description |
|---|---|
Events from latest position (Earliest) | Default. |
Events from earliest position (Latest) | |
Events from a specific position (Custom) | Enables the Replay Id field (§5.3) to enter an exact replay position. |
5.3 Replay Id
Shown only when Replay Id Approach = Events from a specific position (Custom).
Enter the exact Replay ID to resume the subscription from. The Replay ID is populated by Salesforce and refers to the position of an event within its stream, e.g. 9.
5.4 Operation
Select how the subscription itself is driven:
| Operation | Description |
|---|---|
Topic - Subscribe | Default. Opens one continuous CometD subscription for the life of the channel; events are pushed to the iFlow as they arrive. The Scheduler tab (§9) is not used in this mode. |
Topic - Polling | Opens a short-lived CometD subscription on each scheduled poll (configured via the Scheduler tab, §9), collects whatever events arrive within Poll Wait Time, then disconnects. |
5.5 Poll Wait Time (in ms)
Shown only when Operation = Topic - Polling.
Specifies how long, in milliseconds, each scheduled poll stays subscribed and collects events before disconnecting.
Example: 30000 (30 seconds)
5.6 Channel Name
Enter the Salesforce channel to subscribe to. The field shown, and the prefix it expects, depends on the selected Event Type:
| Event Type | Channel Name prefix | Example |
|---|---|---|
PushTopic Events | /topic/ | /topic/Account |
Generic Events | /u/notifications/ | /u/notifications/ExampleUserChannel |
Platform Events | /event/ | /event/TestEvent__e |
Change Data Capture Events | /data/ | /data/AccountChangeEvent |
5.7 Max Buffer Size (in bytes)
Specifies the maximum capacity reserved for buffering incoming events.
Example: 10485760 (10 MB)
5.8 Message Expiration (in ms)
Specifies how long, in milliseconds, a processed event's replay ID is kept for duplicate-detection purposes. Minimum value: 300000 (5 minutes).
5.9 Subscription Mechanism
Select how the subscription is distributed across runtime nodes:
| Subscription Mechanism | Description |
|---|---|
Subscribe on all runtime nodes | Default. Creates a subscription on every runtime node in the tenant. |
Subscribe on one runtime node | Creates a single subscription on one worker node regardless of how many runtime nodes the tenant has. Recommended when the number of subscriptions is high across multiple runtime nodes. |
5.10 Subscription Behaviour On Reset
Select where a resubscription resumes from. Resubscription can happen for several reasons — an error in the subscription listener, a worker node restart, an iFlow redeployment, etc.
| Subscription Behaviour On Reset | Description |
|---|---|
Replay from last processed message | Restarts from the last replay ID successfully consumed by the iFlow. |
Replay from UI configured value | Default. Restarts from the replay ID defined in Replay Id Approach (§5.2). |
5.11 Max Network Delay (in ms)
Specifies the maximum time, in milliseconds, the client waits for a response to a connect request before timing out.
Example: 120000 (2 minutes)
6. Schedule Processing
When Processing Mode is set to Schedule Processing, the Schedule Processing group appears, and the channel is driven by the standard SAP Scheduler tab (§9) instead of any event subscription:
| Field | Description |
|---|---|
| Integration | The SKYVVA Integration that owns the Interface to poll. |
| Interface | The SKYVVA Interface whose own SOQL query (its Query__c field, maintained in Salesforce) is executed on each scheduled run. |
| Operation | Query (active records only) or Query All (also includes deleted/archived records). |
| Processing Package Size | Whether all records fetched in a run are emitted as one message (None) or re-chunked into fixed-size groups (Custom Package Size). |
| Custom Package Size | Only shown when Processing Package Size = Custom Package Size. The number of records per emitted message. |
Figure 7. SkyvvaSalesforce sender channel — Processing tab, Schedule Processing.
6.1 Integration
Enter the name of the SKYVVA Integration record in Salesforce that owns the Interface to be polled.
6.2 Interface
Enter the name of the SKYVVA Interface record in Salesforce to poll. The channel looks this Interface up by name (scoped to the selected Integration) and runs the SOQL query configured on that Interface record itself — the query is maintained in Salesforce, not typed into this adapter.
6.3 Operation
Select how the query behaves with respect to deleted/archived records:
| Operation | Description |
|---|---|
Query | Default. Returns active records only. |
Query All | Also returns deleted and archived records. |
6.4 Processing Package Size
Select how the records from a scheduled run are grouped into messages:
| Processing Package Size | Description |
|---|---|
None | Default. All records retrieved are emitted as a single message. |
Custom Package Size | Records are split into fixed-size groups, each emitted as its own message — see §6.5. |
Note: Salesforce returns query results in pages of up to 2000 records. When a query matches more records than fit in one page, the channel automatically continues fetching subsequent pages until Salesforce reports the query complete, regardless of the Processing Package Size setting.
6.5 Custom Package Size
Shown only when Processing Package Size = Custom Package Size.
Enter the number of records that should go into each emitted message.
Example: 50
7. Format
The Format group applies regardless of the selected Processing Mode:
| Parameter | Description |
|---|---|
| Payload Format | Defines the format of the message body placed on the exchange. |
| Pretty Print | Formats the outgoing payload for readability. |
7.1 Payload Format
Select the format of the message body:
| Payload Format | Description |
|---|---|
Application/XML | Default. |
Application/JSON |
7.2 Pretty Print
Enable to format the outgoing payload for readability.
8. Adapter Setting
The Adapter Setting group applies regardless of the selected Processing Mode:
| Parameter | Description |
|---|---|
| Logging option | Defines the logging level used by the adapter. |
| Salesforce Api Version | Specifies the Salesforce API version used by the channel. |
8.1 Logging option
Select the logging level for the channel.
Available options:
| Logging Option | Description |
|---|---|
Default | Normal adapter logging. This is the default value. |
Trace level | Provides the most detailed diagnostic logging. Use only when troubleshooting. |
Debug level | Provides detailed diagnostic information for troubleshooting. |
Info level | Logs general informational events. |
Warning level | Logs warning-level events and more severe events. |
Error level | Logs error-level events only. |
8.2 Salesforce Api Version
Specifies the Salesforce API version used for requests made by this channel.
Example: 53.0
Note: The sender channel requires the configured Salesforce API version to be 52.0 or higher, regardless of Processing Mode.
Figure 8. SkyvvaSalesforce sender channel — Processing tab, Format and Adapter Setting (screenshot to be added).
9. Scheduler Tab
Alongside General/Connection/Processing, the channel also exposes the standard SAP-provided Scheduler tab (the same one used by other SAP CPI adapters), offering the usual Schedule on Day and Schedule to Recur timer options.
Whether the Scheduler tab actually drives anything depends on the Processing Mode/Operation combination chosen on the Processing tab:
| Processing Mode | Operation | Scheduler tab used? |
|---|---|---|
Schedule Processing | — | Yes — its timer fires each scheduled query run (§6). |
Event Processing | Topic - Polling | Yes — its timer fires each bounded polling cycle (§5.4/§5.5). |
Event Processing | Topic - Subscribe | No — a warning is shown reminding you that Scheduler settings are ignored, since this mode runs a single continuous subscription instead of a timer. |
Figure 9. SkyvvaSalesforce sender channel — Scheduler tab (screenshot to be added).
10. Summary
The SkyvvaSalesforce Sender Adapter enables SAP Cloud Integration to receive data from Salesforce, either through event subscription or scheduled querying.
The main configuration areas are:
| Configuration Area | Purpose |
|---|---|
| Connection | Configures OAuth2 authentication and Salesforce connection details — identical to the receiver channel. |
| Processing Mode | Chooses between Event Processing and Schedule Processing; everything else on the Processing tab depends on this choice. |
| Event Processing | Subscribes to a Salesforce PushTopic, Generic Event, Platform Event, or Change Data Capture channel, continuously or on a bounded poll. |
| Schedule Processing | Runs a SKYVVA Interface's own SOQL query on a recurring timer, with optional pagination into fixed-size message packages. |
| Format | Configures the payload format and pretty-printing of the message placed on the exchange. |
| Adapter Setting | Configures logging level and the Salesforce API version used by the channel. |
| Scheduler | The standard SAP timer tab driving Schedule Processing and Event Processing's polling operation. |