Skip navigation

Oracle Documents Cloud Service  provides “Conversations” – which is a great way for to share information with each other in an enterprise.  This can reap great benefits by extending to the developer teams in your enterprise by integrating with the Developer Cloud Service to automatically provide updates about the latest status of a project.  Furthermore, conversations can be accessed by any user on the go, using the Android/iPhone mobile app for Documents Cloud Service (for downloads refer to this page) and ensure that everybody is on the same page always with regards to what is happening in the project.


Do note that conversations are actually a feature of Oracle Social Network Cloud (OSN) which is bundled along with a Documents Cloud Service instance and I will be using these interchangeably in this blog.


This blog post will demonstrate how to achieve this via Webhooks provided by the Developer Cloud Service (version 16.3.5) and the Documents Cloud Service (version 16.3.5). Webhooks are a callback mechanism for a producer application to provide updates about itself to other consumer applications in real time.  This eliminates the need for polling for the destination applications and improves efficiency for both.


So any activities in the project, like issue updates, commits, branch creation etc, will be automatically published into Documents Cloud Service (or Oracle Social Network Cloud) as posts to a conversation.  This way the entire team (which has access to the conversation) can be aware about the latest updates to the project, and can collaborate with each other to clear impediments during development like failed builds, merge conflicts etc.


In the case of Documents Cloud Service and Developer Cloud Service, this can be accomplished without any code using an incoming webhook at the Documents Cloud Service side and an outgoing webhook at the Developer Cloud Service as illustrated in the below figure.


Webhooks system.png

An outgoing webhook is used to push data out of the system, i.e. convert the event data into the required payload and post the same to the target URL, in this case the URL for the DOCS/OSN incoming webhook.  An incoming webhook is used at the destination system as a service listening for these post events and converts the payload into the meaningful destination data – in this case, conversations.


Below are the steps for achieving this setup:


Step 1 – Create a conversation in Documents Cloud Service

First, we need to create the conversation to which all the Developer Cloud Service updates would be automatically posted.  Go to the Documents Cloud Service console, click on “Conversations” on the left-hand menu and create a conversation.  I am going to name this conversation – “Webhooks 2016”


incoming webhook - 1.png

incoming webhook - 2.png


Step 2 – create a DCS (Developer Cloud Service) incoming hook in Documents Cloud Service

In the Documents Cloud Service, click on your user name on the top right hand corner, and select “Administration” from the menu.  This will take you to the Documents Cloud Service Administration console.  Select “Webhooks” from the administration menu as shown:


incoming webhook - 3.png


You would see 3 options –

  • DCS Incoming Webhook – handles incoming updates from a Developer Cloud Service Instance
  • Generic Incoming Webhook – handles incoming updates from any application
  • JIRA Incoming Webhook – handles incoming updates from a JIRA application



incoming webhook - 4.png


We will create a DCS Incoming Webhook as our source is a Developer Cloud Service project.  Click on New Instance and provide the various parameters to create the webhook.


incoming webhook - 5.png


For the fields:

Webhook Name – a relevant name to identify the webhook

Webhook enabled – tick this to enable the webhook

Target conversation – select the conversation created in Step 1

Message template - would be populated by default and contain two variables data.projectId and data.message.  The structure of the data object is as follows:

data {

message : ‘test’

projectId : ‘projectId’



Once you save this webhook, there will be a webhook URL that is generated along with the token.


incoming webhook - 6.png


Here the webhook URL is a relative URL.  The full webhook URL would be the following:

https://<OSN instance URL>/osn-public/hooks/webhooks


And the token here would be ‘6361690deedf10aad6147533636dfd49’


To find out the OSN (Oracle Social Network) instance URL attached to the Documents Cloud Service, open the following endpoint in your browser (note that you have to be logged in to the documents cloud service to access this)

https://<documents instance URL>/documents/web?IdcService=GET_SERVER_INFO

This will return a JSON payload containing a lot of server side information.  Look for an attribute called OSNServiceURL






Replace the osn with osn-public, this becomes your webhook base URL.

So in this example, the webhook URL will be


And the token will be 6361690deedf10aad6147533636dfd49


Step 3 – create an Outgoing webhook in Developer Cloud Service

The next step is to create an outgoing webhook in Developer cloud service to post updates to the Documents Cloud Service incoming webhook.  Note that you have to be the administrator for the project for which you want to configure the webhook to achieve this.


Here for demonstration purposes, I have created an empty GIT project called “test” for which I am the administrator.  Select the project and go to the administration tab, and click on Webhooks.


outgoing webhook - 1.png


Select New Webhook, which will take you to the ‘Create Webhook’ form


outgoing webhook - 2.png


In the “Create Webhook” form, use the following

Type = Oracle Social Network

Name = any description, I am using “test webhook” in this example

Active = Yes

URL = give the OSN webhook URL i.e.

Authentication token – give the token value - 6361690deedf10aad6147533636dfd49

Event groups – You can select specific events, or Failed Builds.  For the purpose of this example, I am going to select “All events”

Click on Done when all the details are complete.  This will create a new Webhook ready to be used.


outgoing webhook - 3.png


Step 4 – Test the outgoing webhook

Developer Cloud Service provides a way to test the webhook by simply clicking on the “Test” button.  You can also go to Logs and see the full details of the webhook interactions including the message payload.  If the test is successful, it will show up in green as below.


outgoing webhook - 4.png


This should show up in our “Webhooks 2016” conversation in Documents Cloud Service.




If the test is successful, try performing some activity in the Developer Cloud Service project, like commit or create a wiki, and check whether the same is being populated in the conversation.


You can track this conversation from the mobile client for Documents Cloud Service as well (available for iPhone and Android).  An effortless way of increasing developer collaboration and keeping track of project activities!  Consult the official documentation of Developer Cloud Service and Documents Cloud Service for more on Webhooks.


**The views expressed in this post are my own and do not necessarily reflect the views of Oracle.




Oracle Application Builder Cloud Service (ABCS) is Oracle’s offering that empowers business users to create and publish web and mobile applications

quickly with a no-coding required browser based development experience.



Oracle will showcase the product at Oracle Open World 2016 San Francisco through the following Sessions, Hands-on Labs and Demo Booths


Visual Application Development and Data Mashups for Busy Professionals [CON7296]                                                                                                       

Thursday, Sep 22, 12:00 p.m. - 12:45 p.m. | Marriott Marquis - Golden Gate C3


Solving IT Backlogs with Next-Generation Citizen Developer Tools [CON2888]                                                                                                    

Thursday, Sep 22, 9:30 a.m. - 10:15 a.m. | Marriott Marquis - Golden Gate B                                                                                                                                       


Dashboards and Custom Application Development for Oracle Customer Experience Users [CON2891]

Wednesday, Sep 21, 3:00 p.m. - 3:45 p.m. | Moscone West - 2016


No Code Required: Application Development and Publishing Made Easy [HOL7402]

Tuesday, Sep 20, 11:30 a.m. - 12:30 p.m. | Hotel Nikko - Nikko Ballroom III (3rd Floor)

Monday, Sep 19, 4:15 p.m. - 5:15 p.m. | Hotel Nikko - Nikko Ballroom III (3rd Floor)


HTML5 and JavaScript User Interface Development with Oracle’s Platform, Tools, and Frameworks [CON6492]

Wednesday, Sep 21, 12:15 p.m. - 1:00 p.m. | Moscone South - 306


Extend Digital Experiences through Component-Driven Integrations [CON7265]

Thursday, Sep 22, 9:30 a.m. - 10:15 a.m. | Moscone West - 2014


Simplified Multichannel App Development for Business Users [CON2884]

Monday, Sep 19, 1:45 p.m. - 2:30 p.m. | Moscone West – 2005


ABCS demos at the mobile mini-theater

Tuesday, Sep 20 10:30 a.m. - 11:30 a.m | Moscone Mobile mini-theater

Wednesday, Sep 21 10:30 a.m. - 11:30 a.m | Moscone Mobile mini-theater


Meet the product experts at Demogrounds

Monday-Wednesday, Sep 19-21, 10:15 a.m – 5:15 a.m. | Moscone South and Moscone West


More details regarding the session can be found here:

Register for the events to understand how to start creating rapid applications from the comfort of your browser!

Oracle PaaS enables building extensions to HCM cloud to provide custom functionality addressing specific business needs. These extensions can be built as bespoke Java web applications which are deployed in PaaS like JCS - SaaS Extension (JCS-SX) and can be embedded into HCM UI as a hyperlink or web page. Please refer to this link for some examples on SaaS extensions using JCS-SX.


When accessing the bespoke application from HCM application page, you might have to pass some information specific to the page to the bespoke application which could be used for further processing. This blog explains how to embed an external java web application into HCM UI as a hyperlink and pass context-specific parameters along with security token (JWT in this case) in the dynamic URL generated in Oracle HCM Cloud to the external application. For the sake of simplicity, the web application is just a simple JSP page which displays the values obtained from the HCM.



  • The bespoke web application is deployed in JCS-SX that is associated with the HCM instance. Also if the external web page content is embedded into the region on HCM as a "Web Page", the web application should be manually configured to disable Framebusting by adding the following entry to the web.xml :


  <description> Security precaution to prevent clickjacking - bust frames if the ancestor window domain (protocol, host, and port) and the frame domain are different. Options for this parameter are always and never.</description>




  • A user account with a user ID identical to the logged-in Oracle HCM Cloud user's user ID is required to be created in JCS-SX. New user can be added by navigating to the "Users" tab on the "My Services" page and clicking on the "Add" button.
  • HCM Cloud user should have administrative role like HCM Application Administrator to be able to edit application pages. Additionally users having access to “Source” view of the page can work with page layout components, this access can be enabled as shown below:



Note: All HCM development/customization activities should be performed in an activated sandbox.


Registering the external application with HCM

Before you can access the external application from within HCM, it has to be registered with HCM, this can be done using the “Manage Third Party Applications” option present under “Setup and Maintenance Page” as shown below:



Specify the full URL of the bespoke java application (up to the context root) and the application name in the “Create Third Party Application” page:


Define hyperlink to bespoke application from HCM Application Page

A link (named “Employee Details”) will be added to the “Employment Information” (Home -> My Team -> MyTeam ->  <Select an Employee> -> Employment Information) page which points to the bespoke application deployed in JCS-SX. The following steps would enable to create and define this link:


    1. Navigate to Employment Information page and click on “Customize Workarea Pages…” link under Administration category as shown below:


   2. In the “Customize Page” window that comes up, select “Site” as the customization layer. Switch to the “Source” view of the page as shown below:


    3. We will add the “Employee Details” link to the panel highlighted below. This panel can be selected by moving the cursor adjacent to “Years Since Last Promotion” heading.


     4. Once the panel is selected, click on the “Add Content” button on the top left corner and click on the “+Add” button against the “Hyperlink” option from the “Components” category as shown below:


          Note: If you want to embed the output of external page into a region in the HCM page, you can choose “Web Page” instead of hyperlink.


    5. The hyperlink by default gets added as the first element in the panel with title “Click edit icon to define hyperlink”, you can move the hyperlink to the position of your choice within the panel.


    6. Select  “Click edit icon to define hyperlink” and click “Edit” on the top (adjacent to “Add Content”) to define the hyperlink properties as shown below:



    7. Click on the “Secured Token” tab and then click on the “Create Secure Destination” (Key symbol) as shown below:


    8. Select the name of the web application (specified when registering the application), specify the page that is being pointed to through this hyperlink (in this case it is empDetails.jsp) and give a name to the secured token that you want the JWT token to be tagged to.


           Note: HCM Cloud generates a JWT token and assigns it to the key specified in the “Secured Token” field. In this case it is “jwt_tkn”. In the bespoke web application, the token can be fetched as a request parameter.


     9. Click on the “Display Options” tab, You can edit the “Text” attribute and change the title of the hyper link, change it to “Employee Details” in this case.


    10. On the “Display Options” tab click on the drop down arrow button adjacent to the “Destination” text box and select “Expression Builder”, an Edit box appears as shown below:


The URL configuration specified in the “Secured Token” tab is displayed in the text box:


Note that, ‘hcmapp’ is the name of the app we registered with HCM, ‘empDetails.jsp’ is the page this hyperlink would be pointing to and ‘jtw_tkn’ is the name given to the JWT token being passed.


    11. The exposed attributes of the current page can be accessed from the “Binding Params” drop down. For example, when you select “Business Unit” attribute from the drop down, the expression for accessing the attribute value is populated in the text box as below:


    12. You can identify expressions for the page attributes that needs to be sent along with the URL to the external web application and append them to the URL derived in step # 10 as shown below:


       As depicted above, page attributes like person number, business unit name, and employer name are passed to the external web application in the URL.


    13. Click on the “Close” button on top right corner to exit from the page customization view.


After the “Employee Details” hyperlink has been added to the page, the “Employment Information” page looks like below:



When you click on the “Employee Details” hyperlink, the web application deployed on JCS-SX opens up displaying the attribute values passed in the URL as follows:





This blog demonstrated the steps to access an external java web application from HCM UI as a hyperlink and pass context-specific parameters in the dynamic URL generated in Oracle HCM cloud to the external application deployed in JCS-SX. Please refer to this documentation for more details on page customization in fusion applications.


The views expressed in this post are my own and do not necessarily reflect the views of Oracle.

Part I of this blog series covered the specifics of building our lightweight Java EE application - Ticker Tracker. This part will focus on the following aspects


  • Leveraging NetBeans IDE while working with Oracle Developer Cloud service. This includes
    • Setting up the Team Server plugin
    • Leveraging it to interact with Developer Cloud service instance from within your IDE
  • Priming Developer Cloud service for Continuous Deployment





Oracle Developer Cloud Service is a cloud-based software development Platform as a Service (PaaS) and a hosted environment for your application development infrastructure. It provides an open source standards-based solution to develop, collaborate, build, and deploy applications within Oracle Cloud. It provides a number of services such as


  • Source code management
  • Build Automation
  • Continuous Integration
  • Issue tracking
  • Code review
  • Deployment automation
  • Agile process management
  • Wiki
  • Activity Stream




Let’s dive into the details now…


Using the Team Server plugin with NetBeans IDE

Leveraging NetBeans Team Server plugin along with the automated build & deploy features in Developer Cloud (explained in sections below) lets you stay within your IDE and enjoy a seamless development experience. Using NetBeans IDE to Create an Oracle Developer Cloud Service Project is a great tutorial to understand the details



Download & setup the Team Server plugin in NetBeans IDE

This is a fairly straightforward process and you can refer to the Installing the Team Server Plugin for NetBeans IDE section from Using NetBeans IDE to Create an Oracle Developer Cloud Service Project tutorial to get this up and running


Importing the project into NetBeans


This section provides a quick outline of the steps involved





You should see a similar project structure in your IDE



Configure the Oracle Developer Cloud instance within NetBeans

The Adding the Team Server for Your Oracle Cloud Developer Service Instance to Your NetBeans IDE Instance section provides clear instructions for these steps


Creating the project in Oracle Developer Cloud

The steps involved are outlined below


Use the Team pane, select the Developer Cloud instance and choose New Project



Enter the details such as project name, description etc.



In this step, we will link our Ticker Tracker application repository (source) to the project which is being created








Log into your Oracle Developer Cloud Service instance to explore the new project





Push your project to the Oracle Developer Cloud Git repository

What follows is a series of Git related steps which are applicable when working with any such Git repository. In this case, we are working against the repository which was automatically setup for us when we initially created the project in Developer Cloud Service





Since we already linked our project to the Git repository in the project, all that’s required is a Git > Remote > Push to Upstream, without having to explicitly provide Git repo information like location, credentials etc.





Check your Oracle Developer Cloud service instance to ensure that the source code is now present in the master branch



Configure Oracle Developer Cloud


Configure build job

We will need to configure the build job in Developer Cloud. It will take care of the following

  • Invoking our Maven build based off the source in out Git repo
  • Prepare our Zip artifact which is a deployable artifact compliant with the Application Container Cloud

All in all, this is a traditional Build configuration which you can read about in the documentation here. The components of the build configuration have been highlighted below




Note: The business logic in the Ticker Tracker application itself does not have any dependency on JDK 8 and can be compiled with JDK 7. In case you’re wondering why we need JDK 8 - it is because Wildfly Swarm build plugin is dependent on the same, hence the build process will require it as well. The good part is that Oracle Developer Cloud Service makes this configurable and provides you the flexibility


Select the project Git repository as the Source for the build process




Configure your build process to trigger on commits to your Git repository (read more in the Configuring Build Triggers section). This is important from a Continuous Integration perspective






A note on ‘cloud-ready’ package

Before you explore the next set of steps, it would be good to recap the fact that, in the context of Application Container Cloud, a valid deployment artifact is a ZIP file which consists of not only the (uber) JAR, plus other metadata files such as manifest.json, deployment.json etc


Developer Cloud build configuration invokes the maven build which creates the Uber JAR (thanks to the Wildfly Maven plugin), but the Application Container Cloud compliant ZIP is created by including an additional Build Step (highlighted below)






zip -j target/ target/ticker-tracker-swarm.jar manifest.json



The above shell command is executed after the Maven build and it packages the Uber JAR along with the mandatory deployment descriptor (manifest.json) as a ZIP file


Configure & initiate (manual) deployment


In addition to automating your build process (as explained previously), Developer Cloud service also enables you to deploy your Java applications to Application Container Cloud (details are available in the product documentation)


Initiate the process by navigating to Deploy > New Configuration




Enter the details corresponding to your Application Container cloud instance

Note: You can deploy to any instance of Application Container Cloud (irrespective of whether or not it is in the same identity domain as the Developer Cloud service




Complete the deployment configuration and start the process






At the same time, log into Application Container Cloud service and look at the Applications section and verify that the deployment is in fact in flight





The below screenshot depicts a successfully completed deployment process



Post deployment completion, you can also explore further details about the application (in Application Container Cloud) by clicking on the application name




You might also want to refer this tutorial - Creating a Project from a Template and Deploying It to Oracle Application Container Cloud Service


But we need Continuous Deployment !


So far, you were able to

  • configure the NetBeans project along with the Team Server plugin
  • push the project to Oracle DevCS git repository
  • configure the build and initiate it manually


Now, we’ll look the final piece of the puzzle – Continuous Deployment from Developer Cloud to Application Container Cloud


Back to the deployment configuration

Your post build process should be configured to trigger automatic deployment to Application Container Cloud (details available here). You can tweak the existing deployment configuration to weave the CI/CD magic!



Ensure that you check the Automatic radio button. In this scenario, we have opted to deploy stable builds only




Make a code change, commit, push & monitor build from your IDE

After you initiate Push to Upstream (as demonstrated previously), and refresh the application view on your Team view, you will notice (after some time) that the build process has been automatically kicked off (thanks to the configuration we just made)



You can track the build progress in real time from within your IDE






The same would reflect in your Developer Cloud console as well (as expected)




Quick recap..


Since this post had a lot to do with configuration (than code!) it’s easy to lose track. Here is a quick summary of what we did

  • Bootstrapped our project, application (and its source) within Developer Cloud service using the Team Server plugin for NetBeans – this served as the foundation for handling other life cycle activities related to our application
  • Configured Developer Cloud Service
    • Build process
    • Deployment process
    • Tweaked both to enable CI/CD



This marks the end of this 2-part blog series. In case you stumbled onto this post directly, here is the link for the first part. There is obviously more to Oracle Developer Cloud (as well as Application Container Cloud) than what has been covered via this blog post and the official product documentation is probably the best place to start digging in further.


**The views expressed in this post are my own and do not necessarily reflect the views of Oracle.

In this blog post, we demonstrate adding a social context (conversations) to an Oracle JET based application hosted on Java Cloud Service – SaaS Extension using the embedding features of Document Cloud Service.

Document Cloud Service is an enterprise grade content sharing and collaboration platform with inbuilt social features like real-time conversations and detailed analytics.  It can also be combined with other PaaS services and easily extend these features to those services.


Documents Cloud Service integration via UI

I have already discussed about the Service-to-Service integration between JCS-SX and DCS in the earlier blog.  Another way of integrating with Documents Cloud Service is to use its versatile UI and ‘embed’ in your application to make available its collaboration features.


This integration mechanism is very simple and can be used when all the services are federated by the Shared Identity Management (SIM) with the user having access to all of these services. The Documents Cloud Service has an embeddable UI that can be shown in an iframe of the application hosted in JCS-SX. When the browser first requests this embeddable resource, SSO will kick in, and the user, behind the scenes will get seamlessly authenticated to the Document Cloud Service/Social Network Cloud Service via the Shared Identity Management.  For the subsequent requests to Document Cloud Service/Social Network Cloud Service, the SSO cookie will serve as the valid identifier that the user has logged in.


Since 16.3.x, Documents Cloud Service also offers conversations as embeddable content.  In this example, we will embed Conversations from Document Cloud Service in the JET application.

Step 1 - Setting up conversations in the Document cloud Service

First, login to Documents Cloud Service and create a folder using Conversations -> Create option.  If the same conversation is to be shown to multiple users, add ‘Members’ to the conversation


Create conversation.png


The created conversation would have a unique URL that identifies it – e.g.




Note that the 16014 is the Id of the conversation that is created and the conversation displays like below:

Conversation - non embed.png


Step 2 - Embedding the Document Cloud Service Web UI Using an IFrame


The Document Cloud Service provides an embeddable URL for its folders, files and conversations.  Let us implement an iframe in the home.html module that will display the embeddable URL for a particular conversation.  The embeddable URL will have ‘embed’ after the documents.  In our case :



would display the document in an embeddable iframe as below:

Conversation - embed.png


Notice this doesn’t have the search and the navigation bar.

Further, the embedded Document Cloud Service content can be customized by adding parameters to the URL which will enable hidng certain UI elements, or changing layout.


will display the conversations without means to open a conversation, i.e. you can only see a list of conversations


To see the full list of options, please consult the configuration parameters documentation


For the purpose of this example, I will use the basic Quick Start Oracle JET project developed in earlier blog post.  Add the iframe to the home.html module at the end


<iframe src='https://docs1-<id-domain>.documents.<dc>' style="overflow : auto ; height : 400px ; width :  100% "> </iframe>


Step 3 – Configuring Document Cloud Service to allow embedding content on other domains

To allow the content to be embeddable, go to Administration -> Documents (available from the actions on the left hand pull down menu next to the profile photo) and do the following:

In the Embedded Content section, Select “Enabled".  Add your domain into the list of allowable domains in the format


Without this you would get a X-Frame-Options DENY in your application and the content will not be loaded. You can see this error in the console of the browser

embed error.png


If your application and Oracle Documents Cloud Service are in different domains and SSO is not enabled, the IFrame will display a login screen and the users will have to manually provide their authentication credentials.



That is it!  Deploy to JCS-SX and run your JCS-SX JET application and you should see the output as below.



Do make sure popups are allowed for this site from the browser, since the Document Cloud Service will open a popup that allows the user to login seamlessly.


You can do all sorts of operations on the conversations i.e. Post/Upload Document/Close etc that you would be able to do in the full Documents Cloud Service UI.  Another feature is that if the conversation is updated by another person the same would be updated in the embedded UI automatically!


**The views expressed in this post are my own and do not necessarily reflect the views of Oracle.