SK SKYVVA Documentation

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:

Good fit for: End-to-end sequence: the sections below walk tab by tab — General, Connection, then Processing (top-level Processing Mode, then Event Processing or Schedule Processing depending on that choice, then Format and Adapter Settings) — and finally the standard SAP Scheduler tab that some of those modes rely on.

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:

The Connection tab is used to configure authentication and the Salesforce connection — it is identical in shape to the receiver channel's Connection tab. The Processing tab contains everything specific to how and when data is pulled from Salesforce.
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:
ParameterDescription
NameThe channel's display name in the iFlow. Editable free text.
DirectionFixed to Sender — determined by which side of the iFlow the channel is placed on, not user-selectable here.
SystemFixed to Sender, matching Direction.
DescriptionOptional free-text notes about the channel.
Adapter TypeFixed to SkyvvaSalesforce — identifies which adapter is handling this channel.
Transport ProtocolFixed to https.
Message ProtocolFixed 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:

ParameterDescription
Authentication TypeDefines the authentication mechanism used to connect to Salesforce.
OAuth2 FlowDefines the OAuth2 flow used for authentication.
Login URLSpecifies the Salesforce login URL.
User CredentialSpecifies the User Credential artifact when using the Username-Password Credential flow.
Client CredentialSpecifies 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:

The Client Credential field is always shown on this tab, regardless of which flow is selected. What the OAuth2 Flow selection actually controls is the User Credential field:
OAuth2 FlowFields shownFields to fill in
Username-Password CredentialUser Credential and Client CredentialBoth — see §3.4 and §3.5.
Client CredentialClient Credential onlyClient Credential only.

3.3 Login URL

Enter the URL of the Salesforce organization.

Examples:

EnvironmentLogin URL
Sandboxhttps://test.salesforce.com
Productionhttps://login.salesforce.com
My DomainYour 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:

This field is always shown, regardless of the selected OAuth2 Flow, and is always required.

4. Processing Tab

The Processing tab opens with one top-level field that determines everything else on the tab:

FieldDescription
Processing ModeSelects 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.
Below that, the tab shows one of two field groups depending on the selected Processing Mode, followed by two groups that always apply: Format and Adapter Setting.
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:

FieldDescription
Event TypeSelects which kind of Salesforce event stream to subscribe to: PushTopic Events, Generic Events, Platform Events, or Change Data Capture Events.
Replay Id ApproachSelects where in the event stream to start receiving events from.
Replay IdOnly shown when Replay Id Approach = "Events from a specific position (Custom)". The specific replay position to resume from, e.g. 9.
OperationSelects 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 NameThe 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 MechanismWhether the subscription runs on every runtime node or on a single node only.
Subscription Behaviour On ResetWhere 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 TypeDescription
PushTopic EventsClassic SOQL-based PushTopic notifications on record changes. Default.
Generic EventsCustom notification channels published by Salesforce Apex/flows.
Platform EventsCustom event objects (__e suffix) published by Salesforce.
Change Data Capture EventsStandard 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 ApproachDescription
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:

OperationDescription
Topic - SubscribeDefault. 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 - PollingOpens 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 TypeChannel Name prefixExample
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 MechanismDescription
Subscribe on all runtime nodesDefault. Creates a subscription on every runtime node in the tenant.
Subscribe on one runtime nodeCreates 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 ResetDescription
Replay from last processed messageRestarts from the last replay ID successfully consumed by the iFlow.
Replay from UI configured valueDefault. 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:

FieldDescription
IntegrationThe SKYVVA Integration that owns the Interface to poll.
InterfaceThe SKYVVA Interface whose own SOQL query (its Query__c field, maintained in Salesforce) is executed on each scheduled run.
OperationQuery (active records only) or Query All (also includes deleted/archived records).
Processing Package SizeWhether all records fetched in a run are emitted as one message (None) or re-chunked into fixed-size groups (Custom Package Size).
Custom Package SizeOnly 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:

OperationDescription
QueryDefault. Returns active records only.
Query AllAlso returns deleted and archived records.

6.4 Processing Package Size

Select how the records from a scheduled run are grouped into messages:

Processing Package SizeDescription
NoneDefault. All records retrieved are emitted as a single message.
Custom Package SizeRecords 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:

ParameterDescription
Payload FormatDefines the format of the message body placed on the exchange.
Pretty PrintFormats the outgoing payload for readability.

7.1 Payload Format

Select the format of the message body:

Payload FormatDescription
Application/XMLDefault.
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:

ParameterDescription
Logging optionDefines the logging level used by the adapter.
Salesforce Api VersionSpecifies the Salesforce API version used by the channel.

8.1 Logging option

Select the logging level for the channel.

Available options:

Logging OptionDescription
DefaultNormal adapter logging. This is the default value.
Trace levelProvides the most detailed diagnostic logging. Use only when troubleshooting.
Debug levelProvides detailed diagnostic information for troubleshooting.
Info levelLogs general informational events.
Warning levelLogs warning-level events and more severe events.
Error levelLogs error-level events only.
Use Default during normal operation. Use Trace or Debug only when troubleshooting, since these levels generate additional log data.

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 ModeOperationScheduler tab used?
Schedule ProcessingYes — its timer fires each scheduled query run (§6).
Event ProcessingTopic - PollingYes — its timer fires each bounded polling cycle (§5.4/§5.5).
Event ProcessingTopic - SubscribeNo — 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 AreaPurpose
ConnectionConfigures OAuth2 authentication and Salesforce connection details — identical to the receiver channel.
Processing ModeChooses between Event Processing and Schedule Processing; everything else on the Processing tab depends on this choice.
Event ProcessingSubscribes to a Salesforce PushTopic, Generic Event, Platform Event, or Change Data Capture channel, continuously or on a bounded poll.
Schedule ProcessingRuns a SKYVVA Interface's own SOQL query on a recurring timer, with optional pagination into fixed-size message packages.
FormatConfigures the payload format and pretty-printing of the message placed on the exchange.
Adapter SettingConfigures logging level and the Salesforce API version used by the channel.
SchedulerThe standard SAP timer tab driving Schedule Processing and Event Processing's polling operation.
Open this article in the interactive viewer →