Welcome to the OPA Hub!


Oracle Policy Automation Workshop – Sept 24-27 North America (FINALIZED)

Oracle Policy Automation Workshop – Sept 24-27 North America (FINALIZED)

Things are now starting to fall into place with the Oracle Policy Modelling and Oracle Policy Automation Workshop that I mentioned in an earlier post. So first of all, you can join the class from Ottawa, ON, Edison, NJ, King of Prussia, PA and iMVP (live virtual). All are of course welcome. The main base will be Ottawa, ON. If you choose one of the locations above you will be in a high-tech training center with lots of cameras and things – unless you choose live virtual of course in which case you could be in your office or your living room eating donuts and wearing pyjamas.

The last few events we have organized have been a great success and well-received by the students, and we are very thankful for that. We think that the combination of Oracle Policy Automation, Oracle Siebel CRM and Oracle Sales / Oracle Service Cloud experience in one trainer generally means people can ask any question they can think of and we can help them find an answer!

The course outline is now completely ready and you can get all the details by reading the details on the OPA Hub Website Calendar here or directly on the training venue website here. If you are not on the North America East Coast, then please get in touch as we are gradually working on our calendar for West Coast, and Europe / Asia Pacific.

We look forward to seeing you and your colleagues on this or one of our future Oracle Policy Modelling and Oracle Policy Automation Workshops somewhere in the world. If Siebel is more your thing, you will be interested to know we have just launched our Siebel 2018 workshops, over on the Siebel Hub Website – find out more on their calendar.


Oracle Policy Automation at Oracle OpenWorld 2018

Oracle Policy Automation at Oracle OpenWorld 2018

Oracle OpenWorld 2018As we rush into the part of the year that is known, depending on your preoccupation and industry either as “Back to School” or “Back to Project”, it is also timely to think about Oracle OpenWorld 2018, the massive technology conference that has successfully reinvented itself at least three times and is now a vibrant, exciting and fun place to be for a couple of days in October. This year, as always, Oracle Policy Automation will be showcased with some interesting Customer stories. So far the detailed session list is not quite complete, but there are already two exciting sessions that you will not want to miss. I’ll add them to the OPA Hub Calendar when I get the dates.

Oracle Policy Automation: Changing the Sales and Services Landscape [CAS2349]

With the ever-evolving technology and business landscape, Westpac needed to deliver a seamless, cross-channel, consistent customer experience. Westpac faced challenges such as constantly changing legislative requirements, multiple conversation models based on customer/product/brands, tight timelines, lack of agility, and expensive roll-out. In this session learn how Oracle Policy Automation proved the needed solution that caters to complex rules, policies, and regulatory compliance requirements in real time with an intuitive user interface. These pain points were addressed by integrating Oracle Policy Automation with CRMs such as Oracle’s Siebel and PeopleSoft, and other back-end applications, consolidating conversations and making them brand agnostic.

Autonomous Cloud Platform: Cloud Platform (PaaS)
Real Stories, Real Customers: See Featured Customers
Sessions By Topic: Legacy Application Upgrades and New Features
Intelligent Cloud Applications: Customer Experience (Sales, Marketing, Service)
Session Type: Customer Case Study Session

SPEAKERS : Aaron Webb, Application Services Manager CRM, Westpac, Ashish Goyal, Principal Consultant, Infosys Australia

Using Oracle Cloud Applications to Augment On-Premises Applications [CAS3942]

Legal Aid Ontario (LAO) was challenged to provide knowledge and policy direction to call center agents from disparate knowledge sources. LAO needed to consolidate its know-how into a single repository and use information from Oracle’s PeopleSoft case management support guides and other platforms to automate the search for relevant knowledge. LAO chose Oracle Service Cloud and Oracle Policy Automation. This provided consistent answers and policy guidance to internal and external constituents with multichannel capabilities. Oracle Policy Automation provides the ability to standardize policy decisions and eligibility, and provide an audit trail of decisions and what-if analysis. In this session learn about the challenges and benefits of this solution.

Real Stories, Real Customers: See Featured Customers
Sessions By Role: Apps IT
Your Cloud Transformation Roadmap: Building: Extend Data and Applications
Intelligent Cloud Applications: Customer Experience (Sales, Marketing, Service), PeopleSoft
Session Type: Customer Case Study Session
SPEAKERS :  Karl Martineau, CIO, Legal Aid Ontario

I hope to see lots of friends and customers in San Francisco for Oracle OpenWorld 2018.

Interviews, Languages and URL Arguments

Interviews, Languages and URL Arguments

The other day I was part of a discussion regarding the launch of Interviews. A couple of questions arose that formed the basis for an interesting discussion.

The details are not really important, but the basic thread was

  1. How can we be sure to launch an Interview in a specific language?
  2. How can we pass information into an Interview in respect of the language of the user?

Of course these two questions can be synthesised further to :

  1. What are the ways to find out what language the user is using?
  2. How do I pass seed information in the URL?

What language are you using?

You might be tempted to try all the different ways to do this JavaScript,  that you might find people talking about on Stack Exchange . There is basically no reliable method to detect the language of the user. Perhaps I have set the language of my Browser to German, but my Windows is in French. So which is my language? Perhaps I am in France so you can geolocate me, but I am actually a Finnish speaker? Perhaps I am in a country where geolocation is not usable or reliable? And so on…

In Oracle Siebel CRM, we have GetProfileAttr(“org.country”) available to us, for example through the JavaScript API, which will give us the Country in which we are supposed to be based. In Oracle Service Cloud we have the Country and Language in Contacts and no doubt we have other options in other applications. That will probably be the most reliable method, since it is not dependent on what the end user has done to their computer. Fine.

Suppose we want to pass that information to Oracle Policy Automation?

Let’s get down to basics.

In the image above :

  1. Whenever a Project is launched from a button, we can add the correct locale information to the URL to ensure it is launched correctly. So in the silly example above, there are two buttons. One uses”fr-FR”, the other “en-US”.
  2. This information is appended to the root URL via the ClickMe (mypath)  function.

In the third bullet, is illustrated the other part of the question. How can we pass this information into Oracle Policy Automation. using the JavaScript object we pass seedData={} into our Project. And in the seed data you can see our information being passed.

In the Interview itself, we can recover the information using the URL Argument feature in our mapped Project:

Of course the attribute can now be used in our Interview or our rules, should we need to display or leverage this information:

This little set of examples does illustrate that Oracle Policy Modelling could really do with some functions to at least allow the rule designer to capture the locale of the user (which language did they choose to view my interview in, so to speak).

Oracle Policy Automation Workshop – Sept 24-27 North America

Oracle Policy Automation Workshop – Sept 24-27 North America

I’m pleased to let you know we are going to be running another Oracle Policy Automation Workshop in September. Thanks to the wonderful Multimedia Video Presence technology, although we plan to run it in either Toronto or Ottawa (depending on the balance of attendees), you can also join from a number of locations in Canada and the United States!

Get in touch using the Contact form or LinkedIn and we can share with you the complete list of locations and the pricing for this event.

Duration and Content

Oracle Policy Automation WorkshopThis is a four day hands-on Workshop which covers all you need to know to be productive in Oracle Policy Modelling and Oracle Policy Automation. The workshop content is available for download on our Oracle Policy Automation Workshop page, and covers all the practical aspects of Oracle Policy Automation and Modelling (including teamwork, collaboration, Hub management and interfaces).

Of course, these workshops are also driven to some extent by the attendees, so you are welcome to ask anything about Oracle Policy Automation, Oracle Siebel CRM, Oracle Service Cloud or Oracle Sales Cloud if we can fit it in, we can discuss



As well as the PDF slide content, everyone who attends will get a copy of Getting Started with Oracle Policy Automation.

This workshop is one in a set of workshops that we deliver all year round:

We also, as co-founders of the Siebel Hub website, design and deliver a variety of Siebel-specific workshops which you can find out about over there.

Delivery Language

This particular Oracle Policy Automation Workshop will be delivered in the English language. If you are looking for la version française, parlons-en!

List of Values, Display Values and Translations in Oracle Policy Automation

List of Values, Display Values and Translations  in Oracle Policy Automation

A common List of Values question that comes up is the following:

“How are list of values handled in Oracle Policy Automation, when I have more than one language? What gets put into the database?”

Of course, by “database” I mean whatever platform you are using to save the response from Oracle Policy Automation  : Oracle Sales Cloud, Oracle Service Cloud, Oracle Siebel CRM, Salesforce or any other.  For the record, the exact behaviour of your Connector will depend on how it has been programmed,but if it is doing what it should be doing, then the following information will apply.

The question that comes up is actually, to be fair, usually more detailed : people want to know the behaviour of the list of values both when it is created as a Screen element (single-use) or as a Value List (multi-use) and when there is more than one language involved. Well, fear not because the video below will answer all of those questions I hope, in a friendly and easy to follow way.

Imagine you have a Project in Oracle Policy Automation that includes an attribute of type Text, with a drop-down list to display values for the user.

  • What if there are multiple languages?
  • What if you use Screen-based Values?
  • What if you add Display Values as well as Values?
  • What if you migrate to Project Value Lists?
  • What editing might you have to do in your Translation file(s)?
  • What gets into the database?

List of ValuesAll these points will be covered in the video. Hopefully there will be no surprises in the video itself,  but it will be useful to see it in action and get confirmation of what you think might happen. And as mentioned previously, a big thanks to our OPA Hub Website Sponsors Mantis Solutions, makers of the OPA DB Connector, whose assistance made this video way easier to create and much faster to implement. If you are interested in Mantis OPA DB Connector, please reach out here.


Until the next post, I hope you are (at least those of you in the Northern Hemisphere) all having a pleasant Summer.

Temporal Reasoning in Oracle Policy Automation #2 : Time Travel

Temporal Reasoning in Oracle Policy Automation #2 : Time Travel

Following on from the previous post, this short series is looking at temporal reasoning. In the initial post we investigated the basic principle of entering temporal data in the debugger and using a function such as ValueAt() to get the value of a temporal attribute on a given date.

Now that we have laid the groundwork, we can extend our range a little. The first scenario to discover requires us to have the data in the debugger just like last time, with data for the first few days in July. If you are not sure of the scenario then jump right back to chapter one.

When did you last have lots of money in your account?

I’m sure I’m not the only one who sometimes looks at my bank account and feels a little depressed! The bank balance seems to go down and down, then spikes up on pay day and down and down again. I often ask myself, when looking at something nice in a shop or showroom  – a car for example – when did I last have that kind of money?

Thankfully, Oracle Policy Automation is here to help answer that question and many others in relation to temporal data. The following function will hopefully illustrate this example:

OPA 12 - Temporal Reasoning Part Two 2

You can probably guess the idea. Working backwards from the current date, when did I last have a value greater than 1500 in the temporal bank balance. Now, if you have been using the same example data as me, this function will currently return a value of uncertain. That’s because none of the data in the debugger at the moment is greater than 1500. But if you add a new Change Point to the temporal bank balance, for example :

OPA 12 - Temporal Reasoning Part Two 3

Then your debugger should provide you with a more definite answer. In my case, you can see that June 14 I had a change to my bank balance and it was 1550. The next available change point is July 1, when the value was 1000. So when did I last have more than 1500 in my temporal bank account? Following the change point data, the last date I had that amount of money was June 30. You might suspect that I spent my money faster than that 🙂 but we can only work with the facts, and the change points are those facts.

It won’t come to you as a surprise that there are many functions in the Function Reference for finding out values, and one of them is described below. It belongs to a series of functions prefixed with Interval.

OPA 12 - Temporal Reasoning Part Two 4

This one, as the goal suggests, helps me find my lowest bank balance in the period between the start of the year and today, based on the information in the change points. It will obviously depend on your data, but you will probably have something like this.

OPA 12 - Temporal Reasoning Part Two 5

In the next post we will continue investigating members of this family of temporal reasoning functions.

Temporal Reasoning in Oracle Policy Automation #1 : Time Travel

Temporal Reasoning in Oracle Policy Automation #1 : Time Travel

A while ago I was asking a friend what was the most frustrating and complicated thing when they started working with Oracle Policy Automation. Temporal reasoning came up pretty quickly, and after speaking with other friends and colleagues it definitely ranks highly on the list of most people’s bugbears. There have been lots of excellent articles and posts about this subject on other sites, and in the final part of the series I will share a set of useful links. But we are going to examine the topic over the course of the next few posts on the OPA Hub Website.

But now, into the subject. Let’s first of all consider some of the basics. What is all this about. Consider the following situation: I ask you for your date of birth, so that I can find out how old you are.

If I ask you the question this time next year, then the answer will be of course, different. But nothing has changed in my input data. You still have the same date of birth. But the nature of the response is that it changes over time. If that didn’t make sense, then my favourite is definitely the most obvious one for many people. How much money do you have in your bank account? And did you have the same amount in there last week?

This bank account example usually does it for most people! And what is more, the bank account example allows us to consider the next part of the temporal puzzle. Open a new Project in Oracle Policy Automation and create a new attribute called the temporal bank balance, of type Currency. Start the Debugger. Enter a value of 1200 for the bank balance.

Temporal Reasoning in Oracle Policy Automation Introduction

But what does that value actually mean? When did you have that money in your account?

Let’s add some more data to our Debugger session. Open the Change points >> dialog and add three lines. This is where the magic happens. This data will help us begin to see the concept of temporal reasoning.

Temporal Reasoning in Oracle Policy Automation Change Points Debugger

Add three change points, for the first, second and third of July (1000, 1100, 1500) . Looking at the data, we can use some Oracle Policy Automation Functions to understand how this data is actually represented.

In a Word document, enter the following rules (note that the dates are based on the ones I suggested):

Temporal Reasoning in Oracle Policy Automation Rules 1

Return to the Debugger and let’s look at the values.

Temporal Reasoning in Oracle Policy Automation Debug Result

Observe the values for the  three days in July are perhaps exactly what you are expecting. The ValueAt function has provided you the value on the date you specified. The surprises perhaps are from the other two. The bank balance today (assuming today is a date after the third of July and that you used the same data as my example ) is listed as 1500. In this case, Oracle Policy Automation has found that the last change point was July 3rd, and gives you that value. In summary – according to the data you entered, there was no change after the 3rd. Finally, the amount on June 30th, outside the data points you gave, is the amount you entered in the debugger right at the beginning.

If you right-click the temporal bank balance, and select Temporal Visualisation, then click the Temporal Visualisation tab on the left, the data is displayed visually:

Temporal Reasoning in Oracle Policy Automation Final

So in this first post, we have learned how to enter temporal data, and we have used a new temporal reasoning function to get the value on a specific date. In the second part of the post series, we will look at some more typical cases using temporal data and some more functions. More details can be found online of course.

Thanks for reading and see you soon!


OPA Hub - Deployment REST API VB Debug 1

Deployment REST API : Uploading Zip Files #2

Deployment REST API : Uploading Zip Files #2

Following on from the previous post, we are now in a position to begin putting together the different elements and actually working out how to use the Deployment REST API to upload a Zip File programatically. As I have said on many occasions I’m most definitely not a coder, but I like to explore and often it helps me in my day job : if I can piece together a plan and show that it works, other more intelligent people can get behind it. All of that means that any code I share (and you are welcome to post a comment and I will forward it to you) is strictly for entertainment and educational purposes only.

Back to our challenge, and here is our strategy.

  1. Ask the user for a Zip File
  2. Base64 encode the Zip File
  3. Use the Authentication mechanism from last time, log the user in to the Oracle Policy Automation Hub
  4. POST the request
  5. Observe the Response in the Oracle Policy Automation Hub and in our code
  6. Debug any issues

Building the Solution

The only thing to remember is that you need a snapshot file from the Deployment page, but even I know how to display a Windows Dialog and grab the file name.

OPA Hub - Deployment REST API Get File

2. Base64 encode the Zip File, as we mentioned in the previous post.

3. Use the authentication mechanism as we did in the original post. If you are struggling with the concepts behind it, read the section about debugging further on in this article.

4. POST the Request. Nothing much to see here, except the need to instantiate all the different elements of your Visual Basic Class before you serialize the whole thing into JSON. In the image below, I’m using the Classes generated in JSONUtils and building my structure before serializing it into JSON.

OPA Hub - Dep;loyment REST API example code

The actual POST comes from the Stack Exchange code I linked to in the previous article, with a few minor modifications.

OPA Hub - Deployment REST API POST Request

5. Observing the response is pretty easy, since you should now have a new Deployment in your Oracle Policy Automation Hub. Can you guess which ones in the screenshot below came from my code?

OPA Hub - Deployment REST API Result

6. Debugging

Of course, this is going to be the place where you might spend a lot of time. And of course, the Visual Studio debugger is your friend. But part of the challenge is the lack of detail. For example, it’s good to know you have a 409 Error, or a 400 Error. But what the heck does it mean. This is where your toolset will come in very handy.

a. Use SOAP UI

SOAP UI can be used to make and debug REST API calls. The process is a little different to the SOAP calls of the past, and it is important to note that you will need to create an Authentication Profile with your Oracle Policy Automation integration user account, and check that you have a valid token before you begin. If you are new to this, the OPA Hub Website has some good news for you. In our series of articles about Web Services and integrating with other applications, we videoed a typical scenario of using SOAP UI for deployment REST API calls. Scroll down to the video labelled “REST API Services”.

b. Grab your base64

Using your Visual Studio debugger and the variable content viewer for example, grab the encoded Zip File from your session:

OPA Hub - Deployment REST API VB Debug 1

Then paste it into a REST request in SOAP UI that has a valid token, and observe the response. Way more useful and a good guide to coding your error handling in Visual Studio.

OPA Hub - Deployment REST API SOAP UI Debug 1

So what about a self-congratulatory video to finish. If you want the code, just leave a comment and I will happily provide it to you.

OPA Hub - REST API Generate Class

Deployment REST API : Uploading Zip Files #1

Deployment REST API : Uploading Zip Files

Following on from a post in the not too distant past, where we looked sideways at the Deployment REST API and the ability to download the Zip File of a deployment snapshot programatically, this new post answers a request from one of our readers regarding the “other side of the coin” ; specifically how to take a Zip File that needs to be uploaded into an Oracle Policy Automation Hub, and get the file to load up into the Deployments, using code. I must thank the commenter on the previous article for sharing his question, since it is one that comes up quite a lot and this is a good opportunity to hopefully show how you might do it.

The starting point of the process is that you have previously downloaded a snapshot file from a Deployments page of your Hub in environment A, and you now want to copy it across to environment B.

With your Zip File in hand, what can you do to automate this process? Of course, you turn your attention to the REST API and the deployment REST API in particular. Find the page that matches your version and let’s have a look.

    "name": "Example",
    "description": "Description of Example Project",
    "compatibilityMode": "latest",
        "Default Collection"
                "description": "The initial version",
                "activeVersionFlag": true,
                    "base64": "...base64 value..."

How to get a class out of that? If only I could find a way to turn that into something easy to use in Visual Studio, I could create my own…wait a minute! Enter JSONUtils – the perfect site for converting JSON into C# or Visual Basic Classes.

OPA Hub - Deployment REST API Generate Class

How easy is that?

  1. Choose your language
  2. Give your new Class a name
  3. Paste the sample from the Oracle REST API documentation
  4. Press this button
  5. There’s your class, ready to use in your Visual Studio project.

Armed with this, we are ready to continue our research. We also need to be able to POST our request to the Oracle Policy Automation Hub. Thankfully somebody else has already asked about POSTing JSON to a specific URL millions of times, and there is a good starter function on Stack Exchange. At the bottom of that question is a great example.

Checklist – REST API Deployment

We can step back a moment and review a checklist

  1. We have Class to model our request
  2. We have a function to use HTTPWebRequest send things to the Oracle Policy Automation Hub
  3. We have an integration user and password, and the url of the Oracle Policy Automation Hub

So what else do we need? We need to be able to turn the Zip File into an encoded string as per the example given on the Oracle Policy Automation website : something like this:


Public Function ConvertFileToBase64(ByVal fileName As String) As String
        Return Convert.ToBase64String(System.IO.File.ReadAllBytes(fileName))
    End Function

In the second part of this post, we will put it all together and see the result!

OPA Quizzes : Helping you learn Oracle Policy Automation

OPA Quizzes : Helping you learn Oracle Policy Automation

We are always looking for ways to help you learn Oracle Policy Automation, so that’s why  we came up with our OPA Quizzes.

Whether it is for your next interview, or even as a preparation for your upcoming certification examination if you are planning on taking one, we hope that our range of free quizzes can help you get ready. If you are not familiar with the examination find out about it here  OPA Quizzes

In any case we hope that you enjoy them and have fun with them. Share them with your friends as you learn Oracle Policy Automation.

And while you are at it, reward yourself with a mug from the Shop. Maybe we will give away a few mugs at the end of the year to the Leaderboard Winners.

Yes, that’s a nice idea and this time we are organised enough to do it.

At the following page you will find all the OPA Quizzes and the links to the OPA Quiz Leaderboards. Check your results against the top scores and enjoy the stress of answering questions against the clock.

We recently began the process of building another’s two sets of questions so stay tuned and watch out for them in the coming weeks. In the meantime keeping smiling and have a good day!