Integrated SOA Gateway: Generate WSDL Example

This is a step-by-step guide to deploying a WSDL from the Integrated SOA Gateway in Oracle’s E-Business Suite 12.1.3. This is a simple example that should open up the world of making some of the canned APIs and services available for integration projects.

If you’re looking for hundreds of pages of in-depth info, please refer to Oracle’s Integrated SOA Gateway User Guide. We’re going to keep things simple here and walk though an example step-by-step.

Open the Integration Repository

So, to start off select the Integrated SOA Gateway responsibility and then the Integration Repository. If, when selecting the Integration Repository you don’t also see the Administration area, then you need to assign the correct UMX|FND_IREP_ADMIN role.

Integration Repository navigation

Find the business service interface

For this tutorial, we will deploy the WSDL for the SOA Health Check Test Package. It’s a good one to start out with because it is a very simple PL/SQL package. To find this one you can either search for it by name or internal name (SOA_DIAG_TST). Or, simply browse to it as shown in the image below.

Browsing through the Integration Repository to find the SOA Health Check Test Package

Clicking on the SOA Health Check Test Package link will display more about what functions are available in this package. Please note that it is a PL/SQL interface.

Clicking on the Test Function link in the Procedures and Functions section toward the bottom of the page will display more information about what this function will be doing. You will noticed that it takes in 3 parameters (ARG1, ARG2, and ARG3 — not a very creating naming convention, but this is a very simple function) and returns a number.

Details of the Test Function

Given how simple this particular function is, it would be an ideal first WSDL to deploy from the Integrated SOA Gateway. It would also be a great way to test connectivity to a partner who will be consuming E-Business Suite web services.

Grant appropriate access

Since we now know the details about the SOA Health Check Test Package, it’s time to decide who should have access to the TestFunction function.

Create Grant for Test Function

Check the checkbox for the Test Function near the bottom of the page and click on the Create Grant button. This will take you to the Create Grants page where you can grant to a specific user, a group of users, or open it up for everyone. Since this is a simple example, it would probably be easiest to grant access to All Users. Then hit the Apply button.

Integrated SOA Gateway Generate WSDL Example Create Grant

You should get an information message saying that a grant has been created successfully for operation ‘Test Function’.

Generate WSDL

The final step is to click on the Generate WSDL button in the top right corner. Simple right? Again, you should see an information message, and when the operation is finished you should notice a new section in the main page of the SOA Health Check Test Package. The Web Service – Web Service Provider area now clearly shows the status as Deployed. The WSDL URI is also shown for your environment.


You’re done!

Start using the Integrated SOA Gateway

The Integrated SOA Gateway in the Oracle E-Business Suite (EBS 12.1.3) is a fantastic resource for system integrators. But, the Oracle-provided documentation isn’t very clear. Here are some notes that may help you start using the Integrated SOA Gateway.

The obvious first step is to assign the responsibility “Integrated SOA Gateway” to the user needing access. This will give that user access to browse through all of the APIs provided by the Integrated SOA Gateway. But, it is a read-only access. Feel free to browse through the available APIs and get familiar with what is out there.

To really start using the Integrated SOA Gateway, you will need to assign the “Irep Administrator” role. After this is done correctly, you should be able to see an Administration tab at the top of the Integration Repository page.

The "Administration" tab only shows up after assigning the correct role.

There are a few key roles which unlock some of the hidden features of the Integrated SOA Gateway:

  • System Integration Analyst (UMX|FND_SYSTEM_INTEGRATION_ANALYST)
  • System Integration Developer (UMX|FND_SYSTEM_INTEGRATION_DEVELOPER)
  • Irep Administrator (UMX|FND_IREP_ADMIN)

Unfortunately Oracle wasn’t very consistent with their naming conventions in this case. At first, I only granted myself the “System Integration Developer” role because I didn’t know about Irep Administrator. As a result, I walked through the Oracle documentation ( and kept wondering why my “Administration” tab wasn’t showing up. So, the key is to assign the Irep Administrator role as shown below.

  1. Log into the Oracle EBS applications
  2. Navigate to User Management responsibility
  3. Navigate to Users web page
  4. Find the user
  5. Click on Update
  6. Click on Assign Roles button
  7. Find and choose “Irep Administrator” role
  8. Apply

Assign Irep Administrator role to start using the Integrated SOA Gateway

Please note: If you haven’t granted roles before, you’ll need to follow the same steps after logging in as SYSADMIN and performing the same steps for your user. But grant the “Security Administrator” role, which allows you to assign other roles (like Irep Administrator).

The workflow background engine will need to run successfully before the changes are applied. But, that’s it. Now you have unlocked the Administration tab. Now you can really start using the Integrated SOA Gateway. You should also notice the “Generate WSDL” button is available so you can start deploying web services right from the Integration Repository.

Now the Generate WSDL button should be available


Updating the random team name generator

A couple years ago I needed some team name ideas for a fantasy football league. I searched around the web for a random team name generator, but didn’t find anything that suited me.

I was learning PHP at the time, so I decided building a random team name generator would be a fun project, and not too hard for a PHP novice. I documented the main points of my approach here in this post, which shows a few of the basics.

The random team name generator only generates errors

Unfortunately, I let the original team name generator languish. I didn’t put a whole lot of effort into maintaining it. It still generated team names just fine, so why bother upgrading it? Well, the problem was that my website platform was still being actively developed and changed. WordPress changed so much, in fact, that soon my original team name generator was causing serious issues on my site. It even was generating HTTP 500 errors for a while. Not a good situation. My rankings on search engines for keywords like “fantasy football team name generator”, “funny team names”, “random team name generator” and several others fell drastically. The original team name generator was on the first page of most search engines for those key words, but quickly fell. Traffic ground to a halt.

But, I wasn’t too worried about it, because writing the first random team name generator was not a commercial endeavor. I did it just for fun—to see if I could build something that would give me some team name ideas for my fantasy team.

The new random team name generator

So when a project at work required me to write some PHP code, I thought I should dust off the old random team name generator, and update it, but this time I would make it a little more robust. I probably won’t actively develop it, but the new random team name generator should be able to:

  • Be edited and updated easily
  • Survive WordPress version updates
  • Be independent of theme or other plugins

So, after much research I converted the old random team name generator into a custom WordPress plugin. Many of the core PHP functions are the very similar to the original. I still have a get_random_team_name function which builds one random team name from the three arrays. The get_list_of_team_names function contains a loop that gets 10 random team names. Some other code handles the HTML formatting and appending to the page content. When the plugin is enabled, the random team names simply to the bottom of the Team Name Generator page.

What is next for the team name generator?

There were some features of the old version that I haven’t added yet into the new random team name generator. However, looking bag at my old traffic logs, they weren’t used very often. It seems most visitors come to the site looking simply for a list of ten random team names. The current version of the Team Name Generator does just that.

I will follow the comments closely and see what else needs to be added. I will occasionally tweak my lists that build the random team names. I may need to add some social sharing capabilities. However, I am much happier with the new solution. Hopefully it will be able to provide some good random team names for many people.

Simple request, simple solution

I work for an international company that has organizations all over the place, and some users can’t figure out the currency for some organizations easily, which can be a problem when analyzing item costs.

So, we got a fairly simple request. The request was to create a way for users to look up the currency code when looking at the Item Costs screen in Oracle.

One member of our team suggested two ways to solve the problem. The first was to create a descriptive flexfield to populate the currency code. The second one was to customize the item cost form, and add the currency code to the form.

Both seemed too complex for my tastes. A simple request deserves a simple solution.

I had an idea. A simple idea. “What about a really simple personalization?”

Ten minutes later, the problem was solved. The team member with the complex solutions admitted my idea worked, but he didn’t like that it wasn’t scalable. I’m not even sure what that means in this context.

The Boss liked the solution. The group requesting the change liked the solution. Everyone is happy (well, other than it-won’t-scale boy).

Here is the simple solution:

Navigate to the Item Costs Summary (CSTFITCT) form. Go to Help > Diagnostics > Custom Code > Personalize

Create the forms personalization by first creating a custom menu item under the Tools menu

Seq: 10
Description: Create the Currency Code menu
Level: Form
Condition Tab
Processing Context: Not in Enter-Query Mode
Context: (if you wanted you could turn this on for certain users or responsibilities)
Actions Tab
Seq: 10
Type: Menu
Description: Activate Tools Menu
Menu Entry: MENU1
(Oracle left MENU1 – MENU15 to us developers to use at our whim, but don’t use the SPECIALs)
Menu Label: &Currency Code

Then we activate that menu item and have it display a simple message with the currency code

Seq: 20
Description: Display the currency code
Level: Function
Condition Tab
Trigger Event: MENU1
Processing Mode: Both
Actions Tab
Seq: 10
Type: Message
Description: Display a message
Language: All
Message Type: Show
Message Text:
=SELECT ‘The currency code is ‘||gsob.currency_code FROM
gl_sets_of_books gsob
INNER JOIN org_organization_definitions morg on morg.set_of_books_id = GSOB.SET_OF_BOOKS_ID
WHERE morg.organization_id = fnd_profile.value(‘MFG_ORGANIZATION_ID’)

And you’re done. The message text must start with the =SELECT and you can’t concatenate it with regular text, so any additional text has to be done in the SQL statement.

When the user has selected an organization and navigated to the Item Costs Summary screen, he or she can easily select Currency Code from the Tools menu.

A simple message box will pop up with the currency code for that inventory organization. Easy.

Let me know if you have any better ways to solve this problem in the comments below. Especially if it is scalable.

Inexpensive Home Theater: Speakers and Subwoofer

Inexpensive Home Theater: Speakers and SubwooferThe AV Receiver powers your speakers. While speakers and subs can be a huge money pit in a home theater system, I decided to go the inexpensive route and save mucho dinero. I made this choice for several reasons:

  1. Speakers are a mature technology
  2. I am not an audiophile
  3. It takes a lot of money to get audiophile-quality speakers

Continue reading Inexpensive Home Theater: Speakers and Subwoofer