Invoking Oracle Fusion Cloud REST services from SOA-CS

In this post I’ll brief about how we can trigger Oracle Fusion ERP Cloud REST services from Oracle SOA-CS.

Let’s take a requirement that to update a fusion cloud database table record. As we aware we won’t have access to cloud database and the only option left to us is making use of REST services provided by oracle.

So let’s go with the specific requirement that to update Expenditure Items table (pjc_exp_items_all). Simply search with the table name in google, you’ll get complete details about the table and columns in it.

This table belongs to Project Portfolio Management, so to search for any REST services available to update tables related to this, go through below Navigation.

Google -> Search for OER (Oracle Enterprise Repository) and open the site -> Select ‘Project Portfolio Management’ tab -> Under ‘Tables & Views’ category, select latest release (Release 13 Update 17b  by the time this post is blogged) -> In the left under REST API click on Project Portfolio Management -> In the page you can see all the available APIs.

Direct link for the same: https://docs.oracle.com/en/cloud/saas/project-portfolio-management/r13-update18a/fapap/api-Expenditure%20Items.html

There select the Expenditure Items API, you’ll be able to see all the methods, select required method (In our case select method ‘PATCH’ which is used to update an expenditure Item) .

Now in the page copy the path to be used for the method to invoke /fscmRestApi/resources/11.13.17.11/projectExpenditureItems/{ExpenditureItemId}

And In the examples, check the sample request and response, which we use to build our schema for input to the REST service.

1.png

Now let’s go into the development.

  • I’ve created a SOA project with BPEL (service defined later).
  • In the BPEL, first let’s create a Schema for the REST service. Make sure the schema attribute names must match with the attribute names given in the sample request, response.

4.PNG

  • In the schema two elements are created one is the primary key of table (ExpenditureItemId) and the other is updatable attribute (ExternalBillRateSourceName) in the cloud table (not all attributes are updatable).
  • Create REST service in the composite file and right click on it and ‘configure SOA WS policy‘ add security policy [oracle/wss_http_token_client_policy] and edit the policy, set csf-key (e.g: CW-key)
  • Put an Invoke activity in BPEL and call the REST service. In the Invoke add properties as given below.

[rest.binding.http.X-HTTP-Method-Override = ‘PATCH’,  rest.binding.http.Accept = ‘application/json’]

  • Create Assign activity and map the required values to the REST input variable.

This slideshow requires JavaScript.

Result: So if you pass ExpenditureItemId, ExternalBillRateSourceName values to REST service, it’ll update the  attribute ‘EXT_OVRD_BILL_RATE_SOURCE_NAME’ with the value coming from ‘ExternalBillRateSourceName’ for the already exist record with given ExpenditureItemId in the ‘pjc_exp_items_all’ table.

Reference (more details about security): http://www.ateam-oracle.com/invoke-fusion-cloud-secured-restful-web-services/

Hope you enjoyed the post!

Advertisements

View the Job Details and run the jobs manually in Oracle Fusion Cloud Application

This post will be helpful in providing the navigation to find the job details and run them from the oracle cloud fusion application. As an example in this post I’ll show the FBDI (File Based Data Import) job details which is much used in real time.

Navigation to view the Job details:

  • Login to Oracle Fusion Cloud Application
  • Click on ‘Setup and Maintenance’ Icon from the home page.
  • Select the required Module from left drop down (Financials)
  • Search with the keyword ‘Manage Custom Enterprise Scheduler Jobs’
  • Select the link ‘Manage Custom Enterprise Scheduler Jobs for Financial and Supply Chain Management and Related Applications’
  • Search with the required Job in the Name column search box (or) in the Display Name column. [search with ‘Load’ keyword in Display Name column search box]
  • Select the required Job from the list and and view the Job details (You can see details like Job Name, Display Name, description, job path, job execution type (Java/ PL SQL/ Process). Using the options provided in the top you can ‘Edit’ the job, ‘Duplicate’ this job, ‘Export to Excel’.

This slideshow requires JavaScript.

Navigation to Run the Jobs:

  • Go to the Home page and click on Tools -> ‘Scheduled Processes’
  • Click on ‘Schedule New Process’, which will open a popup.
  • Click on ‘Search..’ link under Name drop down.
  • Search with the required job ‘Load Interface’ and select the job name ‘Load Interface File for Import’ from the list.
  • Basically this job will take the data file (FBDI CSV File) and executes the jobs which we select like ‘Import Projects Billing Events’ job. So the billing data which we upload will be moved to the Project billing events Interface table and from there they’ll be moved to the base tables [means billing events will be created in the cloud application]. This is how we can move the data to oracle cloud application.
  • Select the Import Process ‘Import Projects Billing Events’ and upload appropriate FBDI file and Submit the job.

This slideshow requires JavaScript.

Hope you like the post!

Using Partial Triggers in Oracle Applications Cloud, Oracle Fusion Applications

This post explains how can we refresh a component when another component value is changed. You must be already aware that this can be achieved easily in ADF code by (a) setting the partial Triggers property of target component to the ID of source component & (b) setting the autoSubmit property of source component to ‘true‘.

But in Oracle Applications Cloud, Oracle Fusion Applications we won’t be having access to the source code and we need to implement it from the browser itself using customization feature.

partial triggers property is available for customization, but we need to find the ID of the source component which is not displayed anywhere to us. So to get the ID of the source component click on F12 (browser Inspect Element) then navigate to the source component and click on it. You can find the ID of that component over there.

What ever discussed above, let’s see step by step.

  • Login to Oracle Applications Cloud

1

  • You’ll be taken to the home page.

2

  • Select the sandbox if not selected any from the ‘Manage Sandboxes’ link (you can create a new sandbox also and its mandatory to select one sandbox before we proceed doing the customization to the application)

3

  • After selecting sandbox, click on ‘Set as Active’

4

  • Now navigate to the page where you wanted to do customization (eg: like in Order Management -> Orders on Hold page). Here let’s take a requirement that on selecting some value in ‘Hold Name’ LOV, the ‘Release comments’ component should display some custom message.

5

  • Now click on Inspect element (F12) and click on source attribute to find the ID of it. Copy the ID  [if source and destination components present inside same parent component then the last part if ID will be sufficient].

6

  • Click on Customize Pages link which you can get from user drop down.

7

  • Go to the Structure tab  and click on required component to customize

8

Note: If component is present inside a popup then click on button which brings the popup and in the component structure scroll down little where you can see multiple popups. Click on each popup and edit and read the ‘popup fetch listener’ property to understand why that popup is being used and check it is the correct one that we need to edit. After you find required popup if the content inside that is not visible, then set the ‘Content Delivery’ property from ‘lazyUncached’ to ‘Immediate’, then the content inside popup will be available to edit.

  • Click on source component -> If any popup comes select Edit -> Click Edit icon or right click on component at source code and click on Edit -> Set the ‘autoSubmit’ property to ‘true’

9

  • Click on Destination component and click on Edit and set the ‘partialTriggers’ to the ID which we copied earlier. [don’t set the entire path of ID, if source and destination components present inside same parent component then the last part if ID will be sufficient]. For the Value property set the EL logic as [#{bindings.HoldNameHeader.inputValue eq ‘CUSTOM HOLD’? ‘This is a custom Hold.’: bindings.HoldReleaseComments.inputValue] which means when ever ‘CUSTOM HOLD’ is selected in the LOV then below target component shows the message as ‘This is a custom Hold.’, and whenever other value is selected it won’t show any message and user can enter text over there. 

10

  • Now close the customization and you are ready to test. Select ‘CUSTOM HOLD’ from Hold Name LOV, then Release Comments shows the message as ‘This is a custom Hold‘. If you select other value then input text will be empty and editable. Now exit from the sandbox.

11

Hope you enjoyed the post 🙂