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.
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 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.
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.
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 |
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
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.
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
}
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.
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).
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.
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.
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"
}
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"
}
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.
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/1You 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'
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
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
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
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.
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.
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: *
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"
}
]
}
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"
}
]
}
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: *
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: *
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
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
}
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_DATETo 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"
}
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"
}
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
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
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
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
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
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
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
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
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
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
| User | Count |
|---|---|
| 16 | |
| 13 | |
| 11 | |
| 9 | |
| 9 | |
| 9 | |
| 9 | |
| 9 | |
| 7 | |
| 7 |