Stakeholder  Role










Integration Flow Overview

Flow Diagram

SalesForce will consume the SAP Price Condition API proxy exposed on the API Management Platform, providing the Price Conditions data, the type of call (synch / asynch), and the call back URL (if asynch) The API proxy triggers an integration flow in SAP Cloud Integration. 

The diagram must include the following information:

The EA names of the interfaced applications, partners or marketplaces (see EA reference)The location of each interfaced applications: AWS landing ZoneSite if local deploymentSaaS (SAP / Google / AWS / other Cloud)PaaS (SAP / Google / AWS)The EA business object name being transferred (see EA reference)For both the southbound and northbound interface, provide the following technical detailsThe protocol used (HTTPS, FTPS, RFC, etc)The URL used to reach the inbound/outbound destinationThe authentication mechanism used (BASIC, OAuth, …)The data format used (json, xml, plain file, …)

General attributes

Integration Flow name

SAP_Pricing_API

Source Application (EA name)

Salesforce Community Cloud

Source Protocol

REST

Source Authentication Mechanism

OAuth authentication

Source Format

json

Business Object (EA Name)

Pricing

Target Application (EA name)

SAP WP1 - SD

Target Protocol

RFC

Target Authentication Mechanism

Basic Authentication

Target  Format

XML

Orchestration

[Source Trigger, Integration Platform Trigger, Target Trigger]

Trigger Frequency


Volumetry [unit]

[x] [unit]/[period]

Implementation details (use or remove relevant sections)

This section contains platform specific technical implementation details and its content will vary depending on the integration solution used. Adapt the content according to the actual needs.

SAP Cloud Integration (A2A)

Entry point

integration flow “Z_PRICE_CONDITIONS”

Https: /priceConditions/bulk

integration flow “Z_Price_Conditions_Integration”

NA

Configurable parameters

integration flow “Z_PRICE_CONDITIONS”

ENABLE_LOG: define if we want to log some data

integration flow “Z_Price_Conditions_Integration”

ENABLE_LOG: define if we want to log some data
SERVICE_CREDENTIALS_NAME: define the credentials for the basic authentication of SAP Alert Notification API

SERVICE_RESOURCE_EVENTS_URL: define the endpoint of the SAP Alert Notification API

Process type

It is an asynchronous process based on 2 integration flows (the first one to call SAP, the second one to update Salesforce with the SAP results). 

In the integration flow “Z_PRICE_CONDITIONS”  

  • A first integration process stores the payload request in the datastore “PRICE_CONDITIONS” and  sends back an “Acknowledge” response
  • A second integration process reads the content of this datastore, calls the SAP Function Module “Z_SD_CRM_CREATE_PRICING” and then stores the results in the datastore “Z_SD_CRM_CREATE_PRICING” after splitting the SAP response in buckets of 200

In the integration flow “Z_Price_Conditions_Integration”, the integration process reads the datastore “Z_SD_CRM_CREATE_PRICING” and call the Salesforce API to update Salesforce with the SAP results 

Credentials

Roles

The user that calls this integration flow should have the role SAP_Pricing

Integration Flow Details

Integration Flow Z_PRICE_CONDITIONS

  • The Content Modifier component (Initialize) defines if we want to log the data or not
  • The Groovy Script component (log input Request) logs the request payload sent by Salesforce if the logging is enabled
  • The JSON To XML Converter component (Convert from JSON to XML) converts the request payload to XML 
  • The Write component (SaveInputRequest) writes the payload request in the datastore “PRICE_CONDITIONS”
  • The Content Modifier component (Acknowledgement) sends back the response “{"message":"acknowledged"}” to Salesforce
  • The Content Modifier component (Save targetID and SourceId) saves the source and destination (we can receive data from different Salesforce and update different SAP systems)
  • The Message Mapping component (SAP Request Mapping) map the fields received from Salesforce into the input fields of the SAP Function Module  “Z_SD_CRM_CREATE_PRICING” 
  • The XML Modifier component (Remove XML Declaration) remove the xml declaration before calling the SAP Function Module
  • The Content Modifier component (Create SAP body) prepares the body of the SAP Function Module
  • The Request Reply component (Call SAP FM) sends the ta to SAP by calling the RFC passed in the Salesforce request
  • The Process Call component (Process Call 1) calls the local integration process “Split the response from RFC into multiple datastore entries”

Components of the local integration process

  • The Iterating Splitter component(Split the response by group before saving) splits the SAP response in n messages with 200 nodes each
  • The Groovy Script component (Set Unique ID) generates an unique ID for each message before saving it
  • The XML Modifier component (Remove XML Declaration) remove the xml declaration before writing the data in the datastore
  • The Content Modifier component (Prepare Data before saving) prepare the response by adding the source in the SAP response
  • The Write component (Save in DS) writes the SAP Response in the datastore “PRICE_CONDITIONS_RESULTS”

Integration Flow Z_Price_Conditions_Integration

This integration flow is divided in 3 integration processes:

  • One to prepare the data to be sent
  • One to call the Salesforce API (This one is splitted in x integration processes. One by Salesforce system
  • A last one to send an Alert Notification process
Integration process to prepare the data  
  • The Groovy Script component (ExtractSourceId) extract the source Id in order to know which Salesforce system should be called to update the SAP results
  • The Message Mapping component (Map Salesforce Return) map the fields received from SAP into the input fields of the Salesforce API body
  • The XML To JSON Converter component (XML to JSON Converter 1) converts the request payload to json
  • The Groovy Script component (remove first { and last } from body) remove the first { and last } from the body
  • The Content Modifier component (generate json request) generate the final payload request of the Salesforce API
  • The ProcessDirect Adapter calls the right Salesforce integration process based on the sourceId previously extracted
Integration Process to call the Salesforce API

Example: Integration process to call the API on Salesforce Prod

  • The Request Reply component (Call Salesforce PROD) calls the Salesforce API in Production by using the Salesforce Adapter with the Production credentials
  • The ProcessDirect Adapter calls the integration process “Send Alert Notification”
Integration Process to send the Alert Notification
  • The JSON To XML Converter component (Convert from JSON to XML 1) converts the request payload to XML
  • The XSLT Mapping component (keep only the results in failure) filters all records with success=false
  • The Router component (Success=false) checks if the Salesforce response contains some records with success=false
    If No, end of the integration process
    If Yes, sends Alert Notification
  • The Content Modifier component (Initialize values) initialize all variables needed to call the SAP Alert Notification API (endpoint, timeout, user credentials)
  • The Groovy Script component (Prepare Event) prepares the body of the event passed to the SAP Alert Notification API
  • The Groovy Script component (Send Alert Notification) call the SAP Alert Notification API by using the endpoint and the user credentials previously extracted

Logging

API Management

API Providers

For each API provider, provide the following information:

API Provider: SCPI_NON_HR_DEV

Description

Define the connection details for integration flows hosted on SCPI Non HR (DEV env)

Type

[Cloud Integration]

Host/Port

l100624-iflmap.hcisbp.eu1.hana.ondemand.com/443

Catalog Service details (oData)




API Provider: SCPI_NON_HR_PROD

Description

Define the connection details for integration flows hosted on SCPI Non HR (PROD env)

Type

[Cloud Integration]

Host/Port

l100625-iflmap.hcisbp.eu1.hana.ondemand.com/443

Catalog Service details (oData)



API Proxies

General attributes

For each API proxy, provide the following information:

API Proxy: SAP_Pricing_API

Description

This API updates the Pricing Condition in SAP. It is called by Salesforce Core

Host Alias

api.solvay.com

Base Path

/v1/pricing/

Target Endpoint (provider)

SCPI_NON_HR_PROD

Target Endpoint Path

/http

Link to the API specification

SAP Price Conditions API - API Reference


Authentication

Describe the authentication mechanism protecting the access to the API

Key Value Maps


KVM Name

Usage

APIM_SCP_CRED

Contains the credentials for the basic authentication to SCPI NON HR




API Flows details

Describe the API Flow and the policies in place

Proxy Endpoint
Preflow
  • The VerifyAccessToken policy is attached to the API resource to be protected in order to ensure that all requests to an API are verified.
priceConditions/bulk

All the policies below allow to validate the JSON request 

  • The MessageValidation policy (CheckMalformedJson) check if the json request is well-formed based on the content type
  • The KeyValueMapOperations policy (GetJsonSchema) get the stored schema from KVM encoded in base64 
  • The Javascript policy (ValidateJson) decode the base64 schema at first and then validate the json by using the tv4 function
  • The RaiseFault policy (InvalidJson) raise an exception if the json request doesn’t match the schema 
Target Endpoint
  • The AssignMessage policy (RemoveAuthorization) removes the Authorization header received from Salesforce Core
  • The AssignMessage policy (RemoveAcceptHeader) removes the Accept header received from Salesforce Core
  • The AssignMessage policy (AddAcceptHeader) sets output type to JSON
  • The KeyValueMapOperations policy (ExtractCredentials) allows you to read a key value map and to retrieve the credentials stored in the “SCPI_Credentials” KeyValue Map.
  • The BasicAuthentication policy (AddBasicAuthentication) add the Bearer token, generated from the userID and password previously retrieved in the ExtractCredentials policy, in the Authorization header before calling the integration flow on SCPI


API Specifications

Link to the OPENAPI specifications

https://proddevportalapimgmtpr-jpzc9898py.hana.ondemand.com/product/SAP_Price_Condition_API/api/SAP_Pricing_API

API Products

For each API product, provide the following information:

API Product: SAP_Price_Condition_API

Description

SAP Price Condition API

API list

  • SAP_Pricing_API
  • OAuthService

Permissions

Discovery: SalesInternalDev

Subscription: SalesInternalDev

Rate Plan

NA


Specific Configuration Details

[]

Security

Password management


Environment

Vault

Password ID

Usage










Digital Certificates management

[Details the certificates involved in the connections to the source/destination apps and how to manage their lifecycle]

Network Security management

Firewall rules

[Link to related file]

Security Groups

[Link to related file]

Cloud Connector configuration

[To be detailed]

Change Management

[Guidance to be detailed]

Operations

Monitoring

Describe the common and specific monitoring activities related to the integration flow

Check the Credentials in Postman

URL : https://login.salesforce.com/services/oauth2/token

Grant_type : password


Error handling and logging

Describe the common and specific error handling and logging activities related to the integration flow

Flow Stopped to work with no apparent reason

The displayed error message in SCPI is : 

org.apache.camel.CamelException: Exception occurred during the XMLtoJSON conversion : Missing ';' in XML entity

Solution : undeploy/redeploy the integration flow

Alerting

Describe the common and specific alerting actions related to the integration flow

Reporting












































Assumptions:
95% of quotes have less than 50 OQLI Pricing Conditions
1% of quotes my have more than to 200 OQLI

In future when the sold to group is implemented there is a possibility of quotes with up to  3000 OQLI (Pricing Conditions). Therefore these quotes should be internally splitted by salesforce into multiple bulks

Single call to API Gateway cannot take more 5 seconds (governor limits)

Salesforce Approach:
* Standard Quotes  (up to 500 OQLI)  will be sent from SF to API gateway via continuation that is safe from concurrent call perspective 

* Very Large Quotes (bigger than 500 OQLI = quotes with multiple sold to) will be internally divided in salesforce into bulks and sent to API Gateways using queable approach that is not as safe from governor limits perspective but allows to address CPU limits per transaction.  

 

Landscape:

.
SALESFORCE landscape is more complex than SAP therefore we need to ensure that multiple test SF environments. To achieve this we need to add source system id  to the call to API to be able to identity the system to which we should send the response.



Security:

API cloud integration should store credentials to all SF instances to ensure to be able to connect to them when we are sending the response.

  • In SFDC there will be a dedicated user created to support this integration
  • Access to salesforce should be achieved via OAUTH user and password flow 
  • Dedicated connected app that will provide unique customer key and consumer secret. PP_Sap_Pricing_Condition_Callback. The custom permission that disabled automation on OQLI  has been added directly to the connected app
  • The token should be added to the header of the message (bearer) 



Integration Flow

For quotes smaller than 600 OQLI




Authorization and caching api gateway access token



SAP API GATEWAY Pricing Condition interface:
Request,
Method Post,
URL :https://dev-api.solvay.com/v1/pricing/priceConditions/bulk,
AUTHORIZATION: Bearer 

BODY

    {

        "source": "salesforceint",

        "target": "WQ1",

        "quoteId": "string",

        "priceConditions": [

            {             

                "quoteLineItemId": "string",

                "customerId": "string",

                "materialId": "string",

                "conditionType": "string",

                "table": "string",

                "salesOrganization": "string",

                "distributionChannel": "string",

                "incoterm": "string",

                "plant": "string",  // optional

                "validityStartDate": "2023-08-30",

                "validityEndDate": "2023-08-30",

                "conditionCurrency": "string",

                "pricingUnit": "string",

                "pricingUnitOfMeasure": "string",

  “scaleType”:”A”, //default value 

  "scales": [  // at least one scale and always sorted by quantity they need to put into sap into order

                    {

                        "quantity": "string", // optional but only when there is one scale

                        "amount": "string"

                    }

                ],             

               "priceJustification": "string" // optional

            }

        ]

    }

Response OK

BODY

    {"message":"acknowledged"}

In case of internal issues in SAP we are retrieving “fault” attribute in the body and then inside the fault there is a “description” attribute with human friendly error. SAP Integration team will provide the close list of descritions that  can be mapped and for example translated on SF side. 


Response KO

BODY

    {

    "fault": {

        "description": "Invalid Json request",

        "detail": {

            "ErrorCode": "303",

            "ErrorDataPath": "/priceConditions/0/scales/0/xxxx",

            "ErrorSchemaPath": "",

            "ErrorMsg": "Additional properties not allowed"

        }

    }

}


BODY

    {

    "fault": {

        "description": "Internal error",

     }

}

Possible error Descriptions:


Http status

Description 

Comments

1

400

Invalid Json request


2




3




4





























Examples

{

    "source": "sfUAT",

    "quoteId": "12345",

    "target": "WQ1"        ,

    "priceConditions": [

           {                

                "quoteLineItemId": "12345",

                "customerId": "65429",

                "materialId": "143742",

                "conditionType": "PRE",

                "table": "999",

                "salesOrganization": "NL05",

                "distributionChannel": "6X",

                "incoterm": "CIP",

                "plant": "string",

                "validityStartDate": "2023-08-30",

                "validityEndDate": "2023-08-30",

                "conditionCurrency": "EUR",

                "pricingUnit": "1",

                "pricingUnitOfMeasure": "KG",

                "scales": [ // at least one scale and always sorted by quantity

                  {

                    "quantity": "string",

                    "amount": "string"

                  }

                ],

                "priceJustification": "string"

              },
{                

                "quoteLineItemId": "12345",

                "customerId": "65429",

                "materialId": "143742",

                "conditionType": "PRE",

                "table": "999",

                "salesOrganization": "NL05",

                "distributionChannel": "6X",

                "incoterm": "CIP",

                "plant": "string",

                "validityStartDate": "2023-08-30",

                "validityEndDate": "2023-08-30",

                "conditionCurrency": "EUR",

                "pricingUnit": "1",

                "pricingUnitOfMeasure": "KG",

                "scales": [ // at least one scale and always sorted by quantity

                  {

                    "quantity": "string",

                    "amount": "string"

                  },
    {

                    "quantity": "string",

                    "amount": "string"

                  },
    {

                    "quantity": "string",

                    "amount": "string"

                  }

                ],

                "priceJustification": "string"

              },

              {

                "quoteLineItemId": "12345",

                "customerId": "65429",

                "materialId": "143742",

                "conditionType": "PRE",

                "table": "999",

                "salesOrganization": "NL05",

                "distributionChannel": "6X",

                "incoterm": "CIP",

                "plant": "string",

                "validityStartDate": "2023-08-30",

                "validityEndDate": "2023-08-30",

                "conditionCurrency": "EUR",

                "pricingUnit": "1",

                "pricingUnitOfMeasure": "KG",

                "scales": [ // at least one scale and always sorted by quantity

                  {

                    "quantity": "string",

                    "amount": "string"

                  }

                ],

                "priceJustification": "string"

              }


            ]

        },

       



[{

    "sourceId": "sfUAT",

    "tartgetId": "PF1"   

    "pricingCondioions":[{

        "quoteId": "12345",

        "quoteLineItemId": "12345",

        "customerId": "12345",

        "materialId": "12345",

        "conditionType": "string",

        "table": "string",

        "salesOrganization": "FR04",

        "distributionChannel": "12",

        "incoterm": "string",

        "plant": "string",

        "validityStartDate": "2023-08-02",

        "validityEndDate": "2024-08-02",

        "conditionCurrency": "EURO",

        "pricingUnit": "12",

        "pricingUnitOfMeasure": "KG",

        "scales": [ // aways sorted by quantity 

        {

            "quantity": "100",

            "amount": "1000"

        }, {

            "quantity": "200",

            "amount": "900"

        }, {

            "quantity": "500",

            "amount": "850"

        }

        ],

        "priceJustification": "test"      

            

    },

    {

        "quoteId": "12345",

        "quoteLineItemId": "12345",

        "customerId": "12345",

        "materialId": "12345",

        "conditionType": "string",

        "table": "string",

        "salesOrganization": "FR04",

        "distributionChannel": "12",

        "incoterm": "string",

        "plant": "string",

        "validityStartDate": "2023-08-02",

        "validityEndDate": "2024-08-02",

        "conditionCurrency": "EURO",

        "pricingUnit": "12",

        "pricingUnitOfMeasure": "KG",

        "scales": [ // no scaling prices only one quantity and amount  

        {

            "quantity": "500", // minimum amount 

            "amount": "999"

        }

        ],    

        "priceJustification": "test"   

            

    },{

    "sourceId": "sfUAT",

    "tartgetID": "WP1"   

    "pricingCondioions":[{

        "quoteId": "12345",

        "quoteLineItemId": "12345",

        "customerId": "12345",

        "materialId": "12345",

        "conditionType": "string",

        "table": "string",

        "salesOrganization": "FR04",

        "distributionChannel": "12",

        "incoterm": "string",

        "plant": "string",

        "validityStartDate": "2023-08-02",

        "validityEndDate": "2024-08-02",

        "conditionCurrency": "EURO",

        "pricingUnit": "12",

        "pricingUnitOfMeasure": "KG",

         "scales": [ // aways sorted by quantity 

        {

            "quantity": "100",

            "amount": "1000"

        }, {

            "quantity": "200",

            "amount": "900"

        }, {

            "quantity": "500",

            "amount": "850"

        }

        ],

        "priceJustification": "test"      

            

    },

    {

        "quoteId": "12345",

        "quoteLineItemId": "12345",

        "customerId": "12345",

        "materialId": "12345",

        "conditionType": "string",

        "table": "string",

        "salesOrganization": "FR04",

        "distributionChannel": "12",

        "incoterm": "string",

        "plant": "string",

        "validityStartDate": "2023-08-02",

        "validityEndDate": "2024-08-02",

        "conditionCurrency": "EURO",

        "pricingUnit": "12",

        "pricingUnitOfMeasure": "KG",

        "scales": [ // no scaling prices only one quantity and amount  

        {

            "quantity": "500", // minimum amount 

            "amount": "999"

        }

        ],

        "priceJustification": "test"   

            

    }

    ]

}]




 


SF DEV INTEGRATION CREDENTIALS (env without real data) 

DEV 2 : (removed)
User name: sap_pc.integration@solvay.com.crm.pricingdv2

Password: TurboMacarena99%2

Consumer Key: 3MVG92u_V3UMpV.hVLkz3fgxWmnvxkc27lsaeKNTexEQudwfFDLS2C1JN5LDMp6gsa8oaZPqaF9UdcpjQkggf

Consumer Secret:  53F5EC1267F550F0AB892E8F8C6C047390AC8BA76DE2FC6C98C8C70073B40CFB

Test Email for salesforce Update Issues

Bartosz.borowiec-ext@solvay.com

DEV 3:
User name: sap_pc.integration@solvay.com.crm.pricingdv3

Password: TurboMacarena66%2

Consumer Key: 3MVG97srI77Z1g79BWZAT8wphYP8PSd5l_zQarKVNjt.QkHzQpHBw8EbpXi4dZbTCSgtuAp7bnlKzfXEMJsUr

Consumer Secret:  2C8A221894EDF82E77C0EBFF53F48FE2DFD2FF75532AF55C683B34534FF52B90
Security Token:
dNovjH5Y6U59cwYnPytQ7vH2a

Test Email for salesforce Update Issues

Bartosz.borowiec-ext@solvay.com


MNTINT:

Username: sap_pc.integration@solvay.com.crm.mntprojint

Password: Macarena99%

Consumer Key: 3MVG9vYM8JyKwjKbXeQ6pzb_bqSo07b0zo_lY7qvGzTKwGaeF3GLzdYdXC1lKdr58fG70uDguQWUaUys7pIl1

3MVG9vYM8JyKwjKbXeQ6pzb_bqZBuizocP1LR3Lylv2FS9zdPLjTTc7c5mfNXozCD89buFbTOmgkn.HS5LMEA

Consumer Secret: 

073D86DC7D3C893EE54DA9EC1A89278243CFE8037D6E975277354868D7ED096C

4F32A05222844BD4DFD4831C9E00D763F8D462E2C14DA9C590A80A2F84F71E01

Security Token:dcIL9sLtFGV58reWheBCuWBMC

Macarena99%dcIL9sLtFGV58reWheBCuWBMC

Macarena100%OHfGHE7tP4gsLVtEeZ6OJXjsK

INT:

Username (Subject Alias for JWT token):sap_pc.integration@solvay.com.crm.int

Password: N/A

Consumer Key(Issuer Alias for JWT token)

3MVG9Yq55Et8XwXP9iVZfmDtOoVskzmZ6v3dlYChiaArvU8V.rsa42ebbWcymR5Hai2WEE0G4xQAGiWkzxNzN

Consumer Secret: N/A

Certificate: 

-----BEGIN CERTIFICATE-----

MIIEJzCCAw+gAwIBAgIIBlm1isLDxbgwDQYJKoZIhvcNAQELBQAwdTELMAkGA1UE

BhMCRlIxDzANBgNVBAoTBnNvbHZheTELMAkGA1UECxMCRFQxHTAbBgNVBAMMFFNG

SU5UX0pXVC5zb2x2YXkuY29tMSkwJwYJKoZIhvcNAQkBFhphcGltLm9wZXJhdGlv

bnNAc29sdmF5LmNvbTAeFw0yNDA0MzAwNjU0MDBaFw0yNTA0MzAwNjU0MDBaMHUx

CzAJBgNVBAYTAkZSMQ8wDQYDVQQKEwZzb2x2YXkxCzAJBgNVBAsTAkRUMR0wGwYD

VQQDDBRTRklOVF9KV1Quc29sdmF5LmNvbTEpMCcGCSqGSIb3DQEJARYaYXBpbS5v

cGVyYXRpb25zQHNvbHZheS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK

AoIBAQC+1Vrs8oK5JtbcC1rPJY7996A++vR03c78mAs2UH9p4TYt5DkcjG+btedQ

arWeusy9a9L25Tj1K+bxct9vxLqdcvdT79wZjh8xKwD2aFnJehyKKYTUd9VctKwk

Adjo4DcNL1SkQeOYHkwyabsB0E0gjEAQ51qvaiBJRyN52SMhAg4MjR+3j3bvRe1K

m0N5VZYSs6d6aclpVnbn926wkd4u6xhjVqPIN4Ju/Q2z5S+wB9/h6LmLOgQOuZOJ

B04oPnD+YrChdlRm8wTVAsMDL0Qa3fkfBogvEroFAF5cJ/gTJN3LT3C4ASK3Md7Y

ASg089zKdJLB2fubPjEr+XUJDbdtAgMBAAGjgbowgbcwDAYDVR0TAQH/BAIwADAd

BgNVHQ4EFgQUkqRL/oNnPdR5QcDHkbz4Isv8QfQwCwYDVR0PBAQDAgPoMCcGA1Ud

JQQgMB4GCCsGAQUFBwMBBggrBgEFBQcDAgYIKwYBBQUHAwMwHwYDVR0RBBgwFoIU

U0ZJTlRfSldULnNvbHZheS5jb20wEQYJYIZIAYb4QgEBBAQDAgZAMB4GCWCGSAGG

+EIBDQQRFg94Y2EgY2VydGlmaWNhdGUwDQYJKoZIhvcNAQELBQADggEBAC21raYS

/vxWYipgMk++Ke0JMg3vcFdqJdaPEUqqRscXHGcQt7H4IlUAN8hbgU6xlS6XvwYY

QPCvNw4OXFNVESnYKv7oVN8bkbAv4ys0EtNB0R+z/8aTk8hfZVySUw4Gn4MWhAwc

Qiko9SDPbINnLLPAkmsGqsxWPmsWZYTT71bd3txSD6X5I5oQv9U1Ocj3ceugTJKY

TaiPDWLKh04f3Zx0whDb43Ry4iCCugPCI52ZFt/mGI2XvNPGEeajc0wb/bAqVSRJ

CKAsCHGX+M1mU4WDh42wUMsexrnrhNFr8YXQgmI+Q7+06WCcQe+NB1DaPknf7rRQ

RzEbfnPd3I/7H4s=

-----END CERTIFICATE-----







UAT:

Username (Subject Alias for JWT token): sap_pc.integration@solvay.com.crm.uat

Password: Macarena66%

Consumer Key (Issuer Alias for JWT token): 

3MVG9Yq55Et8XwXP9iVZfmDtOoQrGtb75XhcvwQPNjkNFkrVZQH1_V54pr697PNBLDPvMevN2VNfYQDx11ULT

Consumer Secret: C82E69A0238DC77636830326BAB9BCD22F330CA10A2CCB76C5CD8D4446666ED2

Security Token:g2M5Hd4W3ey32x3l25F4X3Ep

Certificate: 

-----BEGIN CERTIFICATE-----

MIIEJzCCAw+gAwIBAgIIWy+gaeDBiP4wDQYJKoZIhvcNAQELBQAwdTELMAkGA1UE

BhMCRlIxDzANBgNVBAoTBnNvbHZheTELMAkGA1UECxMCRFQxHTAbBgNVBAMMFFNG

VUFUX0pXVC5zb2x2YXkuY29tMSkwJwYJKoZIhvcNAQkBFhphcGltLm9wZXJhdGlv

bnNAc29sdmF5LmNvbTAeFw0yNDA0MzAwNzQ4MDBaFw0yNTA0MzAwNzQ4MDBaMHUx

CzAJBgNVBAYTAkZSMQ8wDQYDVQQKEwZzb2x2YXkxCzAJBgNVBAsTAkRUMR0wGwYD

VQQDDBRTRlVBVF9KV1Quc29sdmF5LmNvbTEpMCcGCSqGSIb3DQEJARYaYXBpbS5v

cGVyYXRpb25zQHNvbHZheS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK

AoIBAQDXYfdXVOMezqgnjcrDTcoV/Ruc0GU0uZaoj5WdpnSovoIzCQUANVUrHuuw

mvbKNfbgXHoKCn3oXb6X17SYPjBjiLArpv5E/umcNme93e5IeO/zojXR3Y5xucle

Ci4C8cfKrSu5G5Kf/rTygxDqo/lP8pKvgzSxCmWLRpIaebZYTu+TfKodre/d5g1J

/0qVOM+kHPSziRBCN/IXXhVgbEq8yJ3rTGiQ/m/AvqpItz/WPETXyukTiw6o97Y1

awZy3Nt/W89Y8y1Dhcq9K7zeemyJpjTdwWGLTMuBQcMnYO7ONR4Vx6wFFyXtvH3e

R/9cmM1I6DKZ58x/ogTD5885dJRHAgMBAAGjgbowgbcwDAYDVR0TAQH/BAIwADAd

BgNVHQ4EFgQUKows952pKa6eqjYn5y+ButTPVf4wCwYDVR0PBAQDAgPoMCcGA1Ud

JQQgMB4GCCsGAQUFBwMBBggrBgEFBQcDAgYIKwYBBQUHAwMwHwYDVR0RBBgwFoIU

U0ZVQVRfSldULnNvbHZheS5jb20wEQYJYIZIAYb4QgEBBAQDAgZAMB4GCWCGSAGG

+EIBDQQRFg94Y2EgY2VydGlmaWNhdGUwDQYJKoZIhvcNAQELBQADggEBAIwbScSy

vJYpwWs5PHvijrU2sK3ux8H7f1r/YzCrjR4GkVSQJnVxOHx2+7v0ublVb49sP/cU

z/HuLjyb3Caoh7H+m3SlmC8g4CiBApoe1iEOVCaksmospaCqzHVsPokY/7grsN6g

cJnJQssXd2vwcLmsNj89DRVPsRw9O+q6C9PxZj8vJdEaJYrvo/t4JvnYhZzV8/XK

WOlJXw4WHaxDCFvWoFDd0tCTgmXZPvdomkWzt9Ugcz4j1qfnTm7nunGBSQISNm4Q

XOuHReHBZ5xlQGTgHm3lUOH9N4iO9l6lyt7hbxCl2TB0DWPLGb1j0JuojgqqdDzX

adTAycwqBAKKv+o=

-----END CERTIFICATE-----



PROD:

Username: sap_pc.integration@solvay.com.crm
Password:  Please contact Salesforce Release Manager

Consumer Key: Please contact Salesforce Release Manager

Consumer Secret: Please contact Salesforce Release Manager

Security Token:Please contact Salesforce Release Manager

Certificate: Please contact Salesforce Release Manager


Call back message from SAP Cloud Integation to SF:
Important: Maximum number of record updated in one bulk is 200

Method PATCH,
URL : {{_endpoint}}/services/data/v{{version}}/composite/sobjects,
BODY:
{

    "allOrNone": "false",

    "records" : [{

      "attributes" : {"type" : "SLV44_ONE_Quote_Line_Item__c"},

      "id" : "a247E000004HtCSQA0",

      "PP_PC_Integration_Status__c" : "Fail",

      "PP_PC_Integration_Code__c" : "A",

      "PP_PC_Integration_Message__c" : "Something went really wrong... Rethink your behaviour",

      "PP_PC_Integration_SAPRecordNumber__c" : ""

   },{

      "attributes" : {"type" : "SLV44_ONE_Quote_Line_Item__c"},

      "id" : "a247E000005FaBZQA0",

      "PP_PC_Integration_Status__c" : "Integrated",

      "PP_PC_Integration_Code__c" : "",

      "PP_PC_Integration_Message__c" : "",

      "PP_PC_Integration_SAPRecordNumber__c" : "1234567"

   }]

}

RETURN:
[

    {

        "id": "a247E000004HtCSQA0",

        "success": false,

        "errors": [

            {

                "statusCode": "INVALID_OR_NULL_FOR_RESTRICTED_PICKLIST",

                "message": "PC Integration Status: bad value for restricted picklist field: Fail",

                "fields": [

                    "PP_PC_Integration_Status__c"

                ]

            }

        ]

    },

    {

        "id": "a247E000005FaBZQA0",

        "success": true,

        "errors": []

    }

]






  • No labels