Technology Blog Posts by SAP
cancel
Showing results for 
Search instead for 
Did you mean: 
babuganesh1982
Product and Topic Expert
Product and Topic Expert
728

Table of Contents

 

Introduction

Solution Order is a business transaction in SAP Cloud ERP, used to sell solutions which can be a combination of either physical goods, one time services, recurring services, subscriptions, or projects bundled as one integrated customer offering. With the 2508 release of SAP Cloud ERP, the OData V4 APIs for solution order is available. In this blog, you will find more information about the API, the entities available for consumption and the operations on these entities and some key differentiators of the V4 API. 

 

Authentication and Access

The communication arrangement with the Business Solution Order Integration scenario(SAP_COM_0706) needs to be in place to access the APIs. You will need to create a communication arrangement for the communication scenario SAP_COM_0706,  A Communication System with an inbound user. You can as well configure OAUTH 2.0 if needed.

The API allows Basic Authentication(Username/password), OAUTH2.0, and X.509 Certificate Authentication

 

Metadata

Metadata provides a description of the service, detailing the structure of the data, available entities, their properties, relationships, and supported operations. It acts as a blueprint that allows both developers and tools to understand how to interact with the service without needing prior knowledge of its design.

It can be accessed using the below URL

https://<<SERVER>>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001/$metadata

Below is a screenshot, with a part of the metadata of the Business Solution Order API.

babuganesh1982_1-1761284172112.png

In the above partial view of the metadata, you can see the Entity BusinessSolutionOrder, it has key- BusinessSolutionOrder, and a set of properties like BusinesssSolutionOrder, BusSolnOrdType, BusSolnOrdDescription, etc. it also specifies the type, max length, precision etc of the property. There are a set of navigational properties(or associations) for the entity. Associations are other entities related to the current entity.

 

API Capabilities and Entities

Entity

Supported Operations

Comments

Associations

BusinessSolutionOrder 

CREATE / READ / UPDATE

Solution Order Header

_Items

_Partner

_Text

_UserStatus

_ItemRelationship

_FUPSalesOrder

_FUPServiceOrder

_FUPServiceContr

_FUPEntProject

_FUPSubscrpn

_Appointment

BusinessSolutionOrderItem

CREATE / READ / UPDATE / DELETE

Solution Order Item For Create operation, you can only use this entity in association with BusinessSolutionOrder

_Partner

_PriceElement

_Text

_ScheduleLine

_UserStatus

_Product

_ReferenceObject

_BillingRequestItem

_RateElement

_SubscriptionParameter

_SubscriptionPriceAgreement

_FUPSalesOrderItem

_FUPServiceOrderItem

_FUPServiceContrItem

_FUPEntProjectItem

_FUPSubscrpnItem

_Appointment

_Duration

_BusinessSolutionOrder

BusSolnOrdPartner

CREATE / READ / UPDATE / DELETE

Header Partner For Create operation, you can only use this entity in association with BusinessSolutionOrder

_PartnerAddress

_BusinessSolutionOrder

BusSolnOrdItmPartner

CREATE / READ / UPDATE / DELETE

Item Partner

For Create operation, you can only use this entity in association with BusinessSolutionOrderItem

_PartnerAddress

_Item

_BusinessSolutionOrder

BusSolnOrdPartnerAddress

READ / UPDATE

Header Partner Address

_Partner

_BusinessSolutionOrder

BusSolnOrdItmPartnerAddr

READ / UPDATE

Item Partner Address

_Partner

_BusinessSolutionOrder

BusSolnOrdItmPriceElement

CREATE / READ / UPDATE / DELETE

Item Price Element

For Create operation, you can only use this entity in association with BusinessSolutionOrderItem

_Item

_BusinessSolutionOrder

BusSolnOrdItmScheduleLine

READ

Schedule Line of Sales Item

_Item

_BusinessSolutionOrder

BSOrdItmRateElement

READ

Rate Element of a Subscription Item

_Item

_BusinessSolutionOrder

BSOrdItmSubscrpnParameter

CREATE / READ / UPDATE / DELETE

Subscription Parameter of a Subscription Item

_Item

_BusinessSolutionOrder

BSOrdItmSubscrpnPriceAgrmt

CREATE / READ / UPDATE / DELETE

Price Agreement of  Subscription Item

_Item

_BusinessSolutionOrder

BusSolnOrdItmProduct

CREATE / READ / UPDATE / DELETE

Item Product

For Create operation, you can only use this entity in association with BusinessSolutionOrderItem

_Item

_BusinessSolutionOrder

BusSolnOrdItmRefObject

CREATE / READ / UPDATE / DELETE

Item Reference Object

For Create operation, you can only use this entity in association with BusinessSolutionOrderItem

_Item

_BusinessSolutionOrder

BusSolnOrdItemRelationship

CREATE / READ / DELETE

Item Relationship

For Create operation, you can only use this entity in association with BusinessSolutionOrderItem

_BusinessSolutionOrder

BusSolnOrdUserStatus

CREATE / READ

Header User Status

For Create operation, you can only use this entity in association with BusinessSolutionOrder

_BusinessSolutionOrder

BusSolnOrdItmUserStatus

CREATE / READ

Item User Status

For Create operation, you can only use this entity in association with BusinessSolutionOrderItem

_Item

_BusinessSolutionOrder

BusinessSolutionOrderLongText

CREATE / READ / UPDATE / DELETE

Header Text

_BusinessSolutionOrder

BusSolnOrdItmLongTxt

CREATE / READ / UPDATE / DELETE

Item Text

For Create operation, you can only use this entity in association with BusinessSolutionOrderItem

_Item

_BusinessSolutionOrder

BusSolnOrdItmBillgReqItem

READ

Billing Request Item of a Contract Item

_PriceElement

_Item

_BusinessSolutionOrder

BSOrdItmBillgReqItmPrcElm

CREATE/READ / UPDATE/DELETE

Price Element of Billing Request Line

For Create operation, you can only use this entity in association with BusSolnOrdItmBillgReqItem

_BillingRequestItem

_Item

_BusinessSolutionOrder

BusSolnOrdAppointment

CREATE / READ / UPDATE

Header Appointments

_BusinessSolutionOrderTP

BusSolnOrdItmAppointment

CREATE / READ / UPDATE

Item Appointments

_Item

_BusinessSolutionOrder

BusSolnOrdItmDuration

CREATE / READ / UPDATE

Item Duration

_Item

_BusinessSolutionOrderTP

BusSolnOrdFUPSalesOrder

READ

Follow Up Sales Orders

_BusinessSolutionOrder

BusSolnOrdFUPSrvcOrd

READ

Follow Up Service Orders

_BusinessSolutionOrder

BusSolnOrdFUPSrvcContr

READ

Follow Up Service Contracts

_BusinessSolutionOrder

BusSolnOrdFUPSubscrpn

READ

Follow Up Subscriptions

_BusinessSolutionOrder

BusSolnOrdFUPEntProject

READ

Follow Up Projects

_BusinessSolutionOrder

BusSolnOrdItmFUPSalesOrder

READ

Follow Up Sales Order Items

_Item

_BusinessSolutionOrder

BusSolnOrdItmFUPSrvcOrd

READ

Follow Up Service Order Items

_Item

_BusinessSolutionOrder

BusSolnOrdItmFUPSrvcContr

READ

Follow Up Service Contract Items

_Item

_BusinessSolutionOrder

BusSolnOrdItmFUPSubscrpn

READ

Follow Up Subscription Items

_Item

_BusinessSolutionOrder

BusSolnOrdItmFUPEntProject

READ

Follow Up Project Items

_Item

_BusinessSolutionOrder

 

BusinessSolutionOrder – Solution Order Header

With the Solution Order Header entity and its associations, you can create a solution order with the header and one or more of its associated entity(and its associated entities).

For Example: You can create a solution order by using the BusinessSolutionOrder along with Items, Partner, Item Partner, PriceElement, ItemRelationship, Text, UserStatus etc.

In the below example you will see creation of a solution order, adding items to the solution orders, creating a header text, and creating an item relationship between two items, all in separate OData calls and also to see how this can be achieved in one deep insert ODATA calls

Create a solution order with just header

POST <host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusinessSolutionOrder

X-CSRF-Token: abc

{
  "BusSolnOrdType": "SOLO",
  "BusSolnOrdDescription": "Solution Order",
  "Language": "EN",
  "SoldToParty": "17100001",
  "SalesOrganization": "1710",
  "DistributionChannel": "10",
  "Division": "00",
  "RespEmployeeBusinessPartnerId": "9980000549",
  "PurchaseOrderByCustomer": "External Reference"
}

 

Create an Item for an existing solution order

POST <host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusinessSolutionOrder/100004251/_Item

X-CSRF-Token: abc

{
  "Product": "TG11",
  "BusinessSolutionOrderItem": "10",
  "Quantity": 1,
  "QuantityUnit": "PC",
  "BusSolnOrdItmQtyUnitISOCode": "PCE"
}

 

Create another Item for an existing solution order

POST <host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusinessSolutionOrder/100004251/_Item

X-CSRF-Token: abc

{
  "Product": "SRV_01",
  "BusinessSolutionOrderItem": "20",
  "Quantity": 1,
  "SrvcContrDetnIsSpprsd": true,
  "QuantityUnit": "HR",
  "BusSolnOrdItmQtyUnitISOCode": "HUR"
}

 

Create a Header Text for an existing solution order

POST <host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusinessSolutionOrder/100004251/_Text

X-CSRF-Token: abc

{
  "TextObjectType": "0001",
  "Language": "EN",
  "BusinessSolutionOrderLongText": "This is a Header Note"
}

 

Create an item relationship between item 10 and item 20 of an existing solution order

POST <host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusinessSolutionOrder/100004251/_ItemRelationship

X-CSRF-Token: abc

{
  "BusinessSolutionOrder":"<<SOLUTION_ORDER_ID>>",
  "SrvcItemRelshpFromItemNumber": "10",
  "SrvcItemRelshpType": "001",
  "SrvcItemRelshpToItemNumber": "20"
}

 

You can also perform all the above in one deep insert OData request by specifying all the related entities in a single request

Create a solution order with deep insert: 2 items, override header partner, override item partner, add a header note and create an item relationship between item 10 and 20

POST <host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusinessSolutionOrder

X-CSRF-Token: abc

{
  "BusSolnOrdType": "SOLO",
  "BusSolnOrdDescription": "Solution Order",
  "Language": "EN",
  "SoldToParty": "17100001",
  "SalesOrganization": "1710",
  "DistributionChannel": "10",
  "Division": "00",
  "RespEmployeeBusinessPartnerId": "9980000549",
  "PurchaseOrderByCustomer": "External Reference",

  //Solution Order Item
  "_Item": [
    {
      "Product": "TG11",
      "BusinessSolutionOrderItem": "10",
      "Quantity": 1,
      "QuantityUnit": "PC",
      "BusSolnOrdItmQtyUnitISOCode": "PCE",
      "_Partner": [
        {
          "CustMgmtPartnerFunction": "00000055",
          "CustMgmtBusinessPartner": "17100003"
        }
      ]
    },
    {
      "Product": "SRV_01",
      "BusinessSolutionOrderItem": "20",
      "SrvcContrDetnIsSpprsd": true,
      "Quantity": 1,
      "QuantityUnit": "HR",
      "BusSolnOrdItmQtyUnitISOCode": "HUR"
    }
  ],

  //Partner at Header
  "_Partner": [
    {
      "CustMgmtPartnerFunction": "00000055",
      "CustMgmtBusinessPartner": "17100002"
    }
  ],

  //Notes at Header
  "_Text": [
    {
      "TextObjectType": "0001",
      "Language": "EN",
      "BusinessSolutionOrderLongText": "This is a Header Note"
    }
  ],

  //Relationship between Items
  "_ItemRelationship": [
    {
      "SrvcItemRelshpFromItemNumber": "10",
      "SrvcItemRelshpType": "001",
      "SrvcItemRelshpToItemNumber": "20"
    }
  ]
}

 

Read all the entities of a solution order

GET
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusinessSolutionOrder/100003509?$expand=*

 

Read one or more associated entities of a solution order header

GET
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusinessSolutionOrder/100003509?$expand=_Partner,_ItemRelationship

 

BusinessSolutionOrderItem – Solution Order Item

With the Solution Order Item entity, you can create one ore more of its associated entity. However, to create a solution order item, you will have to use the BusinessSolutionOrder along with _Item association.

For Example: You can create an Item Partner, PriceElement, Text, UserStatus etc for an item using the BusinessSolutionOrderItem along with the respective associations.

In the below examples you will see creation of a discount price condition, Item Text, Item Product, Reference Object, Item Appointment, Item Duration, Price Agreement  for an existing solution order item,

 

Create a discount price element for an existing solution order item

POST
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusinessSolutionOrderItem/100003519/20/_PriceElement

X-CSRF-Token: abc

{
  "ConditionType": "DRV1",
  "ConditionRateValue": -10
}

 

Create an item text for an existing solution order item

POST
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusinessSolutionOrderItem/100003519/10/_Text

X-CSRF-Token: abc

{
  "TextObjectType": "0001",
  "Language": "EN",
  "BusSolnOrdItmLongText": "This is an Item Note"
}

 

Create an item product for an existing solution order item

POST
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusinessSolutionOrderItem/100003519/30/_Product

X-CSRF-Token: abc

{
  "ServiceProductListItem": "1",
  "SrvcProductListProduct": "SRV_01"
}

 

Create item reference object for an existing solution order Service item

For a service item, you can create a reference object by passing either the functional location id or the equipment id.

POST
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusinessSolutionOrderItem/100003519/20/_ReferenceObject

X-CSRF-Token: abc

{
  "ServiceReferenceEquipment":"10001405"
}

 

Create item reference object for an existing solution order Service item

For a contract item, you can create a reference object by passing either the functional location id or the equipment id or the Reference Product.

POST
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusinessSolutionOrderItem/100003519/20/_ReferenceObject

X-CSRF-Token: abc

{
  "ServiceReferenceProduct":"10001405"
}

 

Create an item appointment for an existing solution order item

POST
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusinessSolutionOrderItem/100003519/50/_Appointment

X-CSRF-Token: abc

{
  "SrvcDocAppointmentType":"SUBS_PRIC_DT",
  "SrvcDocApptStartDateTime":"2025-09-28T10:00:00Z",
  "SrvcDocApptEndDateTime":"2025-09-28T10:00:00Z"
}

Appointment entities are used to persist various date fields in solution order. 

You define the Appointment type using the configuration activity Define Date Types, Duration Types and Date Rules for Service Transactions in your configuration environment. The system uses the duration, dates types, and date rules that are combined in a specific date profile to display dates in a transaction and to automatically determine them. Make sure to assign the date profile to transaction types. 

 

Create an item duration for an existing solution order item

POST
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusinessSolutionOrderItem/100003519/30/_Duration

X-CSRF-Token: abc

{
  "SrvcDocDurationType": "CONTDURA",
  "SrvcDocDurationValue": 18,
  "SrvcDocDurationUnit": "MONTH"
}

Fields on the UI like Fixed Term, Minimum Term, Minimum Term End, Renewal Term, Withdrawal Period, Withdrawal Period End, Term of Notice, Expected Term, Expected Term End, Expected Term Extension (visible under the Subscription Terms section in the UI), and Contact Validity Period (visible in the Dates Section of a contract item)are available in the Item Duration entity. These are persisted against the duration types below. The subscription terms can be updated in the UI as well as API only if the field “Override Default Terms” is selected (field in API - SubscrpnContrTrmsAreSpecified)

You define the Duration type using the configuration activity Define Date Types, Duration Types and Date Rules for Service Transactions in your configuration environment. The system uses the duration, dates types, and date rules that are combined in a specific date profile to display dates in a transaction and to automatically determine them. Make sure to assign the date profile to transaction types. 

 

Create an item price agreement for an existing solution order subscription item

Price agreements are originally persisted in the subscription system, however this can be customised in the S/4HANA system. In such cases, the customised values are additionally persisted in S/4HANA systems.

Under the Price Calculation section you will see the prices that can be customisable. You can customize the price using the POST operation on the  BusinessSolutionOrderItem entity using the _SubscriptionPriceAgreement association.

babuganesh1982_5-1761293565529.png

  

POST
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001 /BusinessSolutionOrderItem/100003519/50/_SubscriptionPriceAgreement

X-CSRF-Token: abc

{
  "SubscriptionRateElement": "ONETIME",
  "SubscrpnBillgPrcElmntSpec": "OneTimePrice",
  "SubscrpnBillgPricingField": "price",
  "SubscrpnBillgPricingScaleType": "A",
  "SubscrpnBillgCndnCalcType": "B",
  "ConditionCurrency": "USD",
  "ConditionRateValue": 190,
  "SbscrBilgCndnScaleLineIsUnlmtd": false
}

 

image.png

Once the price is updated in S/4HANA it is persisted and you will notice under the customization status as Is Customized.

Since there is no persistency in the S/4HANA system until it is customised, the first time the customising of the price can be done using a POST operation of the API, and to update the prices again a PATCH operation can be used.

Multiple Price calculation is not supported. However if you still use the POST again after the initial customising, there will be 2 entries of the price which will be persisted in the table.

 

babuganesh1982_7-1761293565538.png

In such case the entire Price calculation section will become empty and the solution order item will unusable in the UI along with a simulation error. This cannot be corrected from the UI. To correct this, you will have to delete the record using the DELETE operation on the Item Price Agreement entity (BSOrdItmSubscrpnPriceAgrmt).

 

BusSolnOrdPartner – Solution Order Header Partner

Solution Order determines header partners based on the partner determination procedure assigned to the transaction type.

To override the determined partners, you can pass the partner information either using the partner functions available as properties in the BusinessSolutionOrder entity like ShipToParty, BillToParty, PayerParty, RespEmployeeBusinessPartnerId and ContactPersonBusinessPartnerId or by passing the respective partners in the _Partner association while creating a solution order using deep insert.

The header partner entity can also be created using the association _Partner of the BusinessSolutionOrder entity but this may result in a too many partner error on the document. So If you use the _Partner association to create a partner at header make sure the entry you are trying to create doesn’t create an additional partner of an existing type.

 

Create a header partner for an existing solution order

POST
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusinessSolutionOrder/100003561/_Partner

X-CSRF-Token: abc
IF-Match: *

{
  "BusinessSolutionOrder":"100003561",
  "CustMgmtPartnerFunction":"00000003",
  "CustMgmtBusinessPartner":"17100002"
}

 

If you observe the metadata of the header partner entity, You will notice that both the properties CustMgmtPartnerFunction and CustMgmtBusinessPartner are key properties and hence they cannot be updated via a PATCH call. So to update a header partner, you can use the properties ShipToParty, BillToParty, PayerParty, RespEmployeeBusinessPartnerId and ContactPersonBusinessPartnerId in the BusinessSolutionOrder entity.

You should not try to update the SoldToPrarty property either at the header or the item.

 

Delete a header partner of an existing solution order

DELETE
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusSolnOrdPartner/100003561/00000003/17100001

X-CSRF-Token: abc
IF-Match: *

Deleting a header partner might result in an error if the partner function is mandatory.

 

BusSolnOrdItmPartner – Solution Order Item Partner

Solution Order determines item partners based on the partner determination procedure assigned to the transaction type and the header partner.

To override the determined partners, you can pass the partner information either using the partner functions available as properties in the BusinessSolutionOrderItem entity like ShipToParty, BillToParty, PayerParty, RespEmployeeBusinessPartnerId and ContactPersonBusinessPartnerId or by passing the respective partners in the _Partner association while creating a solution order using deep insert.

The item partner entity can also be created using the association _Partner of the BusinessSolutionOrderItem entity but this may result in a too many partner error on the document. So If you use the _Partner association to create a partner at the item make sure the entry you are trying to create doesn’t create an additional partner of an existing type.

 

Create an item partner for an existing solution order item

POST
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusinessSolutionOrderItem/100003561/10/_Partner

X-CSRF-Token: abc

{
  "BusinessSolutionOrder":"100003561",
  "BusinessSolutionOrderItem":"10",
  "CustMgmtPartnerFunction":"00000003",
  "CustMgmtBusinessPartner":"17100002"
}

If you observe the metadata of the item partner entity, You will notice that both the properties CustMgmtPartnerFunction and CustMgmtBusinessPartner are key properties and hence they cannot be updated via a PATCH call. So to update an item partner, you can use the properties ShipToParty, BillToParty, PayerParty, RespEmployeeBusinessPartnerId and ContactPersonBusinessPartnerId in the BusinessSolutionOrderItem entity. You should not try to update the SoldToPrarty property either at the header or the item.

 

Delete an item partner of an existing solution order item

DELETE
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusSolnOrdPartnerItem/100003561/10/00000003/17100001

X-CSRF-Token: abc
IF-Match: *

Deleting an item partner might result in an error if the partner function is mandatory.

 

BusSolnOrdPartnerAddress – Address of Header Partner

Address of header partner can be read and updated

 

Update address of header partner of an existing solution order

PATCH
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusSolnOrdPartnerAddress/100004251/00000003/17100001

X-CSRF-Token: abc
IF-Match: *

{
  "HouseNumber": "138",
  "StreetName": "ITPL Main Road",
  "CityName": "Banglaore",
  "Country": "IN",
  "Region": "KA",
  "PostalCode": "560066",
  "MobilePhoneCountry": "IN",
  "MobileNumber": "9988776655",
  "PhoneNumberCountry": "US",
  "PhoneNumber": "20204040",
  "PhoneExtensionNumber": "1234",
  "FaxNumberCountry": "IN",
  "FaxAreaCodeSubscriberNumber": "1234567890",
  "FaxExtensionNumber": "5678",
  "EmailAddress": "newmailaddr@mailbox.com"
}

 

 

BusSolnOrdItmPartnerAddr - Address of Item Partner

Address of item partner can be read and updated

 

Update address of item partner of an existing solution order item

PATCH
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusSolnOrdItmPartnerAddr/100004251/10/00000003/17100001

X-CSRF-Token: abc
IF-Match: *

{
  "HouseNumber": "138",
  "StreetName": "ITPL Main Road",
  "CityName": "Banglaore",
  "Country": "IN",
  "Region": "KA",
  "PostalCode": "560066",
  "MobilePhoneCountry": "IN",
  "MobileNumber": "9988776655",
  "PhoneNumberCountry": "US",
  "PhoneNumber": "20204040",
  "PhoneExtensionNumber": "1234",
  "FaxNumberCountry": "IN",
  "FaxAreaCodeSubscriberNumber": "1234567890",
  "FaxExtensionNumber": "5678",
  "EmailAddress": "newmailaddr@mailbox.com"
}

 

BusSolnOrdItmPriceElement – Item Price Element

Item price element of a solution order item can be created by passing the price element in the _PriceElement association at the item while creating a solution order using deep insert.

The item price element entity can also be created using the association _ PriceElement of the BusinessSolutionOrderItem entity.

 

Create an item price element for an existing solution order item

POST
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusinessSolutionOrderItem/100004251/10/_PriceElement

X-CSRF-Token: abc

{
  "ConditionType": "DRV1",
  "ConditionRateValue": -10
}

If you create a price element with the same condition type as existing, it will override the existing price element and will mark it inactive and make the new one active.  

 

Update item price element of an existing solution order item

PATCH
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusSolnOrdItmPriceElement/100004251/10/240/1

X-CSRF-Token: abc
IF-Match: *

{
  "BusinessSolutionOrder": "100004251",
  "BusinessSolutionOrderItem": "10",
  "PricingProcedureStep": "240",
  "PricingProcedureCounter": "1",
  "ConditionType": "DRV1",
  "ConditionRateValue": -5
}

The PricingProcedureStep and PricingProcedureCounter needs to be passed in the parameter

 

Delete an item price element of an existing solution order item

DELETE
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusSolnOrdItmPriceElement/100004251/10/240/1

X-CSRF-Token: abc
IF-Match: *

To Deleting an item price element, PricingProcedureStep and PricingProcedureCounter needs to be passed in the parameter.

 

BusSolnOrdItmScheduleLine – Item Schedule Line(Sales Item)

You can only read a schedule line entity and no other operations are supported on this entity, and this is only relevant for a sales item

 

Read a schedule line of a sales item of an existing solution order

GET
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusSolnOrdItmScheduleLine/100004251/10/1

You can also use the $filter parameter to filter by the solution order you will get all the schedule line entities for the solution order

GET
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusSolnOrdItmScheduleLine?$filter=BusinessSolutionOrder eq '100004251'

 

BSOrdItmRateElement – Item Rate Element (Subscription Item)

You cannot update a rate element but can read an existing rate element for a solution order subscription item using BSOrdItmRateElement

 By passing the solution order number, item and rate element number. You can also read the rate element when you read a solution order item with an expand=_RateElement

 

BSOrdItmSubscrpnParameter – Item Subscription Parameter(Subscription Item)

You can read a subscription parameter using a GET operation on the BSOrdItmSubscrpnParameter entity by passing the solution order number, item and the subscription parameter sequence number or by reading the solution order item with a $expand = _SubscriptionParameter

Update subscription parameter of an existing solution order item

PATCH
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BSOrdItmSubscrpnParameter/100004251/70/1

X-CSRF-Token: abc

IF-Match: *

{
  "SubscriptionParameter": "ONETIME_CREDIT",
  "SubscrpnParameterIntegerValue": 2
}

You can update a subscription parameter of a subscription item only if the item is not released or completed already

 

Delete subscription parameter of an existing solution order item

DELETE
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BSOrdItmSubscrpnParameter/100004251/70/1

X-CSRF-Token: abc
IF-Match: *

 

You can delete a subscription parameter of a subscription item only if the item is not released or completed already

 

Create subscription parameter of an existing solution order item

POST
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusinessSolutionOrderItem/100004251/70/_SubscriptionParameter

X-CSRF-Token: abc
IF-Match: *

{
  "SubscriptionParameter": "ONETIME_CREDIT",
  "SubscrpnParameterIntegerValue": 1
}

You can create a subscription parameter of a subscription item using the POST operation on BusinessSolutionOrderItem using the association _SubscriptionParameter

 

 

BSOrdItmSubscrpnPriceAgrmt Item Price Agreement(Subscription Item)

Price agreements are originally persisted in the subscription system, however this can be customised in the S/4HANA system. In such cases, the customised values are additionally persisted in S/4HANA systems.

 

Update subscription price agreement of an existing solution order item

PATCH
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BSOrdItmSubscrpnPriceAgrmt(BusinessSolutionOrder='100004251',BusinessSolutionOrderItem='000070',SubscriptionRateElement='ONETIME_CRDT',SubscriptionRateSubElement='',SubscrpnBillgPrcElmntSpec='OneTimePrice',SubscrpnBillgPricingField='price',SubscrpnBillgPrcAgreementLine='900001')

X-CSRF-Token: abc
IF-Match: *

{
  "SubscrpnBillgPricingScaleType": "A",
  "SubscrpnBillgCndnCalcType": "B",
  "ConditionRateValue": 1001,
  "ConditionCurrency": "USD"
}

 

Delete subscription price agreement of an existing solution order item

DELETE
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BSOrdItmSubscrpnPriceAgrmt(BusinessSolutionOrder='100004251',BusinessSolutionOrderItem='000070',SubscriptionRateElement='ONETIME_CRDT',SubscriptionRateSubElement='',SubscrpnBillgPrcElmntSpec='OneTimePrice',SubscrpnBillgPricingField='price',SubscrpnBillgPrcAgreementLine='900001')

X-CSRF-Token: abc
IF-Match: *

You can update or delete a subscription price agreement of a subscription item only if the item is not released or completed already. To be sure you pass the mandatory information correctly, you can do a GET operation on the BSOrdItmSubscrpnPriceAgrmt entity for the subscription item you want to update the price Agreement. It is required to pass the scale type and calculation type in the payload even though you do not intend to modify them

BusSolnOrdItmProduct – Item Product(Contract Item)

 

Update item product list of an existing solution order contract item

PATCH
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusSolnOrdItmProduct/100004251/100/1

X-CSRF-Token: abc
IF-Match: *

{
  "SrvcProductListProduct":"SRV_05"
}

 

Delete subscription price agreement of an existing solution order item

DELETE
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusSolnOrdItmProduct/100004251/100/1

X-CSRF-Token: abc
IF-Match: *

You can update or delete an Item Product List of contract item only if the item is not released or completed already.

 

BusSolnOrdItmRefObject – Item Reference Object(Service or Contract Item)

 

Update item reference object list of an existing solution order contract item

PATCH
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusSolnOrdItmProduct/100004251/100/1

X-CSRF-Token: abc
IF-Match: *

{
  "SrvcProductListProduct":"SRV_05"
}

 

Delete item reference object list of an existing solution order contract item

DELETE
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusSolnOrdItmRefObject/100004251/100/1

X-CSRF-Token: abc
IF-Match: *

 

You can update an Item Reference object of a service item by passing the equipment id or the functional location id in the payload or that of a contract item by passing the reference product id or the equipment id or the functional location id in the payload.

 

BusSolnOrdItemRelationship – Solution Order Item Relationship

 

Get all item relationships in a solution order

GET
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusSolnOrdItemRelationship?$filter=BusinessSolutionOrder eq '100004251'

 

Delete an item relationship of type 001 (Depends on) between item 10 and 20

DELETE
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusSolnOrdItemRelationship/100004251/10/001/20

X-CSRF-Token: abc
IF-Match: *

 

BusSolnOrdUserStatus – Header User Status

 

Create user status at header for an existing solution order

POST
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusinessSolutionOrder/<<SOLO_ID>>/_UserStatus

X-CSRF-Token: abc

{
  "BusinessSolutionOrder": "100004251",
  "UserStatus": "E0002"
}

 

Create user status at header using deep insert while creating a solution order

POST
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusinessSolutionOrder

X-CSRF-Token: abc

{
  "BusSolnOrdType": "SOLO",
  "BusSolnOrdDescription": "Solution Order with User Status",
  "Language": "EN",
  "SoldToParty": "17100001",
  "SalesOrganization": "1710",
  "DistributionChannel": "10",
  "Division": "00",
  "RespEmployeeBusinessPartnerId": "9980000549",
  "PurchaseOrderByCustomer": "External Reference",
  "_UserStatus": [
    {
      "UserStatus": "E0002"
    }
  ]
}

 

BusSolnOrdItmUserStatus – Item User Status

Prerequisites: Make sure to assign the status profile to which the user status belongs to the respective item category of the solution order item. To do this, using SSCUI, define status profile for User Status and assign the status profile to item categories

Create item user status at item for an existing solution order

POST
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusinessSolutionOrder/100004251/10/_UserStatus

X-CSRF-Token: abc

{
  "UserStatus": "E0002"
}

 

Create item user status using deep insert while creating a solution order item

POST
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusinessSolutionOrder/100004251/_Item

X-CSRF-Token: abc

{
  "Product": "TG11",
  "Quantity": 1,
  "BusSolnOrdItmQtyUnitISOCode": "EA",
  "_UserStatus": [
    {
      "UserStatus": "E0002"
    }
  ]
}

 

BusinessSolutionOrderLongText – Header Long Text

 

Get all header text of a solution order

GET
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusinessSolutionOrderLongText?$filter=BusinessSolutionOrder eq '100004251'

 

Get a specific header text of a solution order

GET
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusinessSolutionOrderLongText/100004251/0001/EN

 

Update a header text of a solution order

DELETE
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusinessSolutionOrderLongText/100004251/0001/EN

X-CSRF-Token: abc
IF-Match: *

{
  "BusinessSolutionOrderLongText":"Updated Header Text"
}

 

Delete a header text of a solution order

DELETE
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusinessSolutionOrderLongText/100004251/0001/EN

X-CSRF-Token: abc
IF-Match: *

 

BusSolnOrdItmLongTxt – Item Long Text

 

Get item text of a solution order item 10

GET
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusSolnOrdItmLongTxt?$filter=BusinessSolutionOrder eq '100004251'and BusinessSolutionOrderItem eq '10'

 

Update item text of a solution order item 10

PATCH
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusSolnOrdItmLongTxt/100004251/10/001/EN

X-CSRF-Token: abc
IF-Match: *

{
  "BusSolnOrdItmLongText": "Updated Item Text"
}

 

Delete item text of a solution order item 10

DELETE
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusSolnOrdItmLongTxt/100004251/10/001/EN

X-CSRF-Token: abc
IF-Match: *

 

BusSolnOrdItmBillgReqItem – Billing Request Item(of a Contract Item)

Only READ operation is supported on the BusSolnOrdItmBillgReqItem entity. This will be available only for service contract item with item category SOSC (Service Contract Item) and SOPA (Service Contract Price Adaptation)

 

Get all Billing Request Items of a solution order contract item

GET
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusSolnOrdItmBillgReqItem?$filter=BusinessSolutionOrder eq '100004251'

 

Get a specific billing request item of a solution order contract item by id

GET
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusSolnOrdItmBillgReqItem/100004251/100/800001

 

BSOrdItmBillgReqItmPrcElm – Price element of Billing Request Item (Contract Item)

You can create a Price Element for a Billing request Item of a Contract item of a solution order using the _PriceElement association of the BusSolnOrdItmBillgReqItem entity.

 

Create a discount price element for a specific billing item a solution order service contract item

POST
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusSolnOrdItmBillgReqItem/100004251/100/800001/_PriceElement

X-CSRF-Token: abc

{
  "ConditionType": "DRV1",
  "ConditionRateValue": -10,
  "ConditionCurrency": "USD"
}

Above payload will create a price element (Fixed Discount DRV1) for billing item 800001 of the service contract item

 

Read all the price element for a billing request item of a solution order contract item

GET
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusSolnOrdItmBillgReqItem/100004251/100/800001/_PriceElement

 

Update a price element for a billing request item of a solution order contract item

PATCH
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BSOrdItmBillgReqItmPrcElm/100004251/100/800001/90/1

X-CSRF-Token: abc
IF-Match: *

{
   "ConditionType": "PSI1",
   "ConditionRateValue": 120
}

 

BusSolnOrdAppointment – Header Appointment

Appointment entities are used to persist various date fields in solution order. 

You define the Appointment type using the configuration activity Define Date Types, Duration Types and Date Rules for Service Transactions in your configuration environment. The system uses the duration, dates types, and date rules that are combined in a specific date profile to display dates in a transaction and to automatically determine them. Make sure to assign the date profile to transaction types. 

 

Update BILL_DATE at solution order header using the Appointment Entity

Billing Date is a single date field and does not have a start and end date, in such case in the payload, the SrvcDocApptStartDateTime needs to be passed.

PATCH
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusSolnOrdAppointment/100004251/BILL_DATE

X-CSRF-Token: abc
IF-Match: *

{
  "SrvcDocAppointmentType": "BILL_DATE",
  "SrvcDocApptStartDateTime": "2025-10-23T00:00:00Z",
}

 

Read BILL_DATE at solution order header using the Appointment Entity

GET
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusSolnOrdAppointment/100004251/BILL_DATE

BusSolnOrdItmAppointment – Item Appointment

To update subscription end date of a subscription item, use the ServiceContrItemEndDateTime field at the BusinessSolutionOrderItem entity instead of the CONTEND Appointment type.

 

Update Requested delivery date of a sales item of a solution order using the Appointment Entity

PATCH
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusSolnOrdItmAppointment/100004251/10/REQ_DLV_DATE

X-CSRF-Token: abc
IF-Match: *

{
  "SrvcDocAppointmentType": "REQ_DLV_DATE",
  "SrvcDocApptStartDateTime": "2025-10-28T00:00:00Z"
}

 

BusSolnOrdItmDuration – Item Duration

Various durations like subscription terms, contract duration, renewal terms, etc are stored as durations in the BusSolnOrdItmDuration entity which has an association with the BusinessSolutionOrderItem entity. The different duration types in solution order are persisted across the duration types specified in the below table.

You define the Duration type using the configuration activity Define Date Types, Duration Types and Date Rules for Service Transactions in your configuration environment. The system uses the duration, dates types, and date rules that are combined in a specific date profile to display dates in a transaction and to automatically determine them. Make sure to assign the date profile to transaction types. 

 

Update Contract Duration of a contract item of a solution order using the Duration Entity

PATCH
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusSolnOrdItmDuration/100004251/100/CONTDURA

X-CSRF-Token: abc
IF-Match: *

{
  "SrvcDocDurationType": "CONTDURA",
  "SrvcDocDurationValue": 48,
  "SrvcDocDurationUnit": "Month"
}

 

BusSolnOrdFUPSalesOrder – Follow-up Sales Order

You can only read the follow up sales order and no other operations are supported on this entity. This will list all the follow-up sales order document for the solution order. Once a sales item is released, the follow up document gets created. This corresponds to the “Transaction History” section on the UI

GET
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusinessSolutionOrder/100003541/_FUPSalesOrder

 

BusSolnOrdFUPSrvcOrd – Follow-up Service Order

You can only read the follow up service order and no other operations are supported on this entity. This will list all the follow-up service order document for the solution order. Once a service item is released, the follow up document gets created. This corresponds to the “Transaction History” section on the UI

GET
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusinessSolutionOrder/100003541/_FUPServiceOrder

 

BusSolnOrdFUPSrvcContr – Follow-up Service Contract

You can only read the follow up service contract and no other operations are supported on this entity. This will list all the follow-up service contract document for the solution order. Once a service contract item is released, the follow up document gets created. This corresponds to the “Transaction History” section on the UI

GET
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusinessSolutionOrder/100003541/_FUPServiceContr

 

BusSolnOrdFUPSubscrpn – Follow-up Subscription

You can only read the follow up subscription and no other operations are supported on this entity. This will list all the follow-up subscription document for the solution order. Once a subscription item is released, the follow up document gets created. This corresponds to the “Transaction History” section on the UI

GET
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusinessSolutionOrder/100003541/_FUPSubscrpn

 

 

BusSolnOrdFUPEntProject – Follow-up Enterprise Project

Only read operation is supported on this entity. This will list all the follow-up project document for the solution order. Once a project item is released, the follow up document gets created. This corresponds to the “Transaction History” section on the UI

GET
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusinessSolutionOrder/100003541/_FUPEntProject

 

BusSolnOrdItmFUPSalesOrder - Follow-up Sales Order Item

Only read operation is supported on this entity. This will list all the follow-up sales order along with its corresponding item numbers. Once a sales item is released, the follow up document gets created.

GET
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusinessSolutionOrderItem/100004251/10/_FUPSalesOrderItem

 

BusSolnOrdItmFUPSrvcOrd – Follow-up Service Order Item

Only read operation is supported on this entity. This will list all the follow-up service order along with its corresponding item numbers. Once a sales item is released, the follow up document gets created.

GET
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusinessSolutionOrderItem/100004251/20/_FUPServiceOrderItem

 

BusSolnOrdItmFUPSrvcContr – Follow-up Service Contract Item

Only read operation is supported on this entity. This will list all the follow-up service contract along with its corresponding item numbers. Once a service contract item is released, the follow up document gets created.

GET
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusinessSolutionOrderItem/100004251/30/_FUPServiceContrItem

 

BusSolnOrdItmFUPSubscrpn – Follow-up Subscription Item

Only read operation is supported on this entity. This will list all the follow-up subscription. Once a subscription item is released, the follow up document gets created.

GET
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusinessSolutionOrderItem/100004251/40/_FUPSubscrpnItem

 

BusSolnOrdItmFUPEntProject - Follow-up Enterprise Project Item

Only read operation is supported on this entity. This will list all the follow-up project document for the solution order. Once a service contract item is released, the follow up document gets created.

GET
<host>/sap/opu/odata4/sap/api_businesssolutionorder/srvd_a2x/sap/businesssolutionorder/0001
/BusinessSolutionOrderItem/100004251/50/_FUPEntProjectItem