From 2bc6bda6b5570986aca5cccdec391cc6688f369b Mon Sep 17 00:00:00 2001 From: Zhongwei Li Date: Sun, 30 Nov 2025 08:55:12 +0800 Subject: [PATCH] Initial commit --- .claude-plugin/plugin.json | 12 + README.md | 3 + SKILL.md | 264 ++++++++++++++ plugin.lock.json | 81 +++++ references/extensibility.md | 204 +++++++++++ references/features-complete.md | 328 +++++++++++++++++ references/glossary-and-pricing.md | 198 +++++++++++ references/integration-guides.md | 242 +++++++++++++ references/integration-models.md | 126 +++++++ references/monitoring.md | 285 +++++++++++++++ references/security-and-privacy.md | 256 ++++++++++++++ references/setup-guide-complete.md | 465 ++++++++++++++++++++++++ references/soap-api-reference.md | 545 +++++++++++++++++++++++++++++ 13 files changed, 3009 insertions(+) create mode 100644 .claude-plugin/plugin.json create mode 100644 README.md create mode 100644 SKILL.md create mode 100644 plugin.lock.json create mode 100644 references/extensibility.md create mode 100644 references/features-complete.md create mode 100644 references/glossary-and-pricing.md create mode 100644 references/integration-guides.md create mode 100644 references/integration-models.md create mode 100644 references/monitoring.md create mode 100644 references/security-and-privacy.md create mode 100644 references/setup-guide-complete.md create mode 100644 references/soap-api-reference.md diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json new file mode 100644 index 0000000..934de9b --- /dev/null +++ b/.claude-plugin/plugin.json @@ -0,0 +1,12 @@ +{ + "name": "sap-btp-master-data-integration", + "description": "Central master data hub on BTP for synchronizing master data. Covers MDI tenants, distribution models, SOAP APIs, One Domain Model integration, and extensibility.", + "version": "1.0.0", + "author": { + "name": "Zhongwei Li", + "email": "zhongweili@tubi.tv" + }, + "skills": [ + "./" + ] +} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..3ac38f8 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# sap-btp-master-data-integration + +Central master data hub on BTP for synchronizing master data. Covers MDI tenants, distribution models, SOAP APIs, One Domain Model integration, and extensibility. diff --git a/SKILL.md b/SKILL.md new file mode 100644 index 0000000..0142b29 --- /dev/null +++ b/SKILL.md @@ -0,0 +1,264 @@ +--- +name: sap-btp-master-data-integration +description: | + Configures and integrates SAP Master Data Integration (MDI) service on SAP Business Technology Platform. Use when setting up MDI tenants, connecting applications (S/4HANA, SuccessFactors, Ariba, Fieldglass, etc.), configuring distribution models, SOAP APIs for business partners, extensibility, or troubleshooting master data replication. Covers One Domain Model integration, Business Data Orchestration, client authentication (OAuth2, mTLS), and security configurations. +license: GPL-3.0 +metadata: + version: "1.1.0" + last_verified: "2025-11-27" +--- + +# SAP BTP Master Data Integration + +**Table of Contents** +- [Quick Reference](#quick-reference) +- [Core Concepts](#core-concepts) +- [Decision Trees](#decision-trees) +- [Setup Workflow](#setup-workflow) +- [System Limitations](#system-limitations) +- [Client Configuration](#client-configuration) +- [SOAP Endpoints](#soap-endpoints) +- [Common Integration Scenarios](#common-integration-scenarios) +- [Security Best Practices](#security-best-practices) +- [Troubleshooting](#troubleshooting) +- [Bundled Resources](#bundled-resources) + +SAP Master Data Integration (MDI) is a central master data hub on SAP BTP that enables applications to synchronize local master data databases with a centralized repository. + +## Quick Reference + +### What MDI Does +- Replicates master data between connected applications +- Supports 34 master data types via SAP One Domain Model +- Provides filtering to control data distribution scope +- Enables extensibility with custom fields + +### What MDI Does NOT Do +- Consolidation (use SAP Master Data Governance) +- Data quality control +- Central governance workflows +- Referential integrity validation + +## Core Concepts + +### Key Terms +| Term | Definition | +|------|------------| +| Tenant | Isolated MDI environment per subaccount with own database and configs | +| Client | Application that integrates with MDI (producing or consuming) | +| Producing Client | Sends change requests to MDI (upstream/writing client) | +| Consuming Client | Receives change events from MDI (downstream/reading client) | +| Distribution Model | Configuration controlling which data replicates where | +| Change Token | Unique identifier per change request (max 36 chars) | + +### Integration Models (SAP One Domain Model) + +**Business Partner** - v2.1.1, v3.3.0 (multiversion support restricted for address data) +**Finance** - Cost Center v3.1.0, Exchange Rate v4.0.0, Bank v3.0.0 +**Workforce** - Person v5.0.0, Job Classification v4.0.0, Organizational Unit v4.0.0 +**Procurement** - Purchasing Organization v4.0.0, Purchasing Group v6.0.0 +**Assets** - Equipment v5.1.0, Functional Location v5.0.0 +**Products** - Product v5.0.0, Product Group v5.0.0 + +For complete list see `references/integration-models.md` + +## Decision Trees + +### Which Service Plan? + +``` +Is application SAP-branded cloud? +├─ Yes → sap-integration plan (FREE) +└─ No → Is it SAP S/4HANA On-Premise? + ├─ Yes → s4hana-onpremise plan (PAID - storage + bandwidth) + └─ No → Use SAP Integration Suite with MDI Adapter +``` + +### Which Authentication Method? + +``` +Mutual-TLS with X.509 certificates available? +├─ Yes → Use mTLS (RECOMMENDED) +│ credential-type: x509 +│ Configure validity: DAYS/MONTHS/YEARS +└─ No → Use Client Credentials Grant (DEFAULT) + Uses client_id/client_secret pairs +``` + +### REST vs SOAP API? + +``` +Master data type is Business Partner? +├─ Yes → SOAP API available for: +│ - Business Partner replication +│ - BP Relationship replication +│ - Key Mapping replication +│ - Confirmations +└─ No → REST API (Events API, Requests API, KeyMapping API) +``` + +## Setup Workflow + +### 1. Prerequisites +- SAP BTP global enterprise account (no trial/free tier) +- Subaccount in supported region: EU10, US10, AP10, AP11 +- Cloud Foundry space within subaccount +- User with BusinessConfigurationAdmin role + +### 2. Create Tenant +``` +1. Create subaccount in available region +2. Subscribe to SAP Master Data Integration Tenant application +3. One tenant maximum per subaccount +4. Separate tenants for dev/test/prod recommended +``` + +### 3. Connect Application +``` +1. Create service instance (one per application - MANDATORY) +2. Choose service plan (sap-integration or s4hana-onpremise) +3. Set 'application' attribute (e.g., "s4" for S/4HANA Cloud) +4. Create service binding for credentials +5. Configure writePermissions for entity types +``` + +### 4. Configure Distribution Model +``` +1. Access Business Data Orchestration UI +2. Create distribution model (provider → consumer) +3. Set filters (object selection + data scope) +4. Activate model +``` + +## System Limitations + +| Limit | Value | +|-------|-------| +| Change Request Size | 256 KB (512 KB for Business Partner) | +| Master Data Record Size | 512 KB | +| Change Token Length | 36 characters max | +| Delta Token Validity | 28 days | +| SOAP Payload Size | 10 MB | +| Change Token Characters | a-z, A-Z, 0-9, -, _ | + +## Client Configuration Attributes + +### businessSystemId +- Required for SOAP API integration +- Max 60 characters, unique per tenant +- Must match SenderBusinessSystemID in SOAP messages + +### writePermissions +```json +"writePermissions": [ + { "entityType": "sap.odm.finance.costobject.CostCenter" }, + { "entityType": "sap.odm.businesspartner.BusinessPartner" } +] +``` + +### globalTenantId +- Identifies last significant writer on Events API +- 1-40 characters: alphanumeric, -, ., _, ~ +- Configure only if application documentation requires it + +### logSys +- Logical system of last significant writer +- Max 10 characters +- Configure only if application documentation requires it + +## SOAP Endpoints + +Base URL: `[https://one-mds.cfapps.{region}.hana.ondemand.com/businesspartner/v0/soap/`](https://one-mds.cfapps.{region}.hana.ondemand.com/businesspartner/v0/soap/`) + +| Purpose | Endpoint | +|---------|----------| +| BP Inbound | BusinessPartnerBulkReplicateRequestIn | +| BP Confirmation | BusinessPartnerBulkReplicateRequestConfIn | +| BP Relationship Inbound | BusinessPartnerRelationshipBulkReplicateRequestIn | +| BP Relationship Confirmation | BusinessPartnerRelationshipBulkReplicateRequestConfirmIn | +| Key Mapping Inbound | KeyMappingBulkReplicateRequestIn | +| Key Mapping Confirmation | KeyMappingBulkReplicateRequestConfirmIn | + +Authentication: Basic (clientid:clientsecret with tenantId param) or OAuth + +## Destination Naming Convention (SOAP) + +For business system ID `SYSTEMID`: +- `SYSTEMID_BPOUTBOUND` - Business Partner replication +- `SYSTEMID_BPCONFIRM` - Business Partner confirmation +- `SYSTEMID_BPRELOUTBOUND` - Relationship replication +- `SYSTEMID_BPRELCONFIRM` - Relationship confirmation +- `SYSTEMID_KMOUTBOUND` - Key Mapping replication +- `SYSTEMID_KEYMAPCONFIRM` - Key Mapping confirmation + +## Common Integration Scenarios + +### SAP S/4HANA Cloud +- 20 supported objects including Business Partner, Cost Center, Product +- Communication Arrangement: SAP_COM_0659 (MDI), SAP_COM_0594 (BDO) +- Single system cannot connect to multiple MDI tenants + +### SAP S/4HANA On-Premise +- 14 supported objects +- Uses drfimg transaction for configuration +- Outbound implementation: 986_3 for BP/REL via Services +- Requires SAP Note 3065614 + +### SAP SuccessFactors +- Employee Central: Bank, Company Code, Cost Center, Workforce +- Employee Central Payroll: Cost Center, Public Sector Management + +### SAP Ariba +- 9 categories: Business Partner-Supplier, Company Code, Cost Center, etc. + +For detailed integration guides see `references/integration-guides.md` + +## Security Best Practices + +1. **Always use HTTPS** - All MDI and XSUAA communications +2. **Validate certificates** - Never disable certificate validation +3. **Rotate compromised credentials** - Delete service key, create new one +4. **Minimal permissions** - Grant only necessary writePermissions +5. **Separate subaccounts** - Isolate MDI from unrelated BTP services + +## Troubleshooting + +### Delta Token Expired (28 days) +Clients must perform initial load if unable to sync within 28 days. + +### Change Request Rejected (Size) +Reduce payload size below 256 KB (512 KB for Business Partner). + +### Missing Mandatory Partner Function +Configure partner determination logic in MDI for C4C → S/4HANA scenarios. +Template available in SAP Note 2987243. + +### Platform Status +Check SAP Trust Center: [https://www.sap.com/about/cloud-trust-center/](https://www.sap.com/about/cloud-trust-center/) + +### Support Component +`BC-CP-CF-ONEMDS` + +## Bundled Resources + +### Core Documentation +1. `references/setup-guide-complete.md` (12.2K lines) - Complete setup guide with prerequisites, tenant management, client configuration, and version history +2. `references/glossary-and-pricing.md` (7.3K lines) - Comprehensive glossary, pricing tiers, qualifying applications, and maintenance windows +3. `references/features-complete.md` (11.6K lines) - All MDI features including REST/SOAP events, Local ID APIs, and data privacy + +### Integration Resources +4. `references/integration-models.md` (3.4K lines) - Complete ODM types and versions for all supported master data +5. `references/integration-guides.md` (6.8K lines) - System-specific setup guides for S/4HANA, SuccessFactors, Ariba, and more +6. `references/soap-api-reference.md` (17.7K lines) - Complete SOAP web services reference with field mappings + +### Advanced Topics +7. `references/security-and-privacy.md` (7.7K lines) - Security guidelines, data protection, and filtering configurations +8. `references/extensibility.md` (4.5K lines) - Custom extensions, field definitions, and WSDL generation +9. `references/monitoring.md` (7.3K lines) - Business Data Orchestration monitoring and troubleshooting + +## Documentation Sources + +**Primary Documentation**: [https://help.sap.com/docs/master-data-integration](https://help.sap.com/docs/master-data-integration) +**GitHub Source**: [https://github.com/SAP-docs/sap-btp-master-data-integration](https://github.com/SAP-docs/sap-btp-master-data-integration) +**API Catalog**: [https://api.sap.com](https://api.sap.com) (filter: SAP Master Data Integration) +**SAP Discovery Center**: [https://discovery-center.cloud.sap/serviceCatalog/master-data-integration](https://discovery-center.cloud.sap/serviceCatalog/master-data-integration) diff --git a/plugin.lock.json b/plugin.lock.json new file mode 100644 index 0000000..54aeb0b --- /dev/null +++ b/plugin.lock.json @@ -0,0 +1,81 @@ +{ + "$schema": "internal://schemas/plugin.lock.v1.json", + "pluginId": "gh:secondsky/sap-skills:skills/sap-btp-master-data-integration", + "normalized": { + "repo": null, + "ref": "refs/tags/v20251128.0", + "commit": "de62c01546c79fe9fc63a48a5e3acbb53067867f", + "treeHash": "af3dcb83afc5accd88a4e6457f8925220528ed41eb35027c61f371391cf32d42", + "generatedAt": "2025-11-28T10:28:13.234788Z", + "toolVersion": "publish_plugins.py@0.2.0" + }, + "origin": { + "remote": "git@github.com:zhongweili/42plugin-data.git", + "branch": "master", + "commit": "aa1497ed0949fd50e99e70d6324a29c5b34f9390", + "repoRoot": "/Users/zhongweili/projects/openmind/42plugin-data" + }, + "manifest": { + "name": "sap-btp-master-data-integration", + "description": "Central master data hub on BTP for synchronizing master data. Covers MDI tenants, distribution models, SOAP APIs, One Domain Model integration, and extensibility.", + "version": "1.0.0" + }, + "content": { + "files": [ + { + "path": "README.md", + "sha256": "c6566012b6f6385483f0ef4bebcb334d516dade1ed7f95d0850caa1f3cb96e77" + }, + { + "path": "SKILL.md", + "sha256": "aba5d529c584f1535827f38ff8dc60400bbf4b6d1a6db60026abcdda9afbb4fd" + }, + { + "path": "references/setup-guide-complete.md", + "sha256": "bdd6881642bfc9b0b942fb126659f7704770d3e232171e1e1914714c4ff9b6ce" + }, + { + "path": "references/extensibility.md", + "sha256": "555057fe4d4b50d4d9f93e75fe1beec9a4d939fd4e2a6903d31123eeca5e51d6" + }, + { + "path": "references/security-and-privacy.md", + "sha256": "c3047bba947e94a14f843b21984dc93595c9ab56475190063e08e1d81d149a3f" + }, + { + "path": "references/integration-guides.md", + "sha256": "3a8025eba926e49566bd8e6c326c26808305d64a89c16af1c8d0f153d148cf7a" + }, + { + "path": "references/features-complete.md", + "sha256": "31c16510edbfa1bfd35381bfce71408c2767caa19b2120fd025d204e3ebe5f86" + }, + { + "path": "references/glossary-and-pricing.md", + "sha256": "0d8fdd2c19b90aed6a171aa2b5e98bbcce366de73027df240d5efc16c5192ab5" + }, + { + "path": "references/integration-models.md", + "sha256": "7c2aaf5ae3b574d72c99e1796fc273b2b5a104c75ee108d5a9720bef8d5324e2" + }, + { + "path": "references/monitoring.md", + "sha256": "35fa7bc886816bd50be24487ee88fe817e6e5a5c4a9f381d5a1636517527d00c" + }, + { + "path": "references/soap-api-reference.md", + "sha256": "196afaad26d24c549003ac40afb25c09c6f41fe5e84f56ca445d74eba7e6b13a" + }, + { + "path": ".claude-plugin/plugin.json", + "sha256": "8f88179e364e96a3c70f8336e34dedafb4948b516b13d93a1c40a353522b6012" + } + ], + "dirSha256": "af3dcb83afc5accd88a4e6457f8925220528ed41eb35027c61f371391cf32d42" + }, + "security": { + "scannedAt": null, + "scannerVersion": null, + "flags": [] + } +} \ No newline at end of file diff --git a/references/extensibility.md b/references/extensibility.md new file mode 100644 index 0000000..62763f7 --- /dev/null +++ b/references/extensibility.md @@ -0,0 +1,204 @@ +# Extensibility + +Custom extensions for SAP Master Data Integration. + +**Source**: [https://github.com/SAP-docs/sap-btp-master-data-integration/blob/main/docs/initial-setup-and-administration/extensibility-7612e09.md](https://github.com/SAP-docs/sap-btp-master-data-integration/blob/main/docs/initial-setup-and-administration/extensibility-7612e09.md) + +## Overview + +SAP Master Data Integration enables custom extensions to integration models through field and node additions for master data objects like Business Partner, Product, and Workforce Person. + +## Why Extensibility? + +Standard SAP software covers many processes, but customer landscapes have specific requirements: +- Control business processes with custom attributes +- Enable distribution based on custom fields +- Support analytics functions + +## Configuration Methods + +### UI Method +Use **Manage Business Object Type** in Business Data Orchestration + +### API Method +Extensibility APIs for direct implementation, particularly for composition-based extensions. + +## Prerequisites + +| Requirement | Details | +|-------------|---------| +| Role | ExtensionDeveloper | +| Access | Assigned via BTP Cockpit role collections | + +## Extension Principles + +### Version Compatibility +- Extensions valid across compatible One Domain Model versions +- Extension in v2.0.0 applies to v3.0.0 automatically +- Does NOT apply to earlier versions + +### Immutability +**Critical**: Extension fields cannot be updated or deleted once created. + +### Scope +Extensions exist only within MDI. Ensure upstream and downstream applications support the extended fields. + +--- + +## Extension Types + +### Field-Level Extensions + +Supported primitive types: + +| Type | Additional Parameters | +|------|----------------------| +| String | Length constraints | +| Boolean | - | +| Date | - | +| DateTime | - | +| Double | - | +| Time | - | +| Integer | - | +| Decimal | Precision, scale | +| UUID | - | + +### Node-Level Extensions (Composition) + +Create new entity types within the extended model: + +| Property | Description | +|----------|-------------| +| type | "Composition" | +| relationship | "one" or "many" | +| fields | Array of embedded fields | + +--- + +## SOAP Integration Extensions + +### Supported Entities +- BusinessPartner +- BusinessPartnerRelationship + +### Namespace Requirement +Namespace prefix must begin with `extns` + +### soapParameters.target +Specifies corresponding SOAP model field name for cross-system mapping. + +--- + +## Extension API Workflow + +### 1. Create Extension + +```http +POST /extensibility/v1/businessObjectTypes/{type}/extensions +Content-Type: application/json +Authorization: Bearer {token} + +{ + "name": "customField", + "type": "String", + "length": 100 +} +``` + +### 2. Check Activation Status + +| Status | Description | +|--------|-------------| +| activationInProgress | Extension being processed | +| activated | Ready for use | +| failed | Activation error | + +### 3. Generate Extended WSDL + +After successful activation: + +```http +PUT /extensibility/v1/wsdl/generate +``` + +### 4. Retrieve WSDL + +```http +GET /extensibility/v1/wsdl/{serviceName} +``` + +Use for integration documentation and client configuration. + +--- + +## Extension Examples + +### Simple Field Extension + +```json +{ + "name": "customerPriority", + "type": "String", + "length": 20 +} +``` + +### Composition Extension (Node) + +```json +{ + "name": "customAddresses", + "type": "Composition", + "relationship": "many", + "fields": [ + { + "name": "addressType", + "type": "String", + "length": 10 + }, + { + "name": "isPrimary", + "type": "Boolean" + } + ] +} +``` + +--- + +## Using Extensions in Distribution Models + +Created extensions can be used as filter criteria: +1. Access Distribution Model configuration +2. Select extended fields in filter conditions +3. Apply object selection or data scope filters + +--- + +## Deprecation Notice + +| API | Status | Timeline | +|-----|--------|----------| +| Extensibility v0 API | Deprecated | Q2 2022 | +| Extensibility v1 API | Current | Use this | + +--- + +## Best Practices + +1. **Plan extensions carefully** - Cannot be modified or deleted +2. **Coordinate with applications** - Ensure upstream/downstream support +3. **Use consistent naming** - Follow organization conventions +4. **Document extensions** - Track all custom fields +5. **Test thoroughly** - Validate in non-production first +6. **Use appropriate types** - Match business requirements + +--- + +## Limitations + +- Extensions cannot be updated after creation +- Extensions cannot be deleted +- SOAP extensions limited to BusinessPartner and BusinessPartnerRelationship +- Namespace must start with `extns` for SOAP +- Custom extensions not included in API Business Accelerator Hub specifications diff --git a/references/features-complete.md b/references/features-complete.md new file mode 100644 index 0000000..a3b5f42 --- /dev/null +++ b/references/features-complete.md @@ -0,0 +1,328 @@ +# Complete Features Reference + +Comprehensive feature documentation for SAP Master Data Integration. + +## Table of Contents + +- [Core Features](#core-features) +- [Distribution Models](#3-distribution-models) +- [Filtering](#4-filtering) +- [Delta Tokens](#delta-tokens) +- [Extensibility](#extensibility) +- [Key Mapping](#key-mapping) +- [Events API](#events-api) +- [Requests API](#requests-api) +- [Business Data Orchestration](#business-data-orchestration) +- [Data Privacy](#sap-data-privacy-integration) +- [Monitoring](#monitoring) + +**Source**: [https://github.com/SAP-docs/sap-btp-master-data-integration/tree/main/docs/features](https://github.com/SAP-docs/sap-btp-master-data-integration/tree/main/docs/features) + +--- + +## Core Features + +### 1. Synchronization of Master Data + +MDI operates as a central master data hub where applications synchronize local databases with the central system. + +**Synchronization Phases**: +1. **Initial Load**: Applications perform initial data transfer to populate local systems +2. **Delta Loads**: Ongoing synchronization through REST Events API with change notifications + +**Key Characteristics**: +- One tenant typically serves all applications in a landscape +- REST APIs standard; SOAP APIs additionally available for business partners +- Delta loading eventually delivers same information for every application with identical filter settings + +### 2. Support for Initial Loads + +**Initial Upload (Producing Clients)** +Applications that create/modify master data load their local records into MDI as part of initial upload. + +**Initial Download (Consuming Clients)** +Applications receive initial master data copy from centralized service without affecting existing integration scenarios. + +**Key Benefit**: Eliminates need to integrate with multiple different applications in a landscape. + +### 3. Distribution Models + +Centralized repositories for distribution settings within Business Data Orchestration. + +**Components**: +- Model name and language-dependent description +- Object type and version specification +- Reference to SAP One Domain Model + +**Connectivity Options**: +- One provider with multiple consumers +- Multiple providers with one consumer +- **Recommended**: Always connect only one provider with one consumer + +**Current Limitation**: Only ABAP-based systems (S/4HANA, SAP Cloud Master Data Governance) can act as provider. + +### 4. Filtering + +Two filter types control data replication: + +| Filter Type | Purpose | +|------------|---------| +| Object Selection Filters | Determine which records are replicated | +| Data Scope Filters | Control which parts of records are replicated | + +**Benefits**: +- Reduces unnecessary data traffic +- Prevents irrelevant data replication +- Enables regional data boundaries + +--- + +## Local ID Sharing + +MDI maintains ID maps between global and local IDs with bidirectional lookup capability. + +### Three Core APIs + +| API | Purpose | +|-----|---------| +| RequestsAPI | Write local IDs and associated context to MDI | +| EventsAPI | Receive distributed local IDs and associated context | +| KeyMappingAPI | Bidirectional lookup between local and global IDs | + +**Benefit**: Destination applications can understand and respond to received information within their operational frameworks. + +--- + +## Multiwriter Scenarios + +When multiple clients have write access to the same master data type: + +### Conflict Prevention Mechanisms + +**Patches** +Send patches instead of full updates to preserve unrelated data modifications. + +**Optimistic Locking** +- System tracks version identifiers +- Client includes previously known version ID in update +- MDI rejects update if version ID doesn't match current version +- Client retrieves updated info and resubmits + +**SOAP Limitation**: SOAP APIs for Business Partner do NOT support version IDs or optimistic locking. + +--- + +## Multiversion Support + +Applications can use different compatible versions of SAP One Domain Model without disrupting integrations. + +**Example**: +- Application A transmits in version 3.0.0 +- Application B receives in version 2.1.1 + +**Requirements**: +- Works only between compatible versions +- No breaking changes (e.g., no field removals) + +**Limitation**: BusinessPartner v3.3.0 and v2.1.1 have restricted multiversion support for address data. + +--- + +## Extensibility + +Add custom fields and nodes to integration models. + +### Extension Types + +| Type | Description | +|------|-------------| +| Field-Level | Primitive types: String, Boolean, Date, DateTime, Double, Time, Integer, Decimal, UUID | +| Node-Level | Composition with relationship definitions (one/many) | + +### Key Rules +- Extensions valid across compatible ODM versions +- **Cannot be updated or deleted once created** +- SOAP extensions limited to BusinessPartner and BusinessPartnerRelationship +- SOAP namespace prefix must begin with `extns` + +### Activation Statuses +- activationInProgress +- activated +- failed + +--- + +## Schema Validation + +### What MDI Validates +- Data adherence to SAP One Domain Model integration models + +### What MDI Does NOT Validate +- Referential integrity +- References pointing to existing records +- Code list entry validity + +--- + +## Monitoring + +Business Data Orchestration provides end-to-end monitoring via SAP Cloud ALM integration. + +### Three Monitoring Views + +| View | Purpose | +|------|---------| +| Landscape (Monitor Master Data Distribution) | All clients and connections graphically | +| Connection (Display Distribution Status) | Status between specific client pairs | +| Object (Locate Object) | Single object distribution status | + +**Currently Available**: Connection view only + +### Technical Architecture +1. Clients report SAP Passport Events to SAP Cloud ALM +2. BDO imports logging every 5 minutes +3. Data aggregated into distribution status reports + +--- + +## REST Events (Complete List) + +Events sent to SAP Cloud ALM during REST API operations: + +| Event Code | Description | Details | +|------------|-------------|---------| +| ExistingInstanceId | Entity with given instance ID already exists | `[{id: instanceId}]` | +| EntityInstanceDoesNotExist | Entity with given instance ID does not exist | `[{id: instanceId}]` | +| ValidationError | Validation error during processing | `[{ValidationError: error message}]` | +| PatchFailed | Patch operation failed | `[{PatchFailed: error message}]` | +| InvalidPreviousVersionId | Invalid previous version ID | `[{id: instanceId}]` | +| UpdateOrDeleteOnDeletedInstance | Instance deleted, no longer supports operations | - | +| UpdateOrDeleteOnReplacedInstance | Instance replaced, no longer supports operations | - | +| MergeOnDeletedInstance | Instance not replaced, cannot be merged | `[{id: instanceId}]` | +| EntityInstanceReplacedByOtherInstance | Instance replaced by different instance | `[{id: instanceId},{replacedBy: instanceId}]` | +| DecodeError | Instance could not be decoded properly | - | +| UnexpectedStateError | Unexpected state condition | - | +| UnknownEntity | Unrecognized entity type | - | +| ReplacedError | Could not replace an event | `[{ReplacedFailure: error message}]` | +| ReplacementCycle | Cyclic references in replacedBy | - | +| InvalidLogicalKeys | Incorrect logical key structure | - | +| LocalIdError | LocalId operations malfunction | `{context, localId, status}` | +| NormalizationFailed | Could not normalize event | `[{NormalizationFailure: error message}]` | +| PrimaryMasterDataEventTooLarge | Internal record size exceeds limits | - | +| UnknownTenant | Unknown system for request | - | + +--- + +## SOAP Events (Complete List) + +### Inbound Event (1) +| Code | Description | +|------|-------------| +| BuPaDuplicateAddressId | Business Partner with given Address ID already exists | + +### Outbound Success Events (6) +| Code | Description | +|------|-------------| +| BuPaSent | BusinessPartner successfully sent to destination | +| BuPaRelSent | BusinessPartnerRelationship successfully sent | +| KmSent | KeyMapping successfully sent | +| BuPaConfirmationSent | BusinessPartner confirmation sent | +| BuPaRelConfirmationSent | BusinessPartnerRelationship confirmation sent | +| KmConfirmationSent | KeyMapping confirmation sent | + +### Confirmation Received Events (3) +| Code | Description | +|------|-------------| +| BupaConfirmationReceivedSuccessful | BusinessPartner confirmation processed successfully | +| BuPaRelConfirmationReceivedSuccessful | BusinessPartnerRelationship confirmation processed | +| KmConfirmationReceivedSuccessful | KeyMapping confirmation processed | + +### Send Failure Events (9) +| Code | Description | +|------|-------------| +| BuPaSendFailed | Failed BusinessPartner transmission | +| BuPaRelSendFailed | Failed BusinessPartnerRelationship transmission | +| KmSendFailed | Failed KeyMapping transmission | +| BuPaSendFailedDestinationNotFound | Destination not configured | +| BuPaRelSendFailedDestinationNotFound | Destination not configured | +| KmSendFailedDestinationNotFound | Destination not configured | +| BuPaSendFailedHttpsSchemeExpected | HTTPS required (Internet ProxyType) | +| BuPaRelSendFailedHttpsSchemeExpected | HTTPS required (Internet ProxyType) | +| KmSendFailedHttpsSchemeExpected | HTTPS required (Internet ProxyType) | + +### Wrong Scheme Configuration Events (6) +| Code | Description | +|------|-------------| +| BuPaSendFailedWrongSchemeConfigured | HTTP/HTTPS required (OnPremise ProxyType) | +| BuPaRelSendFailedWrongSchemeConfigured | HTTP/HTTPS required (OnPremise ProxyType) | +| KmSendFailedWrongSchemeConfigured | HTTP/HTTPS required (OnPremise ProxyType) | +| BuPaConfirmationFailedWrongSchemeConfigured | Wrong scheme for confirmation | +| BuPaRelConfirmationFailedWrongSchemeConfigured | Wrong scheme for confirmation | +| KmConfirmationFailedWrongSchemeConfigured | Wrong scheme for confirmation | + +### Confirmation Send Failure Events (6) +| Code | Description | +|------|-------------| +| BuPaConfirmationSendFailed | Failed to send confirmation | +| BuPaRelConfirmationSendFailed | Failed to send confirmation | +| KmConfirmationSendFailed | Failed to send confirmation | +| BuPaConfirmationSendFailedHttpsSchemeExpected | HTTPS required for confirmation | +| BuPaRelConfirmationFailedHttpsSchemeExpected | HTTPS required for confirmation | +| KmConfirmationFailedHttpsSchemeExpected | HTTPS required for confirmation | + +--- + +## SAP Data Privacy Integration + +### Supported Capabilities + +| Capability | Supported Objects | Description | +|------------|-------------------|-------------| +| Blocking | Business Partner (SOAP) | Maintain rules and trigger deletion when end of purpose reached. Uses SAP Data Retention Manager. | +| Business Context Management | Workforce Person only | Define business context, tag data with purpose, recalculate purpose during transfers | +| Information (reports/export) | **NOT SUPPORTED** | Generate reports, export data, trigger corrections | + +--- + +## Read Access Logging + +Tracks access to sensitive personal data via SAP Audit Log service. + +### Key Annotations + +| Annotation | Purpose | +|------------|---------| +| @AuditLog.Operation | Controls logging (Read, Insert, Update, Delete) | +| @PersonalData.FieldSemantics | When 'DataSubjectID', identifies data subject in logs | +| @PersonalData.IsPotentiallySensitive | Marks sensitive attributes for logging | + +**Activation**: Only when sensitive personal data attributes are exposed to downstream systems. + +--- + +## SOAP API for Business Partners + +Compatible applications: +- SAP S/4HANA Cloud (public edition) +- SAP S/4HANA (on-premise) +- SAP Cloud for Customer +- SAP Marketing Cloud +- SAP Field Service Management +- SAP Configure Price Quote +- SAP Subscription Billing + +*List is not exhaustive* + +--- + +## Availability in Kingdom of Saudi Arabia + +SAP Master Data Integration service (including SAP Master Data Orchestration) is available in the Kingdom of Saudi Arabia region. + +--- + +## Documentation Links + +- **Features**: [https://help.sap.com/docs/master-data-integration/sap-master-data-integration/features](https://help.sap.com/docs/master-data-integration/sap-master-data-integration/features) +- **Distribution Models**: [https://help.sap.com/docs/master-data-integration/sap-master-data-integration/distribution-models](https://help.sap.com/docs/master-data-integration/sap-master-data-integration/distribution-models) +- **Monitoring**: [https://help.sap.com/docs/master-data-integration/sap-master-data-integration/monitoring](https://help.sap.com/docs/master-data-integration/sap-master-data-integration/monitoring) diff --git a/references/glossary-and-pricing.md b/references/glossary-and-pricing.md new file mode 100644 index 0000000..a186982 --- /dev/null +++ b/references/glossary-and-pricing.md @@ -0,0 +1,198 @@ +# Glossary, Pricing, and Service Scope + +Complete glossary, pricing details, and service scope for SAP Master Data Integration. + +**Source**: [https://github.com/SAP-docs/sap-btp-master-data-integration/tree/main/docs/about-this-service](https://github.com/SAP-docs/sap-btp-master-data-integration/tree/main/docs/about-this-service) + +--- + +## Complete Glossary + +### Change Event +An event about changes to the master data database published by SAP Master Data Integration service. Clients usually process change events to update their databases. + +### Change Operation +An identifier for a specific command type to be executed on a master data record. Example values include `create`, `patch` or `delete`. + +### Change Request +A command sent by a client to Master Data Integration service to create, modify, or delete a master data record in the master data database. + +### Client +An application or service that integrates with SAP Master Data Integration to synchronize its master data database with the master data database of the SAP Master Data Integration tenant. + +### Producing Client +A client that sends change requests or SOAP messages to the SAP Master Data Integration service. +- **Synonyms**: Upstream client, Sending client, Writing client + +### Consuming Client +A client that receives change events or SOAP messages from the SAP Master Data Integration service. +- **Synonyms**: Downstream client, Receiving client, Reading client + +### Key Mapping +The linking of the identifying keys of object instances that represent identical real-world objects in different clients. You can maintain one or more keys in each client. + +### Master Data Record +Data or information about a real-world object. A master data record can, for instance, describe a specific cost center or a specific business partner. + +### Master Data Type +The type of master data entities. For example, cost center, bank etc. +- **Synonyms**: Master Data Object, Business Object, Entity Type + +### Tenant +SAP Master Data Integration service is a multitenant cloud service. Each tenant of SAP Master Data Integration maintains its own data that is not shared with other tenants. Each tenant in particular has its own master data database, tenant configurations, and client configurations. + +--- + +## Pricing Structure + +### Service Plans + +| Plan | Target | Cost | Requirements | +|------|--------|------|--------------| +| sap-integration | SAP-branded cloud applications | FREE | Default on all BTP global accounts | +| s4hana-onpremise | SAP S/4HANA On-Premise only | PAID | CPEA-enabled BTP global account | + +### Paid Tier Metrics (s4hana-onpremise) +- **Storage**: Per GB of stored master data +- **Bandwidth**: Per GB of data transferred + +### Hybrid Scenario Billing +Usage for storage is charged only for those master data records that are NOT consumed by any SAP-branded cloud application. + +--- + +## Qualifying SAP-Branded Cloud Applications (Free Tier) + +The following 18 SAP cloud applications integrate at no additional cost: + +| # | Application | +|---|-------------| +| 1 | SAP Ariba | +| 2 | SAP Cloud for Customer | +| 3 | SAP Commerce Cloud | +| 4 | SAP Concur | +| 5 | SAP Configure Price Quote | +| 6 | SAP Customer Data Cloud | +| 7 | SAP Emarsys Account Engagement | +| 8 | SAP Field Service Management | +| 9 | SAP Fieldglass | +| 10 | SAP Integration Suite | +| 11 | SAP Marketing Cloud | +| 12 | SAP Master Data Governance (cloud edition) | +| 13 | SAP S/4HANA Cloud (private edition) | +| 14 | SAP S/4HANA Cloud (public edition) | +| 15 | SAP S/4HANA Cloud for Projects/Resource Management | +| 16 | SAP Subscription Billing | +| 17 | SAP SuccessFactors Employee Central | +| 18 | SAP SuccessFactors Employee Central Payroll | + +**Note**: SAP ECC integrates through SAP Integration Suite's Cloud Integration capability at no additional charge. + +--- + +## Service Scope and Features + +### Core Capabilities + +| Feature | Description | +|---------|-------------| +| Master Data Replication | Replicate master data between two or more clients | +| Filtering | Configure via Business Data Orchestration to manage replication scope | +| Extensibility | Extend master data objects with custom fields and entities | + +### Environment Details + +| Property | Value | +|----------|-------| +| Environment | Cloud Foundry | +| Documentation Language | English only | +| Infrastructure | Partner-owned IaaS technologies | +| Regional Availability | Consult SAP Discovery Center | + +--- + +## Maintenance Windows + +All times in Coordinated Universal Time (UTC): + +| Region | Day | Time (UTC) | Duration | +|--------|-----|------------|----------| +| MENA | Friday | 7:00 PM | 2 hours | +| APJ (Asia Pacific Japan) | Saturday | 3:00 PM | 2 hours | +| Europe | Saturday | 10:00 PM | 2 hours | +| Americas | Sunday | 4:00 AM | 2 hours | + +**Major Upgrades**: Up to 4 times annually + +--- + +## Service Level Agreement + +### Reference Documents +1. **Service Level Agreement for SAP Cloud Services** - Defines downtime, credits, and update windows +2. **SAP Business Technology Platform Supplement** - Service-specific deviations +3. **General Terms and Conditions for SAP Cloud Services** - Remedies for SLA failures + +### Compliance +Master Data Integration adheres to SAP's global data protection and privacy guidelines. Review Data Processing Agreement for your specific region via the SAP Trust Center. + +--- + +## Data Center Availability + +SAP Master Data Integration is **remote consumable**. Applications can integrate with an MDI tenant across different data centers. + +### Supported Regions (Service Instance) +- Europe (Frankfurt) - EU10 +- US East (VA) - US10 +- Australia (Sydney) - AP10 +- Singapore - AP11 + +### Subscription Limitation +When connecting via subscriptions only (not recommended), both the application and the MDI tenant must be in: +- Same SAP BTP subaccount +- Same data center + +For current regional availability, consult [SAP Discovery Center](https://discovery-center.cloud.sap/serviceCatalog/master-data-integration). + +--- + +## Blog Posts + +**SAP Master Data Integration — sharing and synchronizing master data in the integrated Intelligent Suite** +- URL: [https://blogs.sap.com/2020/07/21/sap-cloud-platform-master-data-integration-sharing-and-synchronizing-master-data-in-the-integrated-intelligent-suite/](https://blogs.sap.com/2020/07/21/sap-cloud-platform-master-data-integration-sharing-and-synchronizing-master-data-in-the-integrated-intelligent-suite/) +- Published: July 21, 2020 + +--- + +## BTP Booster Setup + +The BTP Booster automates MDI configuration through a wizard. + +### Automated Tasks +1. Creates/reuses BTP subaccount +2. Establishes Cloud Foundry Organization +3. Provisions SAP BTP space +4. Creates MDI service instance and service key +5. Subscribes to Business Data Orchestration application +6. Assigns IdP users to admin/developer roles +7. Creates role collections for Business Data Orchestration + +### Access +1. Navigate to global account in BTP Cockpit +2. Select **Boosters** from left menu +3. Choose **Set up SAP Master Data Integration** +4. Click Start → Next → Finish + +### Troubleshooting +Support Component: `BC-CP-CF-ONEMDS` + +--- + +## Documentation Links + +- **Feature Scope**: [https://help.sap.com/docs/master-data-integration/sap-master-data-integration/feature-scope-description](https://help.sap.com/docs/master-data-integration/sap-master-data-integration/feature-scope-description) +- **Pricing**: [https://help.sap.com/docs/master-data-integration/sap-master-data-integration/pricing](https://help.sap.com/docs/master-data-integration/sap-master-data-integration/pricing) +- **Glossary**: [https://help.sap.com/docs/master-data-integration/sap-master-data-integration/glossary](https://help.sap.com/docs/master-data-integration/sap-master-data-integration/glossary) +- **SAP Discovery Center**: [https://discovery-center.cloud.sap/serviceCatalog/master-data-integration](https://discovery-center.cloud.sap/serviceCatalog/master-data-integration) +- **SAP Trust Center**: [https://www.sap.com/about/trust-center.html](https://www.sap.com/about/trust-center.html) diff --git a/references/integration-guides.md b/references/integration-guides.md new file mode 100644 index 0000000..a2dfef4 --- /dev/null +++ b/references/integration-guides.md @@ -0,0 +1,242 @@ +# System Integration Guides + +Detailed integration instructions for connecting applications to SAP Master Data Integration. + +**Source**: [https://github.com/SAP-docs/sap-btp-master-data-integration/tree/main/docs/integration](https://github.com/SAP-docs/sap-btp-master-data-integration/tree/main/docs/integration) + +## SAP S/4HANA Cloud + +### Supported Objects (20) +Bank, Budget Period, Business Partner, Business Partner Relationship, Company Code, Cost Center, Equipment, Exchange Rate, Functional Area, Functional Location, Fund, Funds Center, Grant, Plant, Product, Product Group, Project Controlling Object, Workforce + +### Connection Steps + +1. **Create Service Instance** + - Plan: `sap-integration` + - Application attribute: `"s4"` + +2. **Create Communication Arrangement SAP_COM_0659** + - Retrieve service binding from BTP Cockpit + - System auto-populates arrangement details + +3. **Enable Business Data Orchestration (SAP_COM_0594)** + - Inbound only communication arrangement + - Create dedicated inbound communication user + +4. **Configure BTP Destination** + - Use service URL and inbound user credentials + +5. **Manage Distribution Models** + - Configure push or pull models as needed + +### Important Notes +- Single S/4HANA Cloud system cannot connect to multiple MDI tenants +- Reference SAP Note 3087667 for Business Partner integration + +**Documentation**: [https://help.sap.com/docs/SAP_S4HANA_CLOUD/0f69f8fb28ac4bf48d2b57b9637e81fa/](https://help.sap.com/docs/SAP_S4HANA_CLOUD/0f69f8fb28ac4bf48d2b57b9637e81fa/) + +--- + +## SAP S/4HANA On-Premise + +### Supported Objects (14) +Bank, Business Partner, Business Partner Relationship, Company Code, Cost Center, Equipment, Exchange Rate, Functional Location, Plant, Product, Product Group, Project Controlling Object, Workforce Person + +### Configuration Steps (Transaction: drfimg) + +**Step 1: Technical Settings** +1. Define new business system using subdomain from BTP Cockpit +2. Add entry 986 for Business Partner with Relationships +3. Configure "Replication via Services" as communication channel +4. Add entry 1376 if key mapping replication needed + +**Step 2: Replication Model Setup** +1. Create new replication model with description +2. Assign outbound implementation: `986_3 Outbound Impl. for BP/REL via Services` +3. Designate target systems +4. Set PACK_SIZE_BULK parameter +5. Activate replication model + +### Important Notes +- Single S/4HANA system cannot connect to multiple MDI tenants +- Follow PDF guide in SAP Note 3065614 +- Service plan: `s4hana-onpremise` (PAID) + +**Documentation**: [https://help.sap.com/docs/SAP_S4HANA_ON-PREMISE](https://help.sap.com/docs/SAP_S4HANA_ON-PREMISE) + +--- + +## SAP SuccessFactors + +### Employee Central +**Supported Objects**: Bank, Company Code, Cost Center, Exchange Rate, Job Classification, Organizational Unit, Workforce + +### Employee Central Payroll +**Supported Objects**: Cost Center, Public Sector Management Data + +**Documentation**: [https://help.sap.com/docs/SAP_SUCCESSFACTORS_EMPLOYEE_CENTRAL](https://help.sap.com/docs/SAP_SUCCESSFACTORS_EMPLOYEE_CENTRAL) + +--- + +## SAP Ariba + +### Supported Objects (9) +1. Business Partner-Supplier +2. Company Code +3. Cost Center +4. Exchange Rate +5. Plant +6. Product +7. Product Group +8. Project Controlling Object +9. Purchasing Organization + +**Documentation**: [https://help.sap.com/docs/ariba](https://help.sap.com/docs/ariba) + +--- + +## SAP Fieldglass + +### Supported Objects (5) +1. Workforce +2. Cost Center +3. Business Partner-Supplier +4. Job Classification +5. Organizational Unit + +**Documentation**: [https://help.sap.com/docs/SAP_FIELDGLASS](https://help.sap.com/docs/SAP_FIELDGLASS) + +--- + +## SAP Customer Experience (CX) + +Includes multiple services: + +### SAP Cloud for Customer +**Special Configuration**: Partner Determination Logic Upload + +C4C does not support reflexive partner functions (sold to party, ship to party, bill to party, payer). + +**Solution**: Upload partner determination configuration via REST API + +**Endpoint**: `POST [https://one-mds.cfapps.{region}.hana.ondemand.com/businesspartner/v0/configuration/ConfigurationUpload`](https://one-mds.cfapps.{region}.hana.ondemand.com/businesspartner/v0/configuration/ConfigurationUpload`) + +**Template**: SAP Note 2987243 + +**Required Configurations**: +1. Customer partner determination procedures +2. Customer partner functions in procedure +3. Customer partner determination procedure assignment +4. Customer partner functions +5. Customer account group partner function assignment +6. Customer partner function assignment + +### SAP Commerce Cloud +**Documentation**: [https://help.sap.com/docs/SAP_COMMERCE_INTEGRATIONS](https://help.sap.com/docs/SAP_COMMERCE_INTEGRATIONS) + +### SAP Customer Data Cloud +**Documentation**: [https://help.sap.com/docs/SAP_CUSTOMER_DATA_CLOUD](https://help.sap.com/docs/SAP_CUSTOMER_DATA_CLOUD) + +### SAP Customer Data Platform +**Documentation**: [https://help.sap.com/docs/SAP_CUSTOMER_DATA_PLATFORM](https://help.sap.com/docs/SAP_CUSTOMER_DATA_PLATFORM) + +### SAP Marketing Cloud +**Primary Object**: Business Partner +**Documentation**: [https://help.sap.com/docs/SAP_MARKETING_CLOUD](https://help.sap.com/docs/SAP_MARKETING_CLOUD) + +--- + +## SAP Subscription Billing + +### Supported Objects +- Business Partner +- Product + +**Documentation**: [https://help.sap.com/docs/SAP_SUBSCRIPTIONBILLING](https://help.sap.com/docs/SAP_SUBSCRIPTIONBILLING) + +--- + +## SAP Field Service Management + +### Supported Objects +- Business Partner +- Product +- Product Group +- Equipment +- Functional Location +- Workforce Person + +**Documentation**: [https://help.sap.com/docs/SAP_FIELD_SERVICE_MANAGEMENT](https://help.sap.com/docs/SAP_FIELD_SERVICE_MANAGEMENT) + +--- + +## SAP Entitlement Management + +### Supported Objects +- Business Partner +- Product + +**Documentation**: [https://help.sap.com/docs/SAP_ENTITLEMENT_MANAGEMENT](https://help.sap.com/docs/SAP_ENTITLEMENT_MANAGEMENT) + +--- + +## SAP Order Management Foundation (OMF) + +### Supported Objects +- Business Partner + +**Documentation**: [https://help.sap.com/docs/SAP_ORDER_MANAGEMENT_FOUNDATION](https://help.sap.com/docs/SAP_ORDER_MANAGEMENT_FOUNDATION) + +--- + +## SAP Master Data Governance (MDG) + +### Current Limitation +Support limited to **pure replication scenario** from MDG to MDI only. + +### Capabilities with MDG +- **Consolidation**: Merge master data for analytics +- **Central Governance**: Product development, supplier management workflows +- **Data Quality Management**: Establish and track quality metrics + +**Documentation**: [https://help.sap.com/docs/SAP_MASTER_DATA_GOVERNANCE](https://help.sap.com/docs/SAP_MASTER_DATA_GOVERNANCE) + +--- + +## SAP ECC and Non-SAP Applications + +Use **SAP Integration Suite** with Master Data Integration Adapter. + +### Key Features +- Maps application-specific models to SAP One Domain Model +- Special support for MDI service integration +- JSON schemas from SAP Business Accelerator Hub + +### Resources +- Discovery Center Mission: Synchronize cost centers across ECC, Integration Suite, MDI, SuccessFactors +- MDI Receiver Adapter: [https://help.sap.com/docs/cloud-integration/sap-cloud-integration/master-data-integration-adapter](https://help.sap.com/docs/cloud-integration/sap-cloud-integration/master-data-integration-adapter) + +**Documentation**: [https://help.sap.com/docs/SAP_INTEGRATION_SUITE](https://help.sap.com/docs/SAP_INTEGRATION_SUITE) + +--- + +## General Connection Prerequisites + +For all integrations: + +1. **Service Instance** (one per application) +2. **Service Binding** for credentials +3. **businessSystemId** configured (if using SOAP) +4. **writePermissions** for entity types +5. **Distribution Model** activated + +## Key SAP Notes + +| Note | Description | +|------|-------------| +| 2659038 | Reduced data model scope handling | +| 2733112 | DRF configuration | +| 2987243 | Partner determination template | +| 3065614 | S/4HANA On-Premise PDF guide | +| 3087667 | S/4HANA Cloud BP integration | +| 3344090 | Service degradation reference | diff --git a/references/integration-models.md b/references/integration-models.md new file mode 100644 index 0000000..0ab2608 --- /dev/null +++ b/references/integration-models.md @@ -0,0 +1,126 @@ +# SAP One Domain Model Integration Models + +Complete reference for master data types supported by SAP Master Data Integration. + +**Source**: [https://github.com/SAP-docs/sap-btp-master-data-integration/blob/main/docs/about-this-service/integration-models-8882bf9.md](https://github.com/SAP-docs/sap-btp-master-data-integration/blob/main/docs/about-this-service/integration-models-8882bf9.md) + +## Asset Management + +| Entity | Version | Notes | +|--------|---------|-------| +| Equipment | v5.1.0 | | +| Functional Location | v5.0.0 | | + +## Business Partner + +| Entity | Version | Notes | +|--------|---------|-------| +| Business Partner | v2.1.1, v3.3.0 | Multiversion support restricted for address data replication | +| Business Partner Relationship | v2.2.0 | | + +## Finance & Accounting + +| Entity | Version | Notes | +|--------|---------|-------| +| Exchange Rate | v4.0.0 | | +| Symbolic General Ledger Account | v6.1.0 | | +| Bank | v3.0.0 | | +| Cost Center | v3.1.0 | 6 backward-compatible versions | +| Project Controlling Object | v3.1.0 | | +| Sales Controlling Object | v4.0.0 | | + +## Public Sector Finance + +| Entity | Version | Notes | +|--------|---------|-------| +| Budget Period | v1.1.0 | | +| Functional Area | v1.1.0 | | +| Fund | v1.1.0 | | +| Funds Center | v1.1.0 | | +| Grant | v1.1.0 | | + +## Organizational Units + +| Entity | Version | Notes | +|--------|---------|-------| +| Company Code | v4.0.0 | | +| Plant | v4.0.0 | | + +## Procurement + +| Entity | Version | Notes | +|--------|---------|-------| +| Purchasing Category | v4.0.0 | | +| Purchasing Group | v6.0.0 | | +| Purchasing Organization | v4.0.0 | | + +## Products & Projects + +| Entity | Version | Notes | +|--------|---------|-------| +| Product | v5.0.0 | | +| Product Group | v5.0.0 | | +| Project Service Organization | v7.0.0 | | + +## Real Estate (all v7.0.0) + +| Entity | Version | +|--------|---------| +| Contract | v7.0.0 | +| Rentable Object | v7.0.0 | +| Usable Object | v7.0.0 | +| Architecture Object | v7.0.0 | + +## Workforce + +| Entity | Version | Notes | +|--------|---------|-------| +| Person | v5.0.0 | | +| Job Classification | v4.0.0 | | +| Organizational Unit | v4.0.0 | | +| Capability (3 models) | v3.0.0 | | + +## Data Privacy + +| Entity | Version | +|--------|---------| +| Data Controller | v2.0.0 | +| Purpose | v2.0.0 | +| Purpose2DataController | v2.0.0 | + +## Multiversion Support + +MDI enables applications to use different compatible versions of the SAP One Domain Model without disrupting integrations. + +**How It Works**: +- Application A transmits data in version 3.0.0 +- Application B receives data in version 2.1.1 +- Works only between compatible versions (no breaking changes) + +**Benefits**: +- Decouples development cycles of SAP and non-SAP applications +- Allows incremental upgrades +- Reduces implementation complexity + +**Limitations**: +- Only works between versions without breaking changes (e.g., no field removals) +- BusinessPartner v3.3.0 and v2.1.1 have restricted multiversion support for address data + +## ODM Entity Name Format + +writePermissions use fully qualified ODM entity names: + +``` +sap.odm.{domain}.{subdomain}.{EntityName} +``` + +Examples: +- `sap.odm.finance.costobject.CostCenter` +- `sap.odm.businesspartner.BusinessPartner` +- `sap.odm.procurement.orgunit.PurchasingOrganization` +- `sap.odm.workforce.foundation.WorkforcePerson` + +## Documentation Links + +- **Integration Models**: [https://help.sap.com/docs/master-data-integration/sap-master-data-integration/integration-models](https://help.sap.com/docs/master-data-integration/sap-master-data-integration/integration-models) +- **SAP One Domain Model**: [https://api.sap.com/sap-one-domain-model](https://api.sap.com/sap-one-domain-model) diff --git a/references/monitoring.md b/references/monitoring.md new file mode 100644 index 0000000..a228710 --- /dev/null +++ b/references/monitoring.md @@ -0,0 +1,285 @@ +# Monitoring and Troubleshooting + +Monitoring configuration and troubleshooting guidance for SAP Master Data Integration. + +**Source**: [https://github.com/SAP-docs/sap-btp-master-data-integration/tree/main/docs/monitoring-and-troubleshooting](https://github.com/SAP-docs/sap-btp-master-data-integration/tree/main/docs/monitoring-and-troubleshooting) + +## Business Data Orchestration Monitoring + +### Overview +End-to-end monitoring of master data distribution across your landscape through SAP Cloud ALM integration. + +### Three Monitoring Perspectives + +| View | Name | Purpose | +|------|------|---------| +| Landscape | Monitor Master Data Distribution | All clients and connections graphically | +| Connection | Display Distribution Status | Status between specific client pairs | +| Object | Locate Object | Distribution status for single objects | + +### Landscape View +- Displays all clients and connections graphically +- Colors indicate status: failed, warning, success +- Sizing represents object volume + +### Connection View +- Status between specific client pairs +- Individual object distributions +- Filterable by status +- Detailed warning/error messages +- **Currently available view** + +### Object View +- Single master data object status +- Shows involved systems +- Individual processing statuses + +--- + +## Technical Architecture + +### SAP Cloud ALM Integration + +1. Clients report message processing as **SAP Passport Events** to SAP Cloud ALM +2. Events contain logging data on object processing status +3. Business Data Orchestration imports logging every **5 minutes** +4. Data aggregated into distribution status reports + +### Key Distinction +- **SAP Cloud ALM**: Message-oriented technical monitoring +- **Business Data Orchestration**: Master data object oriented, distribution model-driven + +--- + +## Configuration Requirements + +### 1. Subscribe to SAP Cloud ALM + +### 2. Register Clients +Enable SAP Passport Event acceptance for all participating clients. + +### 3. Configure Mapping +Map between: +- Master Data Integration service instances +- SAP Cloud ALM services + +**Documentation**: [https://help.sap.com/docs/cloud-alm/setup-administration/business-data-orchestration](https://help.sap.com/docs/cloud-alm/setup-administration/business-data-orchestration) + +--- + +## Alerting + +Use SAP Cloud ALM's **Integration & Exception Monitoring** for alerting functionality. + +--- + +## Error Resolution + +After issues resolve: +1. Identify failed object distribution +2. Use retriggering capability +3. Verify successful reprocessing + +--- + +## Critical Recommendations + +**Do NOT**: +- Disable SAP Passport Events in SAP Cloud ALM +- Filter SAP Passport Events + +**Why**: Comprehensive monitoring requires complete event collection. + +--- + +## REST Events (SAP Cloud ALM) + +Events sent during REST API operations: + +| Event | Description | +|-------|-------------| +| ExistingInstanceId | Entity with given instance ID already exists | +| EntityInstanceDoesNotExist | Entity with given instance ID does not exist | +| ValidationError | Validation error during processing | +| PatchFailed | Patch operation failed | +| InvalidPreviousVersionId | Invalid previous version ID | +| UpdateOrDeleteOnDeletedInstance | Instance deleted, no longer supports operations | +| UpdateOrDeleteOnReplacedInstance | Instance replaced, no longer supports operations | +| MergeOnDeletedInstance | Instance not replaced, cannot be merged | +| EntityInstanceReplacedByOtherInstance | Instance replaced by different instance | +| DecodeError | Instance could not be decoded | +| UnexpectedStateError | Unexpected state condition | +| UnknownEntity | Unrecognized entity type | +| ReplacedError | Could not replace an event | +| ReplacementCycle | Cyclic reference in replacements | +| InvalidLogicalKeys | Incorrect logical key structure | +| LocalIdError | LocalId operations malfunction | +| NormalizationFailed | Could not normalize event | +| PrimaryMasterDataEventTooLarge | Internal record size exceeds limits | +| UnknownTenant | Unknown system for request | + +--- + +## SOAP Events (SAP Cloud ALM) + +### Successful Operations +- BuPaConfirmationSent +- BuPaSent +- BuPaRelConfirmationSent +- BuPaRelSent +- KmConfirmationSent +- KmSent + +### Confirmation Received +- BupaConfirmationReceivedSuccessful +- BuPaRelConfirmationReceivedSuccessful +- KmConfirmationReceivedSuccessful + +### Send Failures +- BuPaSendFailed / BuPaRelSendFailed / KmSendFailed +- *DestinationNotFound variants +- *HttpsSchemeExpected variants +- *WrongSchemeConfigured variants + +### Confirmation Failures +- BuPaConfirmationSendFailed +- BuPaRelConfirmationSendFailed +- KmConfirmationSendFailed +- *HttpsSchemeExpected variants +- *WrongSchemeConfigured variants + +### Inbound Event +- BuPaDuplicateAddressId (only inbound event) + +--- + +## Troubleshooting Workflow + +### Step 1: Check Platform Status +Visit SAP Trust Center: [https://www.sap.com/about/cloud-trust-center/cloud-status.html](https://www.sap.com/about/cloud-trust-center/cloud-status.html) + +### Step 2: Consult Guided Answers +Use SAP Guided Answers tool for troubleshooting scenarios: +[https://ga.support.sap.com/dtp/viewer/index.html#/tree/3124/actions/48440](https://ga.support.sap.com/dtp/viewer/index.html#/tree/3124/actions/48440) + +### Step 3: Contact Support +If problems persist, contact SAP Support. + +**Support Component**: `BC-CP-CF-ONEMDS` + +--- + +## Common Issues and Solutions + +### Delta Token Expired + +**Symptom**: Error response from Events API + +**Cause**: Client not synchronized within 28 days + +**Solution**: Perform initial load + +--- + +### Change Request Rejected (Size) + +**Symptom**: Request rejected + +**Cause**: Payload exceeds size limit + +**Limits**: +- Standard: 256 KB +- Business Partner: 512 KB + +**Solution**: Reduce payload size, use patches for incremental updates + +--- + +### Master Data Record Too Large + +**Symptom**: Request rejected + +**Cause**: Resulting record exceeds 512 KB + +**Solution**: Multiple smaller change requests cannot exceed this limit when combined + +--- + +### Invalid Change Token + +**Symptom**: Request rejected + +**Cause**: Token violates constraints + +**Constraints**: +- Max 36 characters +- Characters: a-z, A-Z, 0-9, -, _ +- Must be unique per request and client + +**Solution**: Generate compliant tokens + +--- + +### Destination Not Found + +**Symptom**: *DestinationNotFound SOAP event + +**Cause**: Destination not configured or misconfigured + +**Solution**: +1. Verify destination exists in BTP Cockpit +2. Check naming convention: `{businessSystemId}_{purpose}` +3. Verify authentication configuration + +--- + +### HTTPS Scheme Expected + +**Symptom**: *HttpsSchemeExpected SOAP event + +**Cause**: HTTP used instead of HTTPS + +**Solution**: Update destination URL to HTTPS + +--- + +### Missing Mandatory Partner Function + +**Symptom**: "Mandatory partner function xx is missing for sales area" + +**Cause**: C4C does not support reflexive partner functions + +**Solution**: Upload partner determination configuration +- Template: SAP Note 2987243 +- Endpoint: `/businesspartner/v0/configuration/ConfigurationUpload` + +--- + +### Tenant Deletion Warning + +**Symptom**: Error when deleting last service instance + +**Cause**: Protection against accidental tenant deletion + +**Solution**: Set `enableTenantDeletion: true` in update parameters + +--- + +## Data Export Request + +For personal data stored in MDI: +1. Open customer ticket +2. Component: `BC-CP-CF-ONEMDS` +3. Request data export + +--- + +## Useful Resources + +| Resource | URL | +|----------|-----| +| SAP Trust Center | [https://www.sap.com/about/cloud-trust-center/](https://www.sap.com/about/cloud-trust-center/) | +| Guided Answers | [https://ga.support.sap.com/dtp/viewer/index.html](https://ga.support.sap.com/dtp/viewer/index.html) | +| Support Portal | [https://support.sap.com/](https://support.sap.com/) | +| Cloud ALM | [https://help.sap.com/docs/cloud-alm](https://help.sap.com/docs/cloud-alm) | +| API Hub | [https://api.sap.com](https://api.sap.com) | diff --git a/references/security-and-privacy.md b/references/security-and-privacy.md new file mode 100644 index 0000000..dd44003 --- /dev/null +++ b/references/security-and-privacy.md @@ -0,0 +1,256 @@ +# Security and Data Privacy + +Security guidelines, data protection, and privacy configurations for SAP Master Data Integration. + +**Source**: [https://github.com/SAP-docs/sap-btp-master-data-integration/tree/main/docs/security](https://github.com/SAP-docs/sap-btp-master-data-integration/tree/main/docs/security) + +## Security Guidelines + +### Transport Layer Security +MDI relies on SAP BTP infrastructure with TLS protection for all connections. + +### Credential Protection +- Store credentials securely at all times +- Credentials allow read/write access to company master data +- Rotate any compromised credentials immediately + +### HTTPS Enforcement +All communications must use HTTPS: +- Client applications to MDI +- MDI to XSUAA +- Destination Service configurations +- Manual debugging requests + +### Certificate Validation +- Always validate HTTPS certificates +- Never disable certificate validation +- Disabled validation allows credential interception and traffic monitoring + +### Credential Rotation Process +When credentials are compromised: +1. Delete compromised service key from service instance +2. Generate new service key +3. Reconfigure clients with new credentials + +### Security Incident Reporting +Report security issues through SAP Security Management portal. + +--- + +## Authentication Methods + +### OAuth2 Client Credentials (Default) +Binding-level client ID and client secret created automatically. + +### XSUAA-managed Certificates +System generates private keys and certificates: + +| Parameter | Default | Options | +|-----------|---------|---------| +| key-length | 2048 bytes | | +| validity-type | DAYS | DAYS, MONTHS, YEARS | +| validity | 7 days | | + +```json +{ + "xsuaa": { + "credential-type": "x509", + "x509": { + "key-length": 2048, + "validity": 7, + "validity-type": "DAYS" + } + } +} +``` + +**Important**: Authentication only works while certificate is valid. Renewal requires recreating service binding. + +### Externally-managed Certificates +User-provided certificates with options: + +| Parameter | Default | Description | +|-----------|---------|-------------| +| ensure-uniqueness | false | Enforce certificate uniqueness across instances | +| certificate-pinning | true | When false, allows simplified rotation by DN comparison | + +### Token Endpoints +- Client credentials: `/oauth/token` +- X.509: `/oauth/token` + +### Credential Update Process +1. Create new service binding +2. Update client configuration +3. Delete old service binding +4. Do NOT delete service instance (disconnects client) + +--- + +## Business User Authentication + +### Passcode Flow (Recommended) +1. Visit XSUAA URL passcode endpoint +2. Obtain code +3. Exchange via POST request with service instance credentials + +### Password Flow +Direct authentication with username/password plus service instance credentials. + +### Required Roles + +| Role | Purpose | +|------|---------| +| BusinessConfigurationAdmin | Configuration tasks | +| ExtensionDeveloper | Extensibility tasks | + +--- + +## Data Protection and Privacy + +### SAP's Role +SAP provides compliance features but does not advise on best methods for specific organizations or regions. + +### Key Principles +- Data protection involves legal requirements and privacy concerns +- Case-by-case assessment required +- SAP does not provide legal advice +- Compliance often extends beyond product features + +### Integration with SAP Data Privacy Integration + +**Supported Capabilities**: + +| Capability | Objects | Integration | +|------------|---------|-------------| +| Blocking | Business Partner | Via SOAP API, SAP Data Retention Manager | +| Business Context Management | Workforce Person | Purpose recalculation, expiration identification | +| Information (reports/export) | **NOT SUPPORTED** | | + +--- + +## Deletion of Master Data + +### Retention and Lifecycle Management + +Master data retention and deletion are **customer-configurable** via SAP Information Lifecycle Management (ILM) and Retention Management. + +**Key Points**: +- Retention periods are defined by customer policy, not fixed by SAP +- Blocking and residence rules are set per customer requirements +- Delta token expiry depends on customer-configured retention settings +- Clients must perform full reload if retention settings result in token expiration + +### General Master Data Deletion +1. Client triggers deletion through MDI +2. Service processes deletion per configured retention policy +3. Service notifies all downstream clients +4. Each client removes data from local systems per their retention settings + +### Business Partner Deletion +Uses SAP Data Retention Manager with ILM controls: +- Triggered when personal data processing no longer required per policy +- Blocking requests initiate the deletion workflow +- SAP S/4HANA clients can initiate via Data Retention Manager +- Retention periods governed by ILM residence rules + +### Client Disconnection +- Data not automatically removed when client disconnects +- Apply ILM/retention policies to manage data lifecycle +- Proactively identify and delete unneeded data per policy +- Consider impact on remaining connected clients + +--- + +## Filtering + +### Purpose +Controls which event information clients receive through LOG API. + +### Configuration +Filters registered per client (service instance) in Cloud Foundry. + +### Filter Levels +1. **Object-instance level**: Which records are replicated +2. **Data scope level**: Which parts of records are replicated + +### Filter Behavior +- Activated filters apply to all following LOG API responses +- New include/exclude messages generated when visibility changes +- New filter automatically deactivates previous filter + +### Distribution Models +Configure filters through Business Data Orchestration: +- Object Selection Filters +- Data Scope Filters + +### Benefits +- Reduces unnecessary data traffic +- Prevents irrelevant data replication (e.g., customer data to non-sales units) +- Enables regional data boundaries + +--- + +## Read Access Logging + +Tracks access to sensitive personal data via SAP Audit Log service. + +### Key Annotations + +**@AuditLog.Operation** +Controls logging behavior for Read, Insert, Update, Delete operations. +- Read-access logging enabled by default when annotation absent +- Set `read: false` to disable + +**@PersonalData.FieldSemantics** +When set to `DataSubjectID`: +- Attribute value identifies data subject in log entries +- Multiple annotated attributes all recorded +- Falls back to instance ID if attribute not transmitted + +**@PersonalData.IsPotentiallySensitive** +- Marks attributes as sensitive personal data +- Attribute names appear in log entries +- **No log entry written if no attribute has this annotation** + +### Activation Condition +Read-access logging activates only when: +- Attributes representing sensitive personal data +- Are actually exposed to downstream systems + +--- + +## Data Export + +For personal data export: +1. Open customer ticket +2. Component: `BC-CP-CF-ONEMDS` +3. Request data export + +--- + +## Schema Validation + +### What MDI Validates +- Data adherence to SAP One Domain Model integration models + +### What MDI Does NOT Validate +- Referential integrity +- References within master data records pointing to existing records +- Code list entry validity + +**Implication**: Organizations must independently verify cross-references. + +--- + +## Security Best Practices Checklist + +- [ ] Use HTTPS for all communications +- [ ] Validate certificates (never disable) +- [ ] Store credentials securely +- [ ] Grant minimal writePermissions +- [ ] Rotate compromised credentials immediately +- [ ] Separate MDI subaccounts from other services +- [ ] Configure read-access logging for sensitive data +- [ ] Implement proper filtering to limit data exposure +- [ ] Document data retention policies +- [ ] Establish deletion procedures for disconnecting clients diff --git a/references/setup-guide-complete.md b/references/setup-guide-complete.md new file mode 100644 index 0000000..4a838b3 --- /dev/null +++ b/references/setup-guide-complete.md @@ -0,0 +1,465 @@ +# Complete Setup and Administration Guide + +Comprehensive setup and administration documentation for SAP Master Data Integration. + +## Table of Contents + +- [Technical Prerequisites](#technical-prerequisites) +- [Tenant Management](#tenant-management) +- [Client Configuration Attributes](#client-configuration-attributes) +- [Business Data Orchestration](#distribution-model-configuration) +- [SAP Cloud ALM Monitoring](#sap-cloud-alm-monitoring) +- [Version History](#version-history) + +**Source**: [https://github.com/SAP-docs/sap-btp-master-data-integration/tree/main/docs/initial-setup-and-administration](https://github.com/SAP-docs/sap-btp-master-data-integration/tree/main/docs/initial-setup-and-administration) + +--- + +## Technical Prerequisites + +### Account Hierarchy + +``` +Global Account (Enterprise) + └── Subaccount (in supported region) + └── Space (Cloud Foundry) +``` + +### Requirements + +| Requirement | Details | +|-------------|---------| +| Global Account | SAP BTP Enterprise account (**Trial/Free Tier NOT supported**) | +| Environment | Cloud Foundry | +| Subaccount | Must be in supported region | +| Space | Required within subaccount | + +### Supported Regions + +| Region | Code | Location | +|--------|------|----------| +| Europe | EU10 | Frankfurt | +| US East | US10 | Virginia | +| Australia | AP10 | Sydney | +| Asia Pacific | AP11 | Singapore | + +--- + +## Tenant Management + +### Creating Tenants + +**Prerequisites**: +- Global enterprise account (no trial/free tier) +- Subaccount in supported region + +**Steps**: +1. Create subaccount in available region +2. Subscribe to "SAP Master Data Integration Tenant application" +3. Create service instances for client connectivity + +### Key Limitations + +| Constraint | Details | +|------------|---------| +| One tenant per subaccount | Cannot host multiple tenants in single subaccount | +| Data isolation | Neither data nor configuration shared between tenants | +| Dedicated subaccount | Recommended exclusively for MDI tenant | + +### Multi-Tenant Strategy + +**Recommended**: Three-tenant model for development lifecycle: +- **Development** tenant (separate subaccount) +- **Test** tenant (separate subaccount) +- **Production** tenant (separate subaccount) + +**Production**: Single tenant recommended to maintain data consistency across connected applications. + +### Deleting Tenants + +**28-Day Retention**: Deleted data retained for 28 days before permanent deletion. + +**Protection Mechanism**: Deleting the last service instance triggers tenant deletion warning. To proceed: +```json +{ + "enableTenantDeletion": true +} +``` + +--- + +## Connecting Applications + +### Critical Rule +**Every application MUST use its own dedicated service instance.** Sharing instances causes unexpected behavior and inconsistencies. + +### Why NOT to Use Subscriptions + +SAP Master Data Integration **must NOT be consumed via subscription mechanism**. + +**Reasons**: +- Flexibility issues for MDI operations +- Configurability constraints +- Security concerns for master data handling + +**Always use**: Service instances with explicit configuration. + +### Service Instance Creation + +**Step 1: Navigate** +Services → Service Marketplace → Master Data Integration + +**Step 2: Configure** + +| Setting | Value | +|---------|-------| +| Runtime Environment | Other | +| Service Plan | See below | +| Instance Name | Descriptive (identify application) | + +**Step 3: Set Parameters** + +```json +{ + "application": "" +} +``` + +### Service Plans + +| Plan | Target | Cost | Requirements | +|------|--------|------|--------------| +| sap-integration | SAP cloud apps | FREE | Default entitlement | +| s4hana-onpremise | S/4HANA On-Premise | PAID | CPEA-enabled account | + +### Application Codes + +| Application | Code | +|-------------|------| +| SAP S/4HANA Cloud | `s4` | +| SAP Ariba | `ariba` | +| SAP SuccessFactors | `sfsf` | +| SAP Fieldglass | `fieldglass` | +| SAP Commerce Cloud | `commerce` | +| SAP Cloud for Customer | `c4c` | + +*Check application-specific documentation for exact codes.* + +### Service Binding Best Practices + +**Naming Convention**: Include creation date for tracking +``` +ValidFrom_20240501 +``` + +**Benefits**: +- Track credential age +- Assess security incident timelines +- Plan rotation schedules + +--- + +## Client Configuration Attributes + +### businessSystemId + +| Property | Details | +|----------|---------| +| Purpose | Display name in Business Data Orchestration UI | +| Required for | SOAP API integration with business partners | +| Max Length | 60 characters | +| Characters | Alphanumeric, underscore, hyphen | +| Uniqueness | Must be unique per tenant | + +**Important**: Cannot change after SOAP replication starts. + +```json +{ + "businessSystemId": "S4HCLOUD_PRD" +} +``` + +**Configuration via Generic API** (alternative to UI): +```http +POST /businesspartner/v0/odata/API_GENERIC_CONFIGURATIONS/GenericConfigurations + +{ + "ConfigurationName": "Business System", + "ConfigurationValue": "" +} +``` + +**Alignment Required With**: +- DRF business system names (S/4HANA On-Premise) +- Communication System UI (S/4HANA Cloud) +- `RecipientBusinessSystemID` in SOAP payloads + +### writePermissions + +Controls create/modify/delete authorization per entity type. + +```json +{ + "writePermissions": [ + { "entityType": "sap.odm.finance.costobject.CostCenter" }, + { "entityType": "sap.odm.businesspartner.BusinessPartner" } + ] +} +``` + +**Principle**: Least privilege - grant only required permissions. + +**Requirement (2022+)**: Write permissions must be explicitly configured when connecting clients. + +### globalTenantId + +| Property | Details | +|----------|---------| +| Purpose | Identifies last significant writer on Events API | +| Length | 1-40 characters | +| Characters | Alphanumeric, -, ., _, ~ | +| When to use | Only if application documentation requires | + +```json +{ + "globalTenantId": "tenant-identifier" +} +``` + +### logSys + +| Property | Details | +|----------|---------| +| Purpose | Logical system of last significant writer | +| Max Length | 10 characters | +| When to use | Only if application documentation requires | + +```json +{ + "logSys": "S4CLOUD" +} +``` + +--- + +## Connecting Specific Systems + +### S/4HANA Cloud (via Communication Arrangements) + +**Communication Arrangements Required**: +- **SAP_COM_0659**: Master Data Integration +- **SAP_COM_0594**: Business Data Orchestration (inbound only) + +**Steps**: +1. Create service instance with `application: "s4"` +2. Create service binding +3. Configure communication arrangement in S/4HANA Cloud +4. Set up BTP destination + +### S/4HANA On-Premise (via drfimg) + +**Transaction**: `drfimg` + +**Step 1 - Technical Settings**: +1. Define business system (subdomain from BTP Cockpit) +2. Add entry 986 for Business Partner with Relationships +3. Set "Replication via Services" as channel +4. Add entry 1376 for key mapping (optional) + +**Step 2 - Replication Model**: +1. Create model with description +2. Assign outbound implementation: `986_3 Outbound Impl. for BP/REL via Services` +3. Set target systems and PACK_SIZE_BULK +4. Activate model + +**Reference**: SAP Note 3065614 + +### SOAP Applications + +**Prerequisites**: +1. businessSystemId configured +2. SOAP endpoints accessible +3. Destinations configured + +**Required Destinations** (per businessSystemId): +- `{businessSystemId}_BPOUTBOUND` +- `{businessSystemId}_BPCONFIRM` +- `{businessSystemId}_BPRELOUTBOUND` +- `{businessSystemId}_BPRELCONFIRM` +- `{businessSystemId}_KMOUTBOUND` +- `{businessSystemId}_KEYMAPCONFIRM` + +**Max Destinations**: 6 per unique client connection + +--- + +## Authentication Methods + +### OAuth2 Client Credentials (Default) + +Automatically created during service binding. + +**Token Request**: +```bash +curl --request POST "$xsuaa_url/oauth/token" \ + --header "Content-Type: application/x-www-form-urlencoded" \ + --user "$client_id:$client_secret" \ + --data-urlencode "grant_type=client_credentials" +``` + +### Mutual TLS with X.509 Certificates (Recommended) + +**Configuration**: +```json +{ + "xsuaa": { + "credential-type": "x509", + "x509": { + "key-length": 2048, + "validity": 7, + "validity-type": "DAYS" + } + } +} +``` + +**Validity Types**: DAYS, MONTHS, YEARS + +**Token Endpoint**: `/oauth/token` (different from client credentials) + +**Important**: Authentication only works while certificate is valid. Renewal requires recreating service binding. + +### Externally-Managed Certificates + +| Parameter | Default | Description | +|-----------|---------|-------------| +| ensure-uniqueness | false | Enforce certificate uniqueness | +| certificate-pinning | true | When false, allows DN comparison for rotation | + +--- + +## Business User Authentication + +### Roles Required + +| Role | Purpose | +|------|---------| +| BusinessConfigurationAdmin | Configuration tasks | +| ExtensionDeveloper | Extensibility tasks | + +**Assignment**: Via BTP Cockpit role collections + +### Authentication Flows + +**Passcode Flow (Recommended)**: +1. Visit `$xsuaa_url/passcode` +2. Obtain passcode +3. Exchange via POST with service instance credentials + +**Password Flow**: +Direct authentication with username/password plus service instance credentials. + +--- + +## Distribution Model Configuration + +### Creating Models (Business Data Orchestration UI) + +1. Access Fiori Launchpad +2. Select "Manage Distribution Model" +3. Create model with: + - Provider (sender) + - Consumer (receiver) identified by businessSystemId + - Business Object Type + - API selection (REST or SOAP) + - Package size + - Scheduling + +### Model Constraints + +- BP Relationship model requires active BP model +- Cannot deactivate BP model with active BP Relationship model + +### Filters + +| Type | Purpose | +|------|---------| +| Object Selection | Which records to replicate | +| Data Scope | Which parts of records to replicate | + +--- + +## Disconnecting Applications + +**Steps**: +1. Deactivate distribution models using the client +2. Delete service binding +3. Delete service instance + +**Data Cleanup**: Proactively delete master data no longer needed by remaining clients (not automatic). + +--- + +## SAP Cloud ALM Monitoring + +**Recommendation**: Use SAP Cloud ALM for monitoring MDI and data flow processing. + +**Setup**: +1. Subscribe to SAP Cloud ALM +2. Register clients for SAP Passport Event acceptance +3. Configure mapping between MDI service instances and Cloud ALM services + +**Do NOT**: +- Disable SAP Passport Events +- Filter SAP Passport Events + +--- + +## Version History (What's New) + +### 2024 +- Business Data Orchestration rebranding (from Master Data Orchestration) +- Client certificate authentication for ABAP environment +- Display Clients feature (read-only client information) + +### 2023 +- 5 new ODM entities: ExchangeRate 4.0.0, Equipment 5.1.0, FunctionalLocation 5.0.0, Product 5.0.0 +- GTID configuration (`globalTenantId`) +- `logSys` metadata for last significant writer +- Two service plans with pricing structure +- Service degradation incident (Note 3344090) + +### 2022 +- Extensibility v1 API (unified REST, SOAP, ODATA) +- Mandatory write permissions for new clients +- BusinessConfigurationAdmin role requirement +- v0 Extensibility API deprecated +- SOAP APIs for Product decommissioned + +### 2021 +- **December**: ODM 3.0.0 entities exposed to production +- **November**: SAP One Domain Model adoption ("MDI is based on the SAP ODM") +- **November**: Extension fields creation with SOAP mapping for BP services +- **November**: Destination mapping configuration (MDI ↔ SAP Cloud ALM) +- **November**: Distribution status monitoring with replication retry +- **June**: Product replication via distribution models +- **June**: BP distribution model configuration +- **May**: BP deletion via SOAP + SAP Data Retention Manager +- **May**: SOAP API for Business Partner replication +- **May**: Manage Data Ownership app (system-level ownership assignment) +- **May**: Cost center filtering + Business Context Manager data category support + +**Business Data Orchestration Apps (2021)**: +- Manage Data Ownership - specify ownership at object type level +- Configure Destination Mapping - map between MDI and Cloud ALM +- Display Distribution Status - monitor with retry functionality +- Manage Business Object Type - extension fields with SOAP mapping + +--- + +## Documentation Links + +- **Initial Setup**: [https://help.sap.com/docs/master-data-integration/sap-master-data-integration/initial-setup-and-administration](https://help.sap.com/docs/master-data-integration/sap-master-data-integration/initial-setup-and-administration) +- **Creating Tenants**: [https://help.sap.com/docs/master-data-integration/sap-master-data-integration/creating-tenants](https://help.sap.com/docs/master-data-integration/sap-master-data-integration/creating-tenants) +- **Connecting Applications**: [https://help.sap.com/docs/master-data-integration/sap-master-data-integration/connecting-applications](https://help.sap.com/docs/master-data-integration/sap-master-data-integration/connecting-applications) +- **Authentication**: [https://help.sap.com/docs/master-data-integration/sap-master-data-integration/authentication-and-authorization](https://help.sap.com/docs/master-data-integration/sap-master-data-integration/authentication-and-authorization) diff --git a/references/soap-api-reference.md b/references/soap-api-reference.md new file mode 100644 index 0000000..50cdcb3 --- /dev/null +++ b/references/soap-api-reference.md @@ -0,0 +1,545 @@ +# SOAP API Reference + +Complete reference for SOAP-based integrations with SAP Master Data Integration. + +**Table of Contents** +- [Endpoint Base URL](#endpoint-base-url) +- [Authentication Methods](#authentication-methods) +- [Available Endpoints](#available-endpoints) +- [Business Partner Replication Service](#business-partner-replication-service) +- [Confirmation Services](#confirmation-services) +- [Business Partner Relationships](#business-partner-relationships) +- [Key Mapping](#key-mapping) + +**Source**: [https://github.com/SAP-docs/sap-btp-master-data-integration/tree/main/docs/development](https://github.com/SAP-docs/sap-btp-master-data-integration/tree/main/docs/development) + +## Endpoint Base URL + +``` +[https://one-mds.cfapps.{region}.hana.ondemand.com/businesspartner/v0/soap/](https://one-mds.cfapps.{region}.hana.ondemand.com/businesspartner/v0/soap/) +``` + +**Regions**: For the complete, current list of SAP BTP Cloud Foundry regions and API endpoints, see: +- [SAP Help: Regions and API Endpoints Available for the Cloud Foundry Environment](https://help.sap.com/docs/btp/sap-business-technology-platform/regions-and-api-endpoints-available-for-cloud-foundry-environment) + +Note: New regions are added periodically (e.g., cn20 for China, additional AWS regions). Always consult SAP Help for the current list. + +## Authentication Methods + +### Basic Authentication +``` +Username: clientid +Password: clientsecret +URL Param: ?tenantId= +``` + +Example: +``` +[https://one-mds.cfapps.eu10.hana.ondemand.com:443/businesspartner/v0/soap/BusinessPartnerBulkReplicateRequestIn?tenantId=](https://one-mds.cfapps.eu10.hana.ondemand.com:443/businesspartner/v0/soap/BusinessPartnerBulkReplicateRequestIn?tenantId=) +``` + +### OAuth Authentication +Use bearer token from XSUAA service. + +## Available Endpoints + +All endpoints use HTTP POST: + +| Endpoint | Purpose | +|----------|---------| +| BusinessPartnerBulkReplicateRequestIn | BP inbound replication | +| BusinessPartnerBulkReplicateRequestConfIn | BP confirmation inbound | +| BusinessPartnerRelationshipBulkReplicateRequestIn | BP relationship inbound | +| BusinessPartnerRelationshipBulkReplicateRequestConfirmIn | BP relationship confirmation | +| KeyMappingBulkReplicateRequestIn | Key mapping inbound | +| KeyMappingBulkReplicateRequestConfirmIn | Key mapping confirmation | + +**HEAD Request Support**: SOAP endpoints support HEAD requests for connectivity verification with SOAMANAGER. + +--- + +## Business Partner Replication Service + +**Service Name**: `BusinessPartnerSUITEBulkReplicateRequest_In` + +### Service Nodes + +| Node | Description | +|------|-------------| +| BusinessPartner | Core partner identity and classification | +| Person | Natural person demographic details | +| Organization | Legal entity attributes | +| Identification | ID documents and credentials | +| BankDetails | Payment account information | +| TaxNumber | Tax identification records | +| Role | Functional business assignments | +| Business Partner Group | Multi-entity groupings | +| Address Data | Contact and location details | +| Customer | Sales and account parameters | +| Supplier | Procurement specifications | + +### Key BusinessPartner Node Fields + +| Field | Description | +|-------|-------------| +| UUID | System identifier in receiver (optional) | +| CategoryCode | Partner classification (organization/person/group) | +| BlockedIndicator | Central blocking status | +| ReleasedIndicator | Business process eligibility | + +### Address Data Includes +- Postal addresses (street, city, postal code) +- Communication channels (phone, email, fax, web) +- Validity periods for each contact method + +### Customer Information Contains +- Account group and corporate grouping +- Sales/billing/delivery blocking reasons +- Tax classifications and industry codes +- Condition groups (up to 5 variants) + +### Mandatory Fields +- BankAccountID (bank details) +- ID (bank account identifier) + +--- + +## Business Partner Relationship Service + +**Service Name**: `BusinessPartnerRelationshipSUITEBulkReplicateRequest_In` + +### Service Nodes + +**BusinessPartnerRelationship** +- Role codes characterizing relationship features +- Validity periods +- UUID references +- Default indicators + +**ContactPerson** +- Workplace addresses +- Communications +- Functional roles + +### Supported Identifiers + +| ID Type | Supported | +|---------|-----------| +| Business Partner UUID | Yes | +| Business Partner Internal ID | Yes | +| Relationship Business Partner UUID | Yes | +| Relationship Business Partner Internal ID | Yes | +| Receiver Business Partner UUID | Yes | +| Receiver Business Partner Internal ID | Yes | +| Receiver Relationship BP UUID | Yes | +| Receiver Relationship BP Internal ID | Yes | +| IAM ID | No | +| External ID | No | + +--- + +## Key Mapping Service + +**Service Name**: `KeyMappingBulkReplicateRequest_In` + +### Key Parameters + +| Parameter | Description | +|-----------|-------------| +| BusinessSystemID | Source system identifier | +| TypeCode | Business object type (147=BP, 197=material) | +| ObjectIdentifierSet | Collection of object identifiers | +| ObjectIdentifier | Type code + key value combination | +| DefiningSchemeCode | Object Identifier Type Code (OITC) | +| KeyValue | ID value defined in target system | +| changeOrdinalNumber | Sequencing for incremental updates | +| actionCode | create/change/remove operations | + +### IAM ID Support +Use DefiningSchemaCode value `CDC_IAM_ID` for IAM ID. + +--- + +## Confirmation Services + +### Business Partner Confirmation +**Service Name**: `BusinessPartnerSUITEBulkReplicateConfirmation_In` + +### Nodes +- **BusinessPartner**: UUID, InternalID, ReceiverUUID, ExternalID, ReceiverInternalID +- **Customer**: InternalID, ReceiverInternalID +- **Supplier**: InternalID, ReceiverInternalID + +All parameters optional. + +### BP Relationship Confirmation +**Service Name**: `BusinessPartnerRelationshipSUITEBulkReplicateConfirmation_In` + +### Key Mapping Confirmation +**Service Name**: `KeyMappingBulkReplicateConfirmation_In` + +**MappingGroup Parameters**: BusinessSystemID, TypeCode, ObjectIdentifierSet, ObjectIdentifier, DefiningSchemeCode, KeyValue + +--- + +## Partial Data Handling + +Prevents data loss during SOAP outbound processing to S/4HANA or MDG. + +### Protected Scenarios + +| Scenario | Protection | +|----------|------------| +| Limited Entity Support | Unsupported entities not overwritten | +| Reduced Attribute Scope | Partial attributes preserved | +| Incomplete Entity Instances | Missing instances not deleted | +| Unsupported Roles | Role-specific data preserved | + +### Configuration Requirements +- Maintain exclude-filters on connected system +- Maintain include-filters on connected system +- Reference SAP Notes: 2659038, 2733112, 3087667 + +--- + +## Destination Configuration + +### Naming Convention + +For businessSystemId `SYSTEMID`: + +| Destination Name | Purpose | +|-----------------|---------| +| SYSTEMID_BPOUTBOUND | Business Partner replication | +| SYSTEMID_BPCONFIRM | Business Partner confirmation | +| SYSTEMID_BPRELOUTBOUND | Relationship replication | +| SYSTEMID_BPRELCONFIRM | Relationship confirmation | +| SYSTEMID_KMOUTBOUND | Key Mapping replication | +| SYSTEMID_KEYMAPCONFIRM | Key Mapping confirmation | + +### Destination Settings + +| Property | Value | +|----------|-------| +| Type | HTTP | +| Authentication | OAuth2, Basic, or Client Certificate | + +### URL Sources + +**S/4HANA Cloud**: Inbound services URL from SAP_COM_0008 communication arrangement + +**S/4HANA On-Premise**: Hostname + Calculated Access URL from SOAManager + +### Limit +Maximum 6 destinations per unique client connection. + +--- + +## SOAP Events (SAP Cloud ALM) + +### Inbound Event (1) +| Code | Description | +|------|-------------| +| BuPaDuplicateAddressId | Business Partner with given Address ID already exists | + +### Outbound Success Events (6) +| Code | Description | +|------|-------------| +| BuPaSent | BusinessPartner successfully sent to destination | +| BuPaRelSent | BusinessPartnerRelationship successfully sent | +| KmSent | KeyMapping successfully sent | +| BuPaConfirmationSent | BusinessPartner confirmation sent | +| BuPaRelConfirmationSent | BusinessPartnerRelationship confirmation sent | +| KmConfirmationSent | KeyMapping confirmation sent | + +### Confirmation Received Events (3) +| Code | Description | +|------|-------------| +| BupaConfirmationReceivedSuccessful | BusinessPartner confirmation processed successfully | +| BuPaRelConfirmationReceivedSuccessful | BusinessPartnerRelationship confirmation processed | +| KmConfirmationReceivedSuccessful | KeyMapping confirmation processed | + +### Send Failure Events (9) +| Code | Description | +|------|-------------| +| BuPaSendFailed | Failed BusinessPartner transmission | +| BuPaRelSendFailed | Failed BusinessPartnerRelationship transmission | +| KmSendFailed | Failed KeyMapping transmission | +| BuPaSendFailedDestinationNotFound | Destination not configured | +| BuPaRelSendFailedDestinationNotFound | Destination not configured | +| KmSendFailedDestinationNotFound | Destination not configured | +| BuPaSendFailedHttpsSchemeExpected | HTTPS required (Internet ProxyType) | +| BuPaRelSendFailedHttpsSchemeExpected | HTTPS required (Internet ProxyType) | +| KmSendFailedHttpsSchemeExpected | HTTPS required (Internet ProxyType) | + +### Wrong Scheme Configuration Events (6) +| Code | Description | +|------|-------------| +| BuPaSendFailedWrongSchemeConfigured | HTTP/HTTPS required (OnPremise ProxyType) | +| BuPaRelSendFailedWrongSchemeConfigured | HTTP/HTTPS required (OnPremise ProxyType) | +| KmSendFailedWrongSchemeConfigured | HTTP/HTTPS required (OnPremise ProxyType) | +| BuPaConfirmationFailedWrongSchemeConfigured | Wrong scheme for confirmation | +| BuPaRelConfirmationFailedWrongSchemeConfigured | Wrong scheme for confirmation | +| KmConfirmationFailedWrongSchemeConfigured | Wrong scheme for confirmation | + +### Confirmation Send Failure Events (6) +| Code | Description | +|------|-------------| +| BuPaConfirmationSendFailed | Failed to send confirmation | +| BuPaRelConfirmationSendFailed | Failed to send confirmation | +| KmConfirmationSendFailed | Failed to send confirmation | +| BuPaConfirmationSendFailedHttpsSchemeExpected | HTTPS required for confirmation | +| BuPaRelConfirmationSendFailedHttpsSchemeExpected | HTTPS required for confirmation | +| KmConfirmationSendFailedHttpsSchemeExpected | HTTPS required for confirmation | + +--- + +## Distribution Model Configuration (SOAP) + +### Constraints +- BP Relationship model requires active Business Partner model +- Cannot deactivate BP model if active BP Relationship model exists + +### Configuration Steps + +1. Navigate to Master Data Integration (Orchestration) +2. Access Fiori Launchpad → Manage Distribution Model +3. Create model: Provider = SAP Master Data Integration +4. Set consumer = businessSystemId +5. Select Business Object Type: `sap.odm.businesspartner.BusinessPartner` +6. Set Package Size (max recommended: 50) +7. Select API: `MDI_SOAP_BUSINESS_PARTNER` +8. Configure scheduling + +### Available Filters +- Authorization groups +- Country codes +- Customer information +- Supplier details + +--- + +## API Documentation + +**SAP Business Accelerator Hub**: [https://api.sap.com](https://api.sap.com) (filter: SAP Master Data Integration) + +Note: Hub specifications are not tenant-specific and exclude custom extensions. + +--- + +## Detailed Business Partner Service Nodes + +### 1. BusinessPartner Node (Core) + +| Field | Description | Necessity | +|-------|-------------|-----------| +| UUID | System identifier in receiver (empty on first replication) | Optional | +| CategoryCode | Organization/Natural person/Group classification | Optional | +| BlockedIndicator | Central blocking status | Optional | +| ReleasedIndicator | Business process eligibility | Optional | +| AuthorizationGroup | Authorization group assignment | Optional | +| ContactPermission | Contact permission controls | Optional | + +### 2. Person Node (Natural Persons) + +**Demographics**: +- Gender, Nationality, BirthDate, BirthPlace, DeathDate + +**Communication Preferences**: +- VerbalCommunicationLanguageCode, WrittenCommunicationLanguageCode + +**Personal Details**: +- MaritalStatus, Employer, Occupation + +**Name Components**: +- GivenName, FamilyName, MiddleName, NickName, BirthName +- AcademicTitle, Prefix, Suffix (multiple supported) + +### 3. Organization Node (Legal Entities) + +| Field | Description | +|-------|-------------| +| FoundationDate | Date of establishment | +| LiquidationDate | Date of dissolution | +| LegalFormCode | Legal form classification | +| GlobalLocationNumber | GLN identifier | +| Name1-4 | Multi-line name fields | +| IndustrySector | Industry with classification system codes | + +### 4. Identification Node + +| Field | Description | Necessity | +|-------|-------------|-----------| +| IDNumber | Identification number | Optional | +| IDTypeCode | Type classification | Optional | +| EntryDate | Date of entry | Optional | +| ValidityStartDate/EndDate | Validity period | Optional | +| CountryCode | Geographic validity | Optional | +| RegionCode | Regional validity | Optional | +| IssuingAuthority | Authority reference | Optional | + +### 5. BankDetails Node + +| Field | Description | Necessity | +|-------|-------------|-----------| +| BankAccountID | Bank account identifier | **Mandatory** | +| ID | Account ID | **Mandatory** | +| CountryCode | Bank country | Optional | +| BankRoutingID | Routing number | Optional | +| IBAN | International bank account number | Optional | +| AccountHolderName | Name on account | Optional | +| ValidityStartDate/EndDate | Validity period | Optional | + +### 6. TaxNumber Node + +| Field | Description | +|-------|-------------| +| TaxIDNumber | Tax identification number | +| TaxNumberTypeCode | Type categorization | +| Multiple tax numbers supported per entity | + +### 7. Role Node + +| Field | Description | +|-------|-------------| +| RoleCode | Business function assignment | +| ValidityStartDate | Role start date | +| ValidityEndDate | Role end date | +| Multiple concurrent roles supported | + +### 8. Business Partner Group Node + +| Field | Description | +|-------|-------------| +| GroupTypeCode | Group type classification | +| PrimaryGroupName | Primary group identifier | +| SecondaryGroupName | Secondary group identifier | +| FormOfAddress | Address form specification | + +### 9. Address Data Node (Comprehensive) + +**Communication Elements**: + +| Element | Fields | +|---------|--------| +| Email | Address, ValidityStartDate/EndDate, DefaultIndicator | +| Phone | CountryCode, SubscriberID, Extension, SMSCapability | +| Fax | CountryCode, DialingCode, Number | +| Website | URI, URITypeCode | +| Preferences | CommunicationLanguageCode, CommunicationMedium | + +**Postal Components**: + +| Category | Fields | +|----------|--------| +| Street | StreetName, StreetPrefix, StreetSuffix | +| Building | HouseNumber, HouseNumberSupplement, Building, Floor, RoomNumber | +| Postal | PostalCode (Street), POBoxPostalCode | +| Location | City, Region, County, District, CountryCode | +| Additional | CareOfName, TimeZone, TaxJurisdiction, TransportationZone | + +**PO Box Address**: +- POBox, POBoxDeviatingCity, POBoxDeviatingRegion +- POBoxDeviatingCountry, DeliveryServiceType + +**Script Variants**: +- AddressRepresentationCode (different character sets) + +**Priority Rule**: When both CompanyPostalCode and POBoxPostalCode exist, CompanyPostalCode takes precedence. + +### 10. Customer Node (Sales & Distribution) + +**Classification**: +| Field | Description | +|-------|-------------| +| AccountGroupCode | Customer account group | +| CustomerGroupCode | Customer grouping | +| NielsenRegionCode | Nielsen region | +| IndustryCode1-5 | Industry classifications (up to 5) | +| BusinessTypeCode | Business type designation | + +**Business Controls**: +| Field | Description | +|-------|-------------| +| OrderBlockReasonCode | Order blocking reason | +| BillingBlockReasonCode | Billing blocking reason | +| DeliveryBlockReasonCode | Delivery blocking reason | +| SalesSupportBlockReasonCode | Sales support block | +| PostingBlockReasonCode | Posting block | +| CentralDeletionFlag | Central deletion indicator | + +**Financial**: +| Field | Description | +|-------|-------------| +| TaxGroupCode | Tax classification | +| AnnualSalesVolume | Annual sales with currency | +| AnnualSalesVolumeYear | Reference year | +| VATLiabilityIndicator | VAT liability | +| EqualizationTaxRelevance | Equalization tax | + +**Condition Groups**: ConditionGroup1-5 (pricing) + +**Extension Fields**: ExtensionCode1-10 (custom codes) + +**Sales Arrangements**: +| Field | Description | +|-------|-------------| +| Incoterms | Delivery terms | +| TransferLocation | Transfer point | +| PartialDeliveryControl | Partial delivery settings | +| CompleteDeliveryControl | Complete delivery settings | +| SalesOrganizationGrouping | Sales org grouping | +| PriceGroupCode | Price group | +| CurrencyCode | Transaction currency | +| SalesGroupCode | Sales group | + +### 11. Supplier Node (Procurement) + +Similar structure to Customer node with procurement-specific attributes: +- Purchasing organization assignments +- Vendor classification codes +- Payment terms and conditions +- Procurement blocking reasons + +--- + +## BP Relationship Service Detail + +### BusinessPartnerRelationship Node + +| Field | Description | Necessity | +|-------|-------------|-----------| +| RoleCode | Relationship category | Optional | +| StartDate | Validity start | Optional | +| EndDate | Validity end | Optional | +| RelationshipBusinessPartnerUUID | Related partner UUID | Optional | +| DefaultIndicator | Default when multiple exist | Optional | + +### ContactPerson Node + +**Contact Details**: +- BusinessPartnerFunctionalAreaCode (department) +- ContactPersonNote (comments) +- VIPReasonCode (importance indicator) +- BusinessPartnerFunctionTypeCode (job function) +- PowerOfAttorneyTypeCode (authority level) + +**Receiver IDs**: +- SupplierContactPersonID +- CustomerContactPersonID + +**Workplace Address**: +- DepartmentName, FunctionalTitle +- Building, Floor, Room +- CorrespondenceShortName + +**Communication** (same structure as Address Data): +- Email, Telephone, Facsimile, WebURL + +--- + +## Documentation Links + +- **SOAP APIs**: [https://help.sap.com/docs/master-data-integration/sap-master-data-integration/soap-apis-for-business-partners](https://help.sap.com/docs/master-data-integration/sap-master-data-integration/soap-apis-for-business-partners) +- **Endpoints**: [https://help.sap.com/docs/master-data-integration/sap-master-data-integration/endpoints-for-soap-replication](https://help.sap.com/docs/master-data-integration/sap-master-data-integration/endpoints-for-soap-replication) +- **Partial Data Handling**: [https://help.sap.com/docs/master-data-integration/sap-master-data-integration/support-for-partial-data-handling](https://help.sap.com/docs/master-data-integration/sap-master-data-integration/support-for-partial-data-handling)