This guide explains how to configure SAP SLT replication syncs to use the OData API, and how to migrate existing syncs from the legacy ODP API to OData. It covers batch and streaming syncs on both the SAP SLT source and the SAP (Custom source) connector when used for SLT replication.
SAP SLT syncs read change data from the Operational Delta Queue (ODQ) on the SLT Replication Server. Foundry can reach the ODQ through one of two APIs on the Palantir Foundry Connector 2.0 for SAP Applications ("Connector"):
PALODATA component of the Connector provides this API.SAP is restricting access to the ODP-RFC API, as described in SAP Note 3255746 ↗. Customer and third-party applications are no longer permitted to use the RFC modules of the ODP Data Replication API. SAP's public ODP FAQ explains that SAP's security patch rejects unauthorized ODP-RFC calls. Once that patch is applied to your SAP system, SLT syncs that still use the ODP API will fail. Ask your SAP Basis team when the patch will be applied to each of your systems, and migrate before then.
This guide applies to SLT replication syncs only:
Local table syncs on an SAP SLT source and other SAP object types (such as ERP tables, InfoProviders, or extractors) do not use the API selection described in this guide. Contact Palantir Support for guidance on object types that are not listed above.
Existing syncs are migrated in place. The sync keeps its source and its output dataset or stream.
Review these differences before you migrate a sync:
The OData API has requirements in the SAP system and in Foundry. All four requirement groups in the table must be met before you configure a sync to use OData.
| Source and sync type | SAP prerequisites | Foundry connector | Foundry user interface |
|---|---|---|---|
| SAP SLT source, batch sync | Common SAP prerequisites | Supported | API version card and Reset queue registration card in the batch sync editor. Reset incremental state optional property. |
| SAP SLT source, streaming sync | Common SAP prerequisites | Supported | API version card, Reset queue registration card, and Force snapshot setting in the streaming sync editor. |
| SAP (Custom source), batch sync with the SLT object type | Common SAP prerequisites | Requires a connector release that supports OData for legacy SLT batch syncs | API version card in the batch sync editor. Reset incremental state optional property. Reset queue registration is not available. |
| SAP (Custom source), streaming sync | Common SAP prerequisites, plus a source with an explicit SLT connection type | Supported | API version card, Reset queue registration card, and Force snapshot setting in the streaming sync editor. |
The following SAP-side requirements apply to all four source and sync types. They are SAP add-on versions, and they are separate from the Foundry connector requirements in the table above.
PALANTIR and PALCONN components must be on SP34 or later. We recommend upgrading to SP39 Fix Pack 4 or later before you migrate, to pick up the latest OData functionality.PALODATA component installed on the SLT system. Learn more about installing the Connector for SLT.SICF services active, as described in Activate SICF services.Ask your SAP Basis team to confirm the installed component versions on the SLT Replication Server:
SAP_BASIS: Release 750 with support package SAPK-75009INSAPBASIS or later, or a higher release.PALANTIR and PALCONN: Support package level SP34 or later. SP39 Fix Pack 4 or later is recommended.PALODATA: Present in the list.Foundry also checks the Connector version. In the API version card, the OData option displays one of the following messages if Foundry determines that the add-on cannot support OData:
This source's add-on is older than version 2.34 (SP34), which OData requires. Upgrade the Connector before you select OData.We couldn't confirm this source's add-on is version 2.34 (SP34) or newer, so OData might not work. Confirm the component versions in SAP as described above.Foundry connector and user interface updates are delivered by Palantir and do not have a version number that you need to manage. To confirm that your Foundry environment supports OData for a given sync type, open an existing sync of that type or start creating a new one. Then check for the controls listed in the compatibility table.
If the API version card does not appear for an SLT sync, OData selection is not yet available for that sync type on your enrollment. Do not attempt to configure OData by other means. Contact Palantir Support and include the source type, sync type, and SAP component versions.
Batch SLT syncs that use OData follow the standard Foundry transaction types:
If you change an APPEND sync to SNAPSHOT but keep its incremental settings, SAP still sends only the changes since the last run. The SNAPSHOT transaction then replaces the whole dataset with those changes, so the dataset can end up partial or empty. To reload the full table, turn on Reset incremental state, which automatically switches the sync to SNAPSHOT for the reload. Disabling Reset incremental state switches the transaction type back to APPEND.
pointer. OData syncs do not support other incremental fields.maxRowsPerSync (SAP (Custom source) Advanced tab) to split a large initial load across several runs. See Initial loads split across multiple runs.SAP's ODQ retains delta requests for a limited time. If an incremental OData sync runs less often than the retention period of your ODQ, the delta pointer can be lost and the sync fails. Schedule incremental syncs to run more often than your ODQ retention period, which defaults to 24 hours. Learn more in SAP Note 2888122 – ODATA ODP Delta not possible if latest delta request in source system deleted.
Existing batch syncs keep their source, output dataset, and transaction type when migrated.
Use this procedure for existing batch syncs whose Transaction type is APPEND. It performs one full reload of the table through OData and then resumes incremental ingestion.
pointer. Do not remove the incremental settings; the sync needs them to keep its subscription after the reload.ODQMON. The Connector no longer reads from that subscription. Terminating an unused subscription removes only queue and subscription data; it does not delete data from the SAP business table. Do not terminate subscriptions that belong to other consumers. Learn more about housekeeping for SLT subscriptions.Do not leave Reset incremental state turned on. While it is on, every run forces a new full initial load in SAP and replaces the dataset.
This section applies to incremental syncs, including the incremental batch migration procedure, whose steps are referenced below. If an incremental sync uses Max rows per sync (or maxRowsPerSync), the initial load is delivered across several runs:
SAP (Custom source) batch syncs must meet the following requirements before you select OData. If a requirement is not met, the run fails with an error that names the setting.
pointer.useKernelJsonSerialization: true to the sync in the Advanced tab. This changes how pages are encoded for transfer, not which rows are extracted.timestamp, resourceCheck, and debug settings must be true, false, ON, or OFF.filter, incrementalType, initialIncrementalValue, twinTable, twinMap, twinJoinConfigItems, incrementalSubTypes, incrementalComparator, trace, and continuousResourceCheck. Settings that apply only to other object types, such as BEx, function, or TSV-specific settings, must also be removed.If a sync uses filter, removing it changes which rows are extracted. Do not migrate that sync until you have an equivalent filter that the OData API supports. Contact Palantir Support for help expressing the filter.
The Parallel paging threads setting is ignored for OData syncs.
Streaming syncs do not use the SNAPSHOT and APPEND transaction types. A streaming sync holds its own SAP subscription, identified by the stream, and polls it for changes while the stream is running. Use Force snapshot to control how a stream starts:
| Situation | Force snapshot |
|---|---|
| New stream, no other OData subscription for the table and SAP user | Off |
| Existing stream migrating from ODP to OData | On for the first start after migration, then off |
| SLT trigger reset, or the stream's SLT pointer was lost | On for one start, then off |
| Another sync already holds the OData subscription for the table and SAP user | Resolve the subscription conflict in SAP before you start the stream |
Keep Reset queue registration turned off for streaming syncs. The setting only resets the stream's own OData subscription, which Force snapshot already does. It cannot take over a subscription held by another sync. While a stream runs, the setting is sent with every polling request rather than once, so the stream can repeatedly re-initialize and re-send the full table.
Turn off Force snapshot once the initial load has been received. If it is left on, the stream reloads the full table every time it restarts.
The following settings determine how a streaming sync connects to SAP. The SLT context is configured on the source, and all other settings are configured in the streaming sync editor.
| Setting | SAP SLT source | SAP (Custom source) | Value for OData |
|---|---|---|---|
| SLT context | Remote context on the source, in the format SLT~<Alias_Name> | connectionType.slt.context in the source YAML | The SLT queue alias. Unchanged by migration. |
| Table name | Streaming sync editor | Streaming sync editor | Unchanged by migration. |
| API version | Streaming sync editor | Streaming sync editor | OData |
| Force snapshot | Streaming sync editor | Streaming sync editor | On for the first start after migration only. See Migration stages. |
| Reset queue registration | Streaming sync editor | Streaming sync editor | Off. See Streaming syncs. |
| Poll interval and batch size | Streaming sync editor | Streaming sync editor | Unchanged by migration. |
SAP (Custom source) streaming syncs require a source with an explicit SLT connection type. Open the source configuration and confirm that the YAML contains a connectionType block like the following, where <context> is the SLT queue alias:
Copied!1 2 3 4 5 6 7type: magritte-sap-source url: https://<host>:<port>/sap/palantir usernamePassword: <username>:{{password}} connectionType: type: slt slt: context: <context>
If the block is missing, add it as described in Enable streaming syncs before you create or migrate a stream. Every streaming sync on the source uses this context. No other source setup is required for OData.
Use this procedure to switch an existing SAP SLT or SAP (Custom source) streaming sync to OData while keeping its source and output stream. Migrating a stream re-sends the full table into the existing stream, so plan for the replay before you start.
Move the stream through the following stages during migration. Use this table to confirm the configuration at each stage.
| Stage | Stream | API version | Force snapshot | Reset queue registration |
|---|---|---|---|---|
| Before migration | Running | ODP | Off | Not available |
| Reconfigure (steps 2–6) | Stopped | OData | On | Off |
| Initial load replay (steps 7–8) | Running | OData | On | Off |
| Steady state (step 9 onward) | Running | OData | Off | Off |
The stream does not carry an ODP checkpoint over to OData. On its first start with Force snapshot turned on, the stream requests a new initial load through its OData subscription. Later starts with Force snapshot off resume from the OData delta pointer that SAP holds for the stream.
/PALANTIR/TIMESTAMP column that streaming syncs always add.ODQMON, as described for incremental batch syncs.The OData API allows one active subscription per table for each SAP user. A conflict occurs when another sync, using the same SAP user, already holds the OData subscription for the table. Common causes include:
The error message includes the incremental ID, latest run date, and creator of the sync that holds the subscription. Use these details to identify the owning sync.
Reset queue registration does not resolve a conflict. It resets only the current sync's own subscription. If a different sync holds the subscription, the run fails with You cannot reset this sync, an active sync is already configured for this table.
To resolve a conflict, choose one of the following options:
ODQMON. This removes the subscription only; it does not delete data from the SAP business table. The sync that held the subscription can no longer continue incrementally. If that sync is still needed, it requires a new initial load and the conflict returns, so use a different SAP user for one of the syncs instead.The API version card can report that the add-on is older than 2.34 (SP34). A run can also fail with an error stating that OData requires SAP add-on 2.34.0 (SP34) or later. In either case, upgrade the Connector and install PALODATA as described in Install a Support Package and Installation. Then check the component versions.
If an OData run fails while connecting to SAP, while ODP runs on the same source succeed:
PALODATA is installed and that SAP_BASIS is 7.50 SP09 or later.SICF services are active.Errors such as Only one active incremental sync is permitted per table per technical user or You cannot reset this sync, an active sync is already configured for this table indicate a subscription conflict. The error message includes details of the sync that holds the subscription.
If a batch sync replaces the whole dataset on each run, or a stream re-sends the full table, check for settings that were left on:
A running stream keeps the configuration it started with. To apply the change to a stream, stop the stream, turn the setting off, save, and start the stream again.
An incremental OData sync that runs as SNAPSHOT without Reset incremental state writes only the latest delta and replaces the dataset. To recover, follow the incremental batch migration procedure from step 2 to reload the full table, then return to APPEND.