Warning: Illegal string offset 'ssb_og_tags' in /home/content/10/4632510/html/wp-content/plugins/simple-social-buttons/simple-social-buttons.php on line 1466


The blog for Oracle Data Integrator ( ODI )

How to show Business Messages on Operator and, too, debug variables…

Hi Guys,

I frequently got emails asking how to do show Business messages on OD and, as there isn’t such feature until version, I created a way to have it.

It’s just like a magic trick!

We will need an “assistant”….  Let me see….   Please, you, the ODI Procedure! Come to stage!!!!!

Now the preparation to the magic!

1) Create an Option in the Procedure, we can call it The_Message (Type Value), like:

Option to show Message

2) Now create a step, we can call it “Show Message”
3) Put the technology to Java BeanShell

Add the following code:

throw new Exception(“nn<%=odiRef.getOption(“The_Message”)%>nn”)


Procedure to show Message 

That is it! Nothing more!

To use it, add to any package, click on it, go to its proprieties, Option Tab and write however it the message you wish to show at Operator. It will be like:

Package to show Message

Now, if you go to operator, that is what you will get;


Operator to show Message 

Magic Done! Did you like?

OK, now just a small tip! As you see, the “Show any message” step is in RED, that means “The process will be stopped here”. If you wish let it as “Warning” and do not stop the process, click on the checkbox “Ignore Error” in the Procedure step and you can add more steps after the Procedure “Show Message”.

Remember that you can use this Procedure infinite times in the same package or any other… Just change the value of the Option.

That is very useful to debug variable and gots its value at Operator!

Make any sense??

Once more, comments are very welcome!!!!!!


Cezar Santos


  1. Hi Experts,
    I am new in ODI and working as corporate trainer in IT company .Please help me to learn more on ODI ,and from where I will learn ODI coding.
    How to implement .

  2. Hello Experts,

    I have some issues on managing ODI variables with Load plans.
    Scenario: There are two ODI variables, lets say VAR1 is for refreshing query and VAR2 is for defining overridden static variable in load plan which could be reusable in different steps in load plan. The VAR2 variable would be using in VAR1 to get the value of VAR1, so VAR2 would have one latest static value which would be using in VAR1.

    Please suggest on the same.!

    Jeevan Kadam.

  3. Hi Kalyan,

    I am facing the same issue as you..so if you would have found a solution I would be happy if you could post it here…


  4. Hi ,

    There is no Semicolon on the subselect sql. I assume the error is with variable substitution because when I replace # with a number in the generated code it works fine.

    The Variable code is as follows :
    select pvalue from stg.stgn_g_params where pname = ‘ETL_DATE’.

    I have checked the option ” Use Temporary Interface as Derived Table (Sub-Select).

    Thanks ,

  5. Hi Experts,

    When we create a temporary interface including an odi variable it valides and works when run indivudually but when we use temporary interface as a subselect in another interface variable value is not substituded and database raises invalid character error since the variable value is number


    Complete Error :
    ODI-1228: Task Test (Integration) fails on the target ORACLE connection ODI_DEV.
    Caused By: java.sql.SQLSyntaxErrorException: ORA-00911: invalid character

    Can you please suggest some pointers.

    Thanks & Regards,

  6. Hi Experts,

    I am sorry to post on a wrong thread. But Its pretty much of an urgent requirement for us. The requirement is as follows :

    Here I am calling a package in a particular context. Within that package another package is being called (kind of hierarchy). So in my child package I am trying to get the context name using odiRef.getContext in a variable which was used to call the parent package. But the variable does not gets any value.

    The query being used is as given below ( in the refreshing tab of the ODI project variable):
    select replace(”, ‘”‘, ”) from dual

    My requirement is to get the execution context name of the parent package(e.g. PKJ_1) in a child package(PKJ_2). This child PKJ_2 is being called in the PKJ_1 (parent) by placing the scenario of PKJ_2 in PKJ_1.

    I have used the given variable in a simple package to get the context name and it is working fine there. But When i try to use that variable in the child package instead of the parent then that variable remains empty. I donot want to pass the context name as parameter from the parent to the child package execution.

    Immediate pointers would be of great help to me.


    • 1. Call the variable in declare mode in the child package.
      2. Secondly in the parent package , you must be calling the child package in the form of scenario. So in scenario go to Additional variable and use the above variable and in the variable pass the value like this #variable, so that from the parent value of the variable passes to child.
      Hope this helps.

  7. Hi,
    How can throwing user exception be helpful in generating error reports?
    Alos, can u tell me if any error occurs before creation of E$ table, where is it logged?


  8. Hi,

    Thanks, But can we use this as a Scenario(Resuable component)?? When a scenario is generated, the option tab is not seen


  9. Hi IPS,

    Go to Procedure “tree” (left panel) and right-click in the procedure name. You will find the “Insert Option” there…..

  10. Hi,

    I was not able to set the option. I don’t see the Add new button in the options tab.

Leave a Reply

Required fields are marked *.

This site uses Akismet to reduce spam. Learn how your comment data is processed.