Get Cost Details from Oracle Costing
Use a web service to get costs from Oracle Costing, then mark it up or down according to rules on the price list.
Oracle Pricing comes predefined to support cost plus pricing through costs that you set up on the Manage Cost Lists page in the Pricing Administration work area. Instead, you can get cost from Oracle Costing and avoid having to duplicate your costing setup.
You modify a pricing algorithm so it calls a SOAP web service. You use Oracle Integration Cloud to route the call.
This topic assumes:
- You have a license to use Oracle Costing.
-
You already set up Pricing. For details, see Roadmap to Manage Oracle Pricing.
-
Customer Computer Service and Rentals is part of the Corporate Segment pricing segment and the Corporate Pricing Strategy.
-
You get costs from the costing service according to Inventory Organization.
- If you use Oracle Global Order Promising to promise your sales orders, then you must set up your orchestration process so Promising returns a default value for the warehouse before the process calls Oracle Pricing. For background, see Guidelines for Setting Up Orchestration Processes.
If you need help in troubleshooting the setup that you do in this topic, click Technical Reference for Oracle Pricing (Doc ID 2248583.1), then download the Troubleshoot the Get Cost from External System Integration attachment.
The web service is secure, so use a secure tool, such as SOAP UI, to send and receive your payloads.
Summary of the Set Up
A. Test the costing service.
B. Set up your integration.
C. Test the soap service.
D. Set up the connector in Oracle Applications.
E. Edit the service mapping.
F. Troubleshoot.
This topic uses example values. You might need different values, depending on your business requirements.
A. Test the Costing Service
Call the costing SOAP web service to make sure it works.
-
Create an input test payload.
Here's an example input payload you can use.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:typ="http://xmlns.oracle.com/apps/scm/costing/itemCosts/itemCostServiceV2/types/" xmlns:item="http://xmlns.oracle.com/apps/scm/costing/itemCosts/itemCostServiceV2/"> <soapenv:Header/> <soapenv:Body> <typ:retrieveItemCost> <!--Zero or more repetitions:--> <typ:costparams> <item:ItemId>149</item:ItemId> <item:InventoryOrganizationId>204</item:InventoryOrganizationId> <item:UnitOfMeasure>Ea</item:UnitOfMeasure> </typ:costparams> <typ:costparams> <item:ItemId>151</item:ItemId> <item:InventoryOrganizationId>204</item:InventoryOrganizationId> <item:UnitOfMeasure>Ea</item:UnitOfMeasure> </typ:costparams> </typ:retrieveItemCost> </soapenv:Body> </soapenv:Envelope>
-
Send your input payload to the costing service.
Use the WSDL URL for your instance of Oracle Pricing. Here's an example.
http://myServer.myCompany.com:10663/fscmService/ItemCostServiceV2?WSDL
-
Examine the response payload that the costing service sends to you.
Here's an example of the response payload.
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsa="http://www.w3.org/2005/08/addressing" xmlns:typ="http://xmlns.oracle.com/apps/scm/costing/itemCosts/service/types/"> <env:Header> <wsa:Action>http://xmlns.oracle.com/apps/scm/costing/itemCosts/service//ItemCostService/retrieveItemCostResponse</wsa:Action> <wsa:MessageID>urn:uuid:1b2f8967-12ef-4740-8ba0-1b02b85d10c4</wsa:MessageID> </env:Header> <env:Body> <ns0:retrieveItemCostResponse xmlns:ns0="http://xmlns.oracle.com/apps/scm/costing/itemCosts/service/types/"> <ns2:result xsi:type="ns1:ItemCostOutputResult" xmlns:ns2="http://xmlns.oracle.com/apps/scm/costing/itemCosts/service/types/" xmlns:ns1="http://xmlns.oracle.com/apps/scm/costing/itemCosts/service/" xmlns:tns="http://xmlns.oracle.com/adf/svc/errors/" xmlns:ns0="http://xmlns.oracle.com/adf/svc/types/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <ns1:Value> <ns1:ItemCost>53.77873553551955</ns1:ItemCost> <ns1:CurrencyCode>USD</ns1:CurrencyCode> <ns1:UOMCode>Ea</ns1:UOMCode> <ns1:ErrorFlag>false</ns1:ErrorFlag> <ns1:ItemID>149</ns1:ItemID> <ns1:InvOrgID>204</ns1:InvOrgID> <ns1:SubInvCode xsi:nil="true"/> <ns1:Locator xsi:nil="true"/> <ns1:LotNum xsi:nil="true"/> <ns1:SerialNum xsi:nil="true"/> <ns1:Grade xsi:nil="true"/> <ns1:KindOfCost xsi:nil="true"/> <ns1:KindOfCostDetail xsi:nil="true"/> <ns1:RefDate>2019-07-15T00:00:00.0Z</ns1:RefDate> <ns1:ItemNumber xsi:nil="true"/> <ns1:InvOrgCode xsi:nil="true"/> <ns1:UnitOfMeasure xsi:nil="true"/> </ns1:Value> <ns1:Value> <ns1:ItemCost>-1.0</ns1:ItemCost> <ns1:CurrencyCode xsi:nil="true"/> <ns1:UOMCode>Ea</ns1:UOMCode> <ns1:ErrorFlag>true</ns1:ErrorFlag> <ns1:ItemID>151</ns1:ItemID> <ns1:InvOrgID>204</ns1:InvOrgID> <ns1:SubInvCode xsi:nil="true"/> <ns1:Locator xsi:nil="true"/> <ns1:LotNum xsi:nil="true"/> <ns1:SerialNum xsi:nil="true"/> <ns1:Grade xsi:nil="true"/> <ns1:KindOfCost xsi:nil="true"/> <ns1:KindOfCostDetail xsi:nil="true"/> <ns1:RefDate xsi:nil="true"/> <ns1:ItemNumber xsi:nil="true"/> <ns1:InvOrgCode xsi:nil="true"/> <ns1:UnitOfMeasure xsi:nil="true"/> </ns1:Value> </ns2:result> </ns0:retrieveItemCostResponse> </env:Body> </env:Envelope>
-
Verify the response.
-
Make sure the value under the ItemCost is correct and that its in the correct currency.
-
Make sure each instance of ErrorFlag in the response is false.
-
B. Set Up Your Integration
Use Integration Cloud Service to route your call from your pricing algorithm to the costing service.
Summary of the Set Up
-
Create WSDL.
-
Create your source connector.
-
Create your target connector.
-
Import a predefined integration.
Learn how to use Integration Cloud Service, including the URL you use when you sign in. For details see Starting Integration Cloud Service.
Create WSDL
Copy this code into a text editor, such as Notepad ++, then save it to your local computer with file name ItemCostService.wsdl.
<?xml version="1.0" encoding="UTF-8" ?>
<!--
This is an interface WSDL that you can use to configure a connection in Integration Cloud Service. Its a proxy for the PriceRequestValidation service. This WSDL contains only XSD definitions, SOAP messages, and bindings. It doesn't include services for port operations. This WSDL matches one of the context consumers that the integration uses for payload exchanges.
-->
<wsdl:definitions name="ItemCostService"
targetNamespace="http://xmlns.oracle.com/apps/scm/costing/itemCosts/service/"
xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/"
xmlns:errors="http://xmlns.oracle.com/adf/svc/errors/"
xmlns:tns="http://xmlns.oracle.com/apps/scm/costing/itemCosts/service/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:types="http://xmlns.oracle.com/apps/scm/costing/itemCosts/service/types/">
<wsdl:types>
<xsd:schema elementFormDefault="qualified"
targetNamespace="http://xmlns.oracle.com/apps/scm/costing/itemCosts/service/"
sdoJava:package="oracle.apps.scm.costing.itemCosts.service"
xmlns:sdoJava="commonj.sdo/java"
xmlns="http://xmlns.oracle.com/apps/scm/costing/itemCosts/service/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"></xsd:schema>
<xsd:schema elementFormDefault="qualified"
targetNamespace="http://xmlns.oracle.com/apps/scm/costing/itemCosts/service/types/"
xmlns:ns0="http://xmlns.oracle.com/adf/svc/errors/"
xmlns="http://xmlns.oracle.com/apps/scm/costing/itemCosts/service/types/"
xmlns:tns="http://xmlns.oracle.com/apps/scm/costing/itemCosts/service/types/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="retrieveItemCost">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="CostParams" type="ItemCostInput" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="ItemCostInput">
<xsd:sequence>
<xsd:element minOccurs="0" name="ItemID" nillable="true" type="xsd:long"/>
<xsd:element minOccurs="0" name="InvOrgID" nillable="true" type="xsd:long"/>
<xsd:element minOccurs="0" name="UnitOfMeasureCode" nillable="true" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="retrieveItemCostResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Result" type="ItemCostOutputResult"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="ItemCostOutputResult">
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="Value" type="ItemCostOutput"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ItemCostOutput">
<xsd:sequence>
<xsd:element minOccurs="0" name="ItemCost" nillable="true" type="xsd:double"/>
<xsd:element minOccurs="0" name="CurrencyCode" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="0" name="UnitOfMeasureCode" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="0" name="ErrorFlag" nillable="true" type="xsd:boolean"/>
<xsd:element minOccurs="0" name="ItemID" nillable="true" type="xsd:long"/>
<xsd:element minOccurs="0" name="InvOrgID" nillable="true" type="xsd:long"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
<schema elementFormDefault="qualified"
targetNamespace="http://xmlns.oracle.com/adf/svc/errors/"
sdoJava:package="oracle.jbo.service.errors"
xmlns:sdoJava="commonj.sdo/java"
xmlns:tns="http://xmlns.oracle.com/adf/svc/errors/"
xmlns="http://www.w3.org/2001/XMLSchema">
<element name="ServiceErrorMessage" type="tns:ServiceErrorMessage"/>
<complexType name="ServiceMessage">
<sequence>
<element maxOccurs="1" minOccurs="0" name="code" type="string"/>
<element maxOccurs="1" minOccurs="0" name="message" type="string"/>
<element maxOccurs="1" minOccurs="0" name="severity" type="string"/>
<element maxOccurs="unbounded" minOccurs="0" name="detail"
type="tns:ServiceMessage"/>
</sequence>
</complexType>
<complexType name="ServiceErrorMessage">
<complexContent>
<extension base="tns:ServiceMessage">
<sequence>
<element maxOccurs="1" minOccurs="0" name="sdoObject" type="anyType"/>
<element maxOccurs="1" minOccurs="0" name="exceptionClassName"
type="string"/>
</sequence>
</extension>
</complexContent>
</complexType>
</schema>
</wsdl:types>
<wsdl:message name="ServiceException">
<wsdl:part name="ServiceErrorMessage" element="errors:ServiceErrorMessage"/>
</wsdl:message>
<wsdl:message name="ItemCostService_retrieveItemCost">
<wsdl:part name="parameters" element="types:retrieveItemCost"/>
</wsdl:message>
<wsdl:message name="ItemCostService_retrieveItemCostResponse">
<wsdl:part name="parameters" element="types:retrieveItemCostResponse"/>
</wsdl:message>
<wsdl:portType name="ItemCostService">
<wsdl:documentation/>
<wsdl:operation name="retrieveItemCost">
<wsdl:input message="tns:ItemCostService_retrieveItemCost"/>
<wsdl:output message="tns:ItemCostService_retrieveItemCostResponse"/>
<wsdl:fault name="ServiceException" message="tns:ServiceException"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="ItemCostServiceSoapHttp"
type="tns:ItemCostService">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="retrieveItemCost">
<soap:operation soapAction="http://xmlns.oracle.com/apps/scm/costing/itemCosts/service/retrieveItemCost"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ServiceException">
<soap:fault name="ServiceException" use="literal"/>
</wsdl:fault>
</wsdl:operation>
</wsdl:binding>
</wsdl:definitions>
Create Your Source Connector
-
Sign into Integration Cloud Service.
-
On the Welcome page, under Start Here, click Connections.
-
On the Connections page, click Create.
-
On the Create Connection Select Adapter dialog, select SOAP.
You can also select REST, but for this example, we use SOAP.
-
In the Create New Connection dialog, set the values, then click Create.
Attribute
Value
Name
Enter any text. For this example, enter
Connect to Cost Source
.Identifier
CONNECT_TO_COST_SOURCE
Role
Trigger and Invoke
Description
Connect to the source we use when pricing items outside of Pricing Administration.
-
On the Connect to Cost Source page, click Configure Connectivity.
-
In the Connection Properties dialog, set the values, then click OK.
Connection Property
Value
WSDL URL
ItemCostService.wsdl
Upload the WSDL you saved to your local computer earlier in this procedure.
Target Server's TLS Version
TLSv1.1
Suppress Insertion of Timestamp Into the Request
No
Ignore Timestamp in the Response Message
Y
Enable Two Way SSL for Outbound Connections
Empty
Identify Keystore Alias Name
Empty
-
Click Configure Security, set the value, then click OK.
Attribute
Value
Security Policy
No Security Policy
-
At the top of the page, click Save.
-
Click Test > Validate and Test, confirm that your integration displays a message at the top of the page.
Connection Connect to Cost Source was tested successfully.
-
Click Close > Close.
Create Your Target Connector
-
On the Connections page, click Create.
-
On the Create Connection Select Adapter dialog, select SOAP.
-
In the Create New Connection dialog, set the values, then click Create.
Attribute
Value
Name
Enter any text. For this example, enter
Connect to Cost Target
.Identifier
CONNECT_TO_COST_TARGET
Role
Trigger and Invoke
Description
Connect to the target we use when pricing items outside of Pricing Administration.
-
On the Connect to Cost Target page, click Configure Connectivity.
-
In the Connection Properties dialog, set the values, then click OK.
Connection Property
Value
WSDL URL
http://myServer.myCompany.com:10663/fscmService/ItemCostServiceV2?WSDL
Target Server's TLS Version
TLSv1.1
Suppress Insertion of Timestamp Into the Request
No
Ignore Timestamp in the Response Message
Y
Enable Two Way SSL for Outbound Connections
Empty
Identify Keystore Alias Name
Empty
-
Click Configure Security, set the values, then click OK.
Attribute
Value
Security Policy
Username Password Token
Username
Enter the user you use when you administer Oracle Pricing.
Password
Enter the password you use when you administer Oracle Pricing.
-
At the top of the page, click Save.
-
Click Test > Validate and Test, confirm that your integration displays a message at the top of the page.
Connection Connect to Cost Source was tested successfully.
-
Click Close > Close.
-
Go to Technical Reference for Oracle Pricing (Doc ID 2248583.1), then download the Files That Support Pricing Examples attachment to your laptop.
The attachment contains the INTEG_FUSIO_PRICI_WITH_EXTER_SYS_01.00.0000.iar file. Save this file to a folder on your laptop.
-
Go to Integration Cloud Service.
-
On the Welcome page, click the Integrations icon.
-
On the Integrations page, click Import.
-
In the Import Integration dialog, browse to the
.iar
file that you downloaded, then click Open. -
Click Import.
-
On the Integrations page, click Integrate Fusion Pricing with External System, which is the integration you just imported.
-
Examine the integration.
-
Notice that the integration connects the source to the target.
Some of the text might be difficult to read in this screen print. Here's the same detail but in a table.
Attribute
Value
Operation
Operation
Direction
retreiveItemCost
retreiveItemCost
Toward target
retreiveItemCostResponse
retreiveItemCostResponse
Toward source
Fault
Fault
Toward source
-
Click the Request Mapping icon, then notice the attributes that the integration maps from source to target.
For example:
Attribute in Source
Attribute in Target
itemID
itemID
InvOrgID
InvOrgID
-
Click the Response Mapping icon, then notice the attributes that the integration maps from target to source.
For example:
Attribute in Source
Attribute in Target
Value
Value
itemCost
itemCost
CurrencyCode
CurrencyCode
UOMCode
UnitOfMeasureCode
ErrorFlag
ErrorFlag
ItemId
ItemId
InvOrgId
InventoryOrgId
-
Click the Fault Mapping icon, then notice how the integration maps attributes to handle any faults that might happen at run time.
Attribute
Value
Fault
ServiceErrorMessage
Route To
ServiceErrorMessage
-
Activate the Integration
-
On the Integrations page, on the row that contains your integration, click Actions > Edit.
-
On the Map Data Integration page, click Actions > Tracking.
-
On the Business Identifiers for Tracking dialog, set the value, then click Done.
Primary
Tracking Field
Contains a check mark.
ItemID
-
On the Map Data Integration page, on the status bar near the top of the page, verify that the status displays 100%.
The status displays next to the Last Modified attribute.
-
Click Save, then click Close.
-
On the Integrations page, on the row that contains your integration, click Actions > Activate.
-
On the Activate Integrations dialog, set the values, then click Activate.
Option
Value
Enable Tracing
Contains a check mark.
Include Payload
Contains a check mark.
C. Test the SOAP Service
Test your call to the SOAP service.
-
Determine the input payloads you need.
-
Use SOAP UI to do your test.
-
Get the URL for the SOAP web service that you need to do the test from Integration Cloud Service. For example:
https://ssotest.oracle.com/integration/flowsvc/soap/COSTING_API_PRICING_INTEG/v01/
-
Examine the response payloads.
-
Test for more than one item to make sure the service returns the correct cost for different types of calculations.
-
Include error cases during your test to make sure the costing service returns errors correctly through the integration.
Here's an example input payload you can use to send to the SOAP service during the test. Example address to the WSDL.
https://server.integration.us2.oraclecloud.com/integration/flowsvc/soap/CGB_INTE_ORAC_FUS_PRIC_WITH_ANTH/v01/?wsdl
Example payload.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:typ="http://xmlns.oracle.com/apps/scm/costing/itemCosts/service/types/">
<soapenv:Header>
<wsse:Security soapenv:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsu:Timestamp wsu:Id="TS-772E6BAE6F9F39812416003717946724">
<wsu:Created>2020-09-17T19:43:14.670Z</wsu:Created>
<wsu:Expires>2020-09-17T19:44:14.670Z</wsu:Expires>
</wsu:Timestamp>
<wsse:UsernameToken wsu:Id="UsernameToken-772E6BAE6F9F39812416003714274653">
<wsse:Username>shailendra.pitre@oracle.com</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">WedAug05@0@0</wsse:Password>
<wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">zFzlHdJthMM1ZS5uXnmCcQ==</wsse:Nonce>
<wsu:Created>2020-09-17T19:37:07.465Z</wsu:Created>
</wsse:UsernameToken>
</wsse:Security>
</soapenv:Header>
<soapenv:Body>
<typ:retrieveItemCost>
<typ:CostParams>
<!--Optional:-->
<typ:ItemID>149</typ:ItemID>
<!--Optional:-->
<typ:InvOrgID>204</typ:InvOrgID>
<!--Optional:-->
<typ:UnitOfMeasureCode>Ea</typ:UnitOfMeasureCode>
</typ:CostParams>
</typ:retrieveItemCost>
</soapenv:Body>
</soapenv:Envelope>
Here's an example response payload that the SOAP service sends to you. Examine it to make sure ItemCost contains the amount you expect for ItemID and InvOrgID.
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<wss:costServiceResponse xmlns:wss="http://www.boomi.com/connector/wss">
<Value>
<ItemCost>12484.78</ItemCost>
<CurrencyCode>GBP</CurrencyCode>
<UnitOfMeasureCode>Ea</UnitOfMeasureCode>
<ErrorFlag>false</ErrorFlag>
<ItemID>100000001582378</ItemID>
<InvOrgID>300000037424187</InvOrgID>
</Value>
<Value>
<ItemCost>11404.41</ItemCost>
<CurrencyCode>GBP</CurrencyCode>
<UnitOfMeasureCode>Ea</UnitOfMeasureCode>
<ErrorFlag>false</ErrorFlag>
<ItemID>100000001582379</ItemID>
<InvOrgID>300000037424187</InvOrgID>
</Value>
</wss:costServiceResponse>
</S:Body>
</S:Envelope>
D. Set Up the Connector in Oracle Applications
-
Sign into Oracle Applications.
-
Go to the Setup and Maintenance work area, then go to the task:
-
Offering: Order Management
-
Functional Area: Pricing
-
Task: Manage External Service Details for Algorithms
This example assumes you're setting up the Order Management offering. If you use a different offering, then click it instead of Order Management.
-
-
On the Manage Connector Details page, create a connection to the system that hosts the web service that your pricing algorithm calls. For this example, assume it calls the Oracle Costing Service.
Attribute
Value
Target System
Fusion_HCM
You must first use the Setup and Maintenance work area to specify this system as a trading community source system.
Connector Name
QP_FUSION_COSTING_ICS_SRVC
You can use any value, but it must match the value that the pricing algorithm sends to the executeSOAPService function.
Connector URL
Enter the URL that locates the server and port that your web service uses as the end point. For example:
https://ssotest. oracle.com/integration/flowsvc/soap/COSTING_API_PRICING_INTEG/v01/
User Name
Enter the user name required to access your web service.
Password
Enter the password required to access your web service.
Invocation Mode
Synchronous
For details, see Connect Order Management to Your Fulfillment System.
E. Edit the Service Mapping
Add entities to the Sales service mapping. Here's the first one you add.
Make sure you use the exact attribute name and values. If you don't, the mapping will fail.
Try it.
-
Sign into Oracle Pricing with administrative privileges.
-
Go to the Sandboxes work area.
-
On the Sandboxes, page, open and enter your sandbox, or create a new one.
-
Go to the Pricing Administration work area, click Tasks, then under Pricing Configuration, click Manage Service Mappings.
-
On the Manage Service Mappings page, click Sales.
-
On the Edit Service Mapping page, on the Entities tab, click Actions > Add Row, then set the values.
Attribute
Value
Entity
CostParams_Custom
Description
Store the value for my cost parameter extensions.
-
In the Details area, add two attributes. Make sure Allow Null contains a check mark for each attribute.
Attribute
Value
InvOrgID_Custom
Long
ItemID_Custom
Long
-
Add another entity. On the Entities tab, click Actions > Add Row, then set the values.
Attribute
Value
Entity
Value_Custom
Description
Store the value of the CostParams input element.
-
In the Details area, add attributes to the Value_Custom entity. These attributes will contain the details that you communicate to and from a system that resides outside of Oracle Pricing. Make sure Allow Null contains a check mark for each attribute.
Attribute
Value
CurrencyCode_Custom
String
ErrorFlag_Custom
Boolean
InvOrgID_Custom
Long
ItemCost_Custom
Decimal
ItemID_Custom
Long
UOMCode_Custom
String
-
Add another entity that copies the definition that the web service uses. On the Entities tab, click Actions > Add Row, then set the values.
Attribute
Value
Entity
Result_Custom
Description
Store the value of the output element.
-
On the Entities tab, click the row that contains Header in the Entity column.
-
In the Details area, click Actions > Add Row, then set the values.
Attribute
Value
Entity
FulfillOrgId_Custom
If you use a list of values in a search dialog to specify the item price, then you must use a pretransformation to populate the value in the FulfillOrgId attribute.
Type
Long
-
Click Save.
Add the Source to the Service Mapping
-
Click Sources.
-
Add an attribute to the OrderCatalogLine source.
-
On the Sources tab, click the row that contains OrderCatalogLine in the Source column.
-
In the Details area, on the Entity Mappings tab, click the row that contains Header in the Entity column.
-
In the Details area, on the Attribute Mappings tab, click Actions > Add Row, then set the values.
Attribute
Value
Attribute
FulfillOrgId_Custom
View Object Attribute
FulfillOrgId
-
-
Add an attribute to the OrderHeader source.
-
On the Sources tab, click the row that contains OrderHeader in the Source column.
-
In the Details area, on the Entity Mappings tab, click the row that contains Header in the Entity column.
-
In the Details area, on the Attribute Mappings tab, click Actions > Add Row, then set the values.
Attribute
Value
Attribute
FulfillOrgId_Custom
View Object Attribute
FulfillOrgId
-
-
Add an attribute to the OrderLine source.
-
On the Sources tab, click the row that contains OrderLine in the Source column.
-
In the Details area, on the Entity Mappings tab, click the row that contains Header in the Entity column.
-
In the Details area, on the Attribute Mappings tab, click Actions > Add Row, then set the values.
Attribute
Value
Attribute
FulfillOrgId_Custom
View Object Attribute
FulfillOrgId
-
Add the Service to the Service Mapping
Specify the end point that locates the system that resides outside of Oracle Pricing, and specify the entities that you will use to communicate details with the service.
The screen capture includes.
-
The service you add.
-
The entities you add to the service.
-
The Value_Custom entity that doesn't have a value in the Reference Entity attribute is selected.
-
The attributes for the first Value_Custom entity.
Try it.
-
On the Edit Service Mapping page, click Services.
-
Click View > Columns, then add a check mark to Alias and Namespace.
-
Click Actions, click Add Row, then set the values.
Attribute
Value
Service
RetrieveItemCost_Custom
You can enter any text. Describe what the service does.
Alias
retrieveItemCost
Implementation Type
Internal
Namespace
Enter the URL that locates the end point on the system that resides outside of Oracle Pricing, and that will communicate the SOAP payloads with Pricing. For example:
http://xmlns.oracle.com/apps/scm/costing/itemCosts/service/types/
Don't use
http://my_server.com:7012
. -
In the Details area, on the Entities tab, add the entities. Make sure the Read attribute and the Write attribute for each entity contains a check mark.
Entity
Alias
Parent
CostParams_Custom
CostParams
Leave empty.
Result_Custom
Result
Leave empty.
Value_Custom
Value
Leave empty.
-
Click Save.
-
In the Details area, on the Entities tab, click View > Columns, then add a check mark to Reference Entity.
-
In the Details area, on the Entities tab, add another entity. Make sure the Read attribute and the Write attribute each contain a check mark.
Entity
Alias
Reference Entity
Parent Entity
Value_Custom
Value
Value
Result
The definition of the Oracle Costing Service includes a three level hierarchy.
Root CostParams and Result Value
To create this hierarchy, you.
-
Add the Value_Custom entity and leave the Parent Entity empty.
-
Add another Value_Custom entity, specify the reference entity as Value, and specify the Parent Entity as Result.
-
-
In the Entity column, click CostParams_Custom.
-
In the CostParams_Custom Entities area, add attributes. Make sure the Read attribute and the Write attribute for each attribute contains a check mark. Leave other attributes empty.
Attribute
Alias
InvOrgID_Custom
InvOrgID
ItemID_Custom
ItemID
The pricing algorithm uses these aliases, and they're case sensitive.
-
In the Details area, on the Entities tab, click the Value_Custom row that doesn't contain a value in the Reference Entity attribute.
-
In the Value_Custom Entities area, add the entities. Make sure the Read attribute and the Write attribute for each entity contains a check mark. Leave other attributes empty.
Attribute
Alias
CurrencyCode_Custom
CurrencyCode
ErrorFlag_Custom
ErrorFlag
InvOrgID_Custom
InvOrgID
ItemCost_Custom
ItemCost
ItemID_Custom
ItemID
UOMCode_Custom
UOMCode
-
Click Save.
It isn't necessary to use the Sources tab to create the source because you typically use the Sources tab to specify a source when a virtual object populates the web service. However, in this example, you use a pricing algorithm and call a web service to get the details that the web service needs.
Update the PriceSalesTransaction Service
-
On the Services tab, click Query By Example, then query for the value.
Attribute
Value
Service
PriceSalesTransaction
-
In the Details area, on the Entities tab, click Query By Example, then query for the value.
Attribute
Value
Entity
Header
-
In the Entities area, click Action > Add Row, set the values, then click Save and Close.
Attribute
Value
Attribute
FulfillOrgId_Custom
Read
Contains a check mark
Write
Contains a check mark
F. Troubleshoot
Here are some tips.
-
If your pricing algorithm reports a 401 Unauthorized exception while calling the costing service, then use a secured service link in the service registration.
-
If the price breakdown in Order Management doesn't display your cost charge components, then you must add them. For details, see Manage Price Details on Order Lines.
-
Assess your extended algorithms to determine whether you must modify them during an upgrade. For details, see Performing Your Quarterly Update (Doc ID 2337485.1).
Call a Different Service from the Pricing Algorithm
This topic describes how to call the Costing SOAP service from a pricing algorithm, but you can call a different service to meet your specific requirements.
-
Determine whether the schema for your WSDL service must use Integration Cloud Service. Most SOAP services do require that you use Integration Cloud Service.
-
If you don't need Integration Cloud Service, then skip sections B and C.
-
In section D, If you.
-
Don't need Integration Cloud Service, set up the connector so it connects directly to the SOAP service.
-
Do need Integration Cloud Service, set up the connector so it connects directly to Integration Cloud Service.
-
-
In Step E, set up the service mappings for each request schema and response schema of the WSDL.
-
In Step F, set up the algorithm according to your deployment requirements.
-
Identify the pricing algorithms that you must modify. For details, see Pricing Process and the content starting at Example Pricing Algorithm, Part 1, Get Reference Attributes.
-
Identify the step in each algorithm where you must call the service.
-
Determine the input values that you must use to so you can interface with the service.
-
Determine how you will process the output from the service, including how you will use the algorithm variables to process the output.
-