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.

  1. 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>
  2. 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

  3. 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>
  4. 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

  1. Create WSDL.

  2. Create your source connector.

  3. Create your target connector.

  4. 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

  1. Sign into Integration Cloud Service.

  2. On the Welcome page, under Start Here, click Connections.

  3. On the Connections page, click Create.

  4. On the Create Connection Select Adapter dialog, select SOAP.

    You can also select REST, but for this example, we use SOAP.

  5. 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.

  6. On the Connect to Cost Source page, click Configure Connectivity.

  7. 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

  8. Click Configure Security, set the value, then click OK.

    Attribute

    Value

    Security Policy

    No Security Policy

  9. At the top of the page, click Save.

  10. 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.

  11. Click Close > Close.

Create Your Target Connector

  1. On the Connections page, click Create.

  2. On the Create Connection Select Adapter dialog, select SOAP.

  3. 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.

  4. On the Connect to Cost Target page, click Configure Connectivity.

  5. 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

  6. 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.

  7. At the top of the page, click Save.

  8. 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.

  9. Click Close > Close.

  1. 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.

  2. Go to Integration Cloud Service.

  3. On the Welcome page, click the Integrations icon.

  4. On the Integrations page, click Import.

  5. In the Import Integration dialog, browse to the .iar file that you downloaded, then click Open.

  6. Click Import.

  7. On the Integrations page, click Integrate Fusion Pricing with External System, which is the integration you just imported.

  8. Examine the integration.

    • Notice that the integration connects the source to the target.

      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.

      notice the attributes that 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.

      notice the attributes that 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

  1. On the Integrations page, on the row that contains your integration, click Actions > Edit.

  2. On the Map Data Integration page, click Actions > Tracking.

  3. On the Business Identifiers for Tracking dialog, set the value, then click Done.

    Primary

    Tracking Field

    Contains a check mark.

    ItemID

  4. 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.

  5. Click Save, then click Close.

  6. On the Integrations page, on the row that contains your integration, click Actions > Activate.

  7. 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

  1. Sign into Oracle Applications.

  2. 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.

  3. 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.

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.

  1. Sign into Oracle Pricing with administrative privileges.

  2. Go to the Sandboxes work area.

  3. On the Sandboxes, page, open and enter your sandbox, or create a new one.

  4. Go to the Pricing Administration work area, click Tasks, then under Pricing Configuration, click Manage Service Mappings.

  5. On the Manage Service Mappings page, click Sales.

  6. 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.

  7. 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

  8. 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.

  9. 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

  10. 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.

  11. On the Entities tab, click the row that contains Header in the Entity column.

  12. 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

  13. Click Save.

Add the Source to the Service Mapping

  1. Click Sources.

  2. 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

  3. 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

  4. 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.

Specify the end point that locates the service, 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.

  1. On the Edit Service Mapping page, click Services.

  2. Click View > Columns, then add a check mark to Alias and Namespace.

  3. 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.

  4. 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.

  5. Click Save.

  6. In the Details area, on the Entities tab, click View > Columns, then add a check mark to Reference Entity.

  7. 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.

  8. In the Entity column, click CostParams_Custom.

  9. 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.

  10. In the Details area, on the Entities tab, click the Value_Custom row that doesn't contain a value in the Reference Entity attribute.

  11. 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

  12. 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

  1. On the Services tab, click Query By Example, then query for the value.

    Attribute

    Value

    Service

    PriceSalesTransaction

  2. In the Details area, on the Entities tab, click Query By Example, then query for the value.

    Attribute

    Value

    Entity

    Header

  3. 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.

  1. Determine whether the schema for your WSDL service must use Integration Cloud Service. Most SOAP services do require that you use Integration Cloud Service.

  2. If you don't need Integration Cloud Service, then skip sections B and C.

  3. 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.

  4. In Step E, set up the service mappings for each request schema and response schema of the WSDL.

  5. 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.