New Version of Application Integration Architecture for 11gR1

On Thursday I will presenting on Application Integration Architecture here at Collaborate 2010.  Interestingly, I’m already having to update my presentation because of Oracle’s new announcement.  Isn’t change fun?

Previously Application Integration Architecture (AIA), which is at Version 2.5, was fully compatible with Fusion Middleware 10g.  With this new release, AIA is fully compatible with the new Fusion Middleware 11g.  Oracle has released a few details with their announcement.

Oracle has added to the collection of Enterprise Business Objects and Services.  They have also added more functionality which is listed in their Press Release here.

This is all of the information that I have as of now but I will update the blog as more becomes available.  In the meantime, I will be posting my presentation (if it is not already there…) with the updated version later this week.

Posted in SSG | Tagged , , | Leave a comment

OBIEE Hands On Workshop

I am learning how to create many of the visualizations available with the Oracle Answers product – a component of OBIEE.  During the workshop I created several charts, reports, pivot tables and even a ticker.   For my first time playing with the OBIEE front end tools I found them very intuitive and fun to use.

Posted in SSG | Tagged , , , | Leave a comment

I’ll be presenting and blogging at Collaborate 2010 This Week!

I’ll be in Las Vegas starting Sunday and will be doing two presentations at the conference.

This is my third year so I’m ready to dive in, meet old friends, make new ones and learn a lot.

One of my sessions will be on Application Integration Architecture and the other will be on the basics of Fusion Architecture.

Also, I’ll be blogging during the week on the latest news, so I hope you’ll sign up for the RSS Feed.  If you do,  you will get automatic alerts on the latest Collaborate happenings.

And… if you are going to be attending, I hope you will look me up and say hello!

Posted in Collaborate | Tagged | Leave a comment

Using WAPI in Oracle BPM

There are many business use cases that require using WAPI  to implement Oracle BPM. WAPI is a low-level API that involves some basic web related tools to provide special functionality needed for your business process.  Just providing these tools without explaining why they are needed won’t help you learn how to use these tools when they are needed. There are probably many more applications for using WAPI. These are just some of the use cases I’ve come upon that required me to use WAPI.
  • The business has implemented business processes that have work items that are somehow related to each other. These business processes may be hierarchical in nature such as flight planning, trips and legs; or contains work items that are related together such as line items of a particular invoice or order.
  • Business organizations wish to group tasks according to management oversight, region or by some other factor.
  • The business wants to provide short-cuts to users so they don’t have to jump around to find related instances and have special UI requirements to provide this functionality. This functionality may require implementing special graphical UIs such as adobe FLEX or require jumping around from one particular work item to another. Going through the in-box view to open an instance each time is not desired or  feasible .
WAPI provides a mechanism to create a list of related instance that you can navigate in and out of from virtually anywhere within the business process. This could be from within a screenflow, some external UI, COTS applet, or Adobe FLEX. I have used WAPI from all of these types of examples and it is easy to do once you know how these tools work.

WAPI provides an mechanism to launch into a particular instance from HTML using javascript or hidden forms.  I have two versions of this code, one for BPM version 5.x and the other for 6.x. The two key components is the action URL link and the instance stamp.

BPM version 5.x:

<form method="post" action="<%= URLForAction.instanceProcess(request)%>" name="instanceActionsForm">
<input type="hidden" name="instanceStampId" />
<input type="hidden" name="nextInstanceStampId" />
<input type="hidden" name="actionId" />
</form>

BPM version 6.x:


function runTask(id) {
 var baseUrl = "<%=UrlActions.runTask()%>";
 var instanceStampId = id;
 var itemId = 0;
 var url = "<%=request.getContextPath()%>" + baseUrl +  "&<%=UrlActions.INSTANCE_STAMP_ID%>" + "=" +  encodeURIComponent(instanceStampId) +  "&<%=UrlActions.ITEM_ID%>" + "=" + itemId;
 window.open(url);
 }
 

Getting a list of related instances and pulling the instanceStamp from the instances is complicated.  I’ll have to address that later in a separate blog. It involves using BusinessProcess.getInstanceByActivity or BusinessProcess.getInstanceByFilter. There’s a lot to know about using these methods so I won’t go into it now. If you know how to use these methods then all you may need help on is creating an instance stamp. This can be done from the list of instances returned from these methods. To create the instance Stamp just use:

InstanceStamp instanceStamp =InstanceStamp.create(instanceId : instance.id, activityName : instance.activityName).getId();

Using WAPI to open instances can be dangerous. BPM keeps track of open instances. These open instances are locked. When you jump from instance to instance without closing out of the associated screen-flow you’ll lock up a bunch of instances. This will preventing people from gaining access to them later on.  The way to avoid this is to submit or post to the open instance before you open another one. This creates problems if you can’t simply cancel out of the open instance.

If you can simply cancel the open instance and you can be sure the cancel will work in most all cases, then you simply need to submit to the form before you open the new instance. If you can’t be certain of this, then I recommend you use a simple AJAX method to do this. You just need to parse the return document to be sure the post worked before you open a new instance. Here’s some code you can use to do this:

postLoc = "<f:postResults/>";
function cancelScreenFlow() {
    var xmlHTTP = new ActiveXObject("Microsoft.XMLHTTP");
    xmlHTTP.open("POST",postLoc,false);
    xmlHTTP.send();
    var xslresponse = xmlHTTP.responseText;
}

Hopefully you find this blog useful. I'm not sure BPM product management realizes how common these use cases are. So please let me know if you have any interesting use cases and how WAPI was used to solve your problem.  Solving certain BPM use cases with WAPI has been indispensable to me.  I'm always excited to learn of similar situations as the ones I've identified here.

Posted in SSG | Tagged , , , , , | Leave a comment

How to Get BRM Pipeline Working

I recently installed and configured the BRM pipeline rating using BRM’s optional Wireless Suite.  I had a difficult time getting it to work because it requires installing many interdependent components and many manual configuration steps. Hopefully this blog will help you get it working without much difficulty. Most of the difficulty has to do with figuring out what steps are needed and why.  The BRM documentation has most of the information you need but it is not in one place and it simply tells you to do this or that. It doesn’t do a good job at explaining what is needed to get the pre-configured wireless pipeline to work.  It also doesn’t explain how to create accounts and CDRs that work with the these pre-configured items.  I learned out a lot from getting it to work though. So here’s what I learned.

Pipeline rating is a completely standalone rating engine. These steps take you through the process of configuring the pipeline and BRM system so you can create accounts that the pipeline can work process and then create, rate and load CDRs into BRM. The pipeline needs to have rate plans, zones and other features loaded in the IFW database. BRM needs new event, service, device and item class-types configured.  The pipeline uses some BRM database configuration items to work whereas BRM needs some FMs to handle functionality around the Customer Center extensions. You’ll also need to install the Telephone and SIM Card Administrator.

The basic steps to get it to work are listed here. More details are broken out in the section that follow.

  • Install Customer Center Extensions.
  • Install Server-side Components.
  • Configuring the Wireless Registry File
  • Configure the IFW Database with Default Rate Plans and Settings.
  • Run pin_setup Scripts
  • Configure PIN_REL
  • Load the Telco GSM Event Map
  • Merge and Load Telco Event Notification
  • Create Portal Products, Deal, Plan and add to Plan List
  • Load Device Service Map
  • Load Item Type Mapping
  • Setting up GSM Accounts and Services.
  • Process CDR File
  • Testing and Troubleshooting Pipeline Rating

Install Customer Center Extensions

The first things you’ll need to do is install a panel and it’s associated dialog boxes into Customer Center. This panel is needed to create accounts with telephony services. These services require phone numbers, SIM cards and IMEI numbers in order to maintain, rate, bill and provision the service. BRM added this panel so Customer Service Reps (CSRs) can select telephone numbers, SIM cards and IMEI numbers when creating new accounts.

You will also need to install admin tools used for creating blocks of telephone numbers and SIM cards. The install scripts for these admin tools and the Customer Center extensions are located on http://edelivery.oracle.com.  Select “Oracle Communications Applications” in the drop-down and the OS you’re working with; e.g. Microsoft Windows 32-bit platform. Select search.

Select the “BRM Media Pack for Microsoft Windows (32-bit)” and download Oracle BRM clients for Windows.  After it downloads unzip the file and install these three client components on your PC.

GSM_Mgr_CustCtrExt
NumberAdminCtr
SIMAdminCtr

The install scripts assume you have Customer Center already installed and it usually finds the installation directory by itself. The installation of these client side components is easy. After you unzip the packages, just execute the setup.exe file and follow the instructions.

Install Server-side Components

Since the pipeline rating engine is not part of BRM, some some new op-codes are needed by BRM.   Although you have installed the pipeline rating engine on the server, you not done yet. There are several more components you will need. If you haven’t installed the pipeline rating engine, I blogged about it in, Common BRM Pipeline Installation Issues.

If you don’t have the install scripts shown below, you’ll need to go to Oracle e-delivery site and download the optional BRM components. It’s under the Oracle BRM Media Pack ->Oracle BRM Extensions.

Unzip the file and run these install scripts as the PIN user. The actual names may be a little different depending upon the version and platform you’re using.

7.4_WirelessSuite_linux_32_opt.bin
7.4_SIMMgr_linux_32_opt.bin
7.4_NumberMgr_linux_32_opt.bin
7.4_GPRS_Mgr_30_linux_32_opt.bin
7.4_GSM_Mgr_linux_32_opt.bin

Configuring the Wireless Registry File

When you install the Wireless Suite component, it comes with a pre-configured wireless pipeline. The registry for this pipeline is located in the the IFW_HOME/conf directory and is called wireless.reg.  You will need to edit this file by entering the connection information you used for setting up the IFW and PIN database. It needs the database alias, and user name and passwords you used. There is one entry for the IFW database and two entries for the PIN database. You will need to encrypt the passwords using AES encryption.

Next you will need to create an IFW synchronization queue.  The wireless pipeline registry, wireless.reg,  calls the sync queue IFW_SYNC_QUEUE. It is created by running the pin_ifw_sync_oracle.pl scripts. I couldn’t get it to work taking some of the default values as shown in the script usage syntax.

pin_ifw_sync_oracle.pl create [-l username/password@databaseAlias] [-q queue_name -t queue_table]

After including the following command line options, I was able to get it to work. You will need to modify this for your particular environment.

perl pin_ifw_sync_oracle.pl create -l pin74/pin74@pindb -r 300 -s ‘tablespace PIN74 initrans 5 storage (initial 200k next 200k maxextents unlimited pctincrease 0 )’

Configure the IFW Database with Default Rate Plans and Settings.

The BRM Wireless Suite comes with a pre-configured set of rate plans, discounts, impact categories, etc.  These settings are stored in the IFW_HOME/conf/pricingcenter/Oracle directory.

Edit the perl script called insertWIRELESS_SAMPLE.pl in this directory. Change the oracle connection properties to use the IFW database alias and user name and password you chose. When you run this script it will execute the insert statements contained in the SQL scripts located in this directory. You will notice that each SQL script is named after the IFW table it updates. This makes it very easy to see what is being added to the IFW database. As you can see, there are a lot of tables  affected by running this perl script.

ifw_alias_map.sql ifw_apn_group.sql ifw_apn_map.sql
ifw_calendar.sql ifw_daycode.sql ifw_destinationdesc.sql
ifw_discarding.sql ifw_discountbalimpact.sql ifw_discountcondition.sql
ifw_discountdetail.sql ifw_discountmaster.sql ifw_discountmdl_cnf.sql
ifw_discountmdl_ver.sql ifw_discountmodel.sql ifw_discountrule.sql
ifw_discountstep.sql ifw_discounttrigger.sql ifw_edrc_desc.sql
ifw_edrc_field.sql ifw_exchange_rate.sql ifw_glaccount.sql
ifw_holiday.sql ifw_icproduct_all.sql ifw_impact_category.sql
ifw_map_group.sql ifw_mostcalled.sql ifw_networkmodel.sql
ifw_networkoper.sql ifw_pipeline.sql ifw_pricemodel.sql
ifw_pricemodel_step.sql ifw_rateplan_cnf.sql ifw_rateplan.sql
ifw_rateplan_ver.sql ifw_ref_map.sql ifw_resource.sql
ifw_rsc_group.sql ifw_seqcheck.sql ifw_serviceclass.sql
ifw_servicecode_map.sql ifw_service.sql ifw_specialday_lnk.sql
ifw_specialdayrate.sql ifw_splittingtype_all.sql ifw_standard_zone.sql
ifw_taxcode.sql ifw_taxgroup.sql ifw_tax.sql
ifw_timeinterval.sql ifw_timemodel_lnk.sql ifw_timemodel.sql
ifw_timezone.sql ifw_uom.sql ifw_usageclass_map.sql
ifw_usageclass.sql ifw_usagescenario_map.sql ifw_usagetype.sql
ifw_usc_group.sql ifw_zonemodel.sql

To run this command, be sure to redirect the output to a file. It streams a bunch of information to the standard output. It doesn’t output to a log file so you may want to look back this file to be sure it ran properly.

Run pin_setup Scripts

As a pin user, go to $PIN_HOME/setup/scripts

Run the pin_cmp_tcframework.pl file. This install script creates a bunch of new classes (tables) in the PIN database. Expand the nodes below to see what tables where created:

Service Objects:

/service/telco/
/service/telco/gsm/roaming

Event Objects

/event/activity/telco
/event/session/telco
/event/delayed/activity/telco
/event/delayed/session/telco
/event/delayed/activity/telco/roaming
/event/delayed/session/telco/gsm/roaming
/event/svc_order
/event/svc_order/attribute
/event/provisioning
/event/provisioning/service_order

Config Objects:

/config/telco/provisioning
/config/telco/provisioning/fieldlist
/config/telco/service_order_state
/config/telco/service_order_state/telco
/config/service_framework
/config/service_framework/permitted_service_types/
/config/account_era

Run the perl pin_cmp_gsm.pl script Expand the following nodes to see what tables (classes) are created.

Service Objects

/service/settlement
/service/settlement/roaming
/service/telco/gsm
/service/telco/gsm/data
/service/telco/gsm/fax
/service/telco/gsm/sms
/service/telco/gsm/telephony
/service/telco/gsm/roaming
/service/settlement/roaming
/service/settlement/roaming/incollect
/service/settlement/roaming/outcollect

Event Objects:

/event/activity/settlement
/event/session/telco/gsm
/event/delayed/session/telco/gsm
/event/delayed/session/telco/gsm/roaming
/event/provisioning/service_order/telco/gsm
/event/provisioning/service_order/telco/gsm/data
/event/provisioning/service_order/telco/gsm/fax
/event/provisioning/service_order/telco/gsm/sms
/event/provisioning/service_order/telco/gsm/telephony

Config Objects:

/config/telco/gsm
/config/telco/gsm/data
/config/telco/gsm/fax
/config/telco/gsm/sms
/config/telco/gsm/telephony
/config/telco/service_order_state/gsm
/config/telco/service_order_state/data
/config/telco/service_order_state/fax
/config/telco/service_order_state/sms
/config/telco/service_order_state/telephony

Active_session objects:

/active_session/telco/gsm
/active_session/telco
/active/session/telco/gsm

Run the pin_cnf_tcframework.pl script. This will add the following FMs to the CM pin.conf file. These FMs contain opcodes used by the Customer Center.

fm_prov fm_prov_pol
fm_tcf fm_tcf_pol
fm_trans_pol

Run the pin_cmf_dm_prov_telco.pl and pin_cnf_dm_prov_telco.pl

This will configure the CM pin.conf file and dm_prov_telco pin.conf file. You may also want to edit the start_all and stop_all script so that dm_prov_telco start and stops with the rest of the CM and DMs.

Configure PIN_REL

There are several traps you can fall into trying to get the pin_rel utility to work for the first time. You will need to run some setup/scripts, modify the user $PATH and make sure Oracle sqlldr is installed on the server.  This section will help you avoid some common problems.

First, the pin_rel utility requires some new tables in the database schema to operate. Go to the setup/scripts directory and run the pin_cmf_rel.pl and pin_cnf_rel.pl. Next add the $PIN_HOME/apps/pin_rel to the pin user $PATH.  And finally be sure Oracle sqlldr is installed on the server.

The pin_rel utility use SQL Loader (sqlldr) to load events into the BRM database. To see if it is installed on your server, executing sqlldr from the command line as the pin user. If it can’t be found check to be sure the $ORACLE_HOME/bin directory is in the path. If sqlldr isn’t in the bin directory, then install it. It’s part of the Oracle database installation so you will basically have to install Oracle on the server. Since you don’t actually need a configured database on the server, skipping this step during installation will save you some time.

For performance reasons you may want to run on the database server. When you run CDRs through the pipeline, you can map the output to a network drive or copy the files to database server.  For our testing purposes  running it on the BRM server is sufficient. If you have a large amounts of EDRs to process in production and to load into BRM, then you may need to move the pin_rel app over to the database server.

Load the Telco GSM Event Map

The Pricing Center needs to be configured to recognize the new event and service objects loaded in prior steps. Fortunately the new event map is created for you. This event map comes already merged with BRM base-line event maps. If you’re working with a baseline BRM installation,  you just have to load them into the database.

Change directory to sys/data/config directory and run the command:

load_event_map -dv pin_event_map_telco_gsm

If you have custom events already loaded, then be sure to edit the pin_event_map_telco_gsm file before you run this command. This command will overright the changes made to the default event map, if you don’t. If you forget, just rerun the command with custom events added to this file.

Merge and Load Telco Event Notification

The Telco provisioning is integrated through the event notification framework. When new products and services are purchased for an account, the event notification framework needs to fire-off these op-codes. These op-codes will perform functionality required to provisioning the new telephony services through BRMs provisioning framework.

PCM_OP_TELCO_SVC_LISTENER 4008
PCM_OP_TELCO_APPLY_PARAMETER 4009
PCM_OP_TELCO_PROPAGATE_STATUS 4010
PCM_OP_TELCO_PROV_CREATE_SVC_ORDER 4016
PCM_OP_TELCO_PROV_HANDLE_SVC_ORDER 4017
PCM_OP_TELCO_PROV_UPDATE_PROV_OBJECT 4019

To enable the provisioning framework, change to following directory to sys/data/config and execute

load_pin_notify pin_notify_telco

Create Portal Products, Deal, Plan and add to Plan List

In this section you will create a product, deal and a plan that can be purchased against accounts and rate CDRs through the pipeline.  We will use one of the rate plans inserted in the pipeline database with the insertWIRELESS_SAMPLE.pl script described above.  Start Pricing Center and connect to the PIN database. Click on the create product icon, enter a name and select in the drop-down list Applies To: /service/telco/gsm/telephony.

Accept all the default values and when you get the prompt, “Do you want to add or change rates and folds for this product?”, click on “Yes”. Now add an Event Map and locate “Delayed Session GSM Session”.  This should give you a menu of Pipeline Single Rate Plans. Click on “Search/Reload” This pop-up window should look like this:

Click and then “Select” the GSM Sample Rate Plan. Apply changes. Next create a deal and a plan for this product. Add the Plan to the default plan list. Commit changes to the database.

Load Device Service Map

load_pin_device_permit_map pin_device_permit_map_sim_telco_gsm

load_pin_device_permit_map pin_device_permit_map_num_telco_gsm

Load Item Type Mapping

The events rated by the pipeline engine requires an /item object to associate these charges together for an account. The documentation provides examples for associating charge from New York or California to /item/gsm/new_york or item/gsm/california. For sake of simplicity we will just associate all pipeline rates events to /item/usage/gsm. To do this,   you will need to edit two xml files in the $PIN_HOME/sys/data/pricing/examples directory; config_item_tags.xml and config_item_types.xml.  Add the contents for <ItemTagElement> to the following files as shown below:

config_item_tags.xml

<ItemTagElement>
<ItemTag>gsm</ItemTag>
<EventType>/event/delayed/session/telco/*</EventType>
<ServiceType>/service/telco/gsm/*</ServiceType>
</ItemTagElement>

config_items_types.xml

<ItemTypeElement>
<ItemTag>gsm</ItemTag>
<ItemDescription>GSM Usage</ItemDescription>
<ItemType precreate=”true” type=”cumulative”>/item/usage/gsm</ItemType>
</ItemTypeElement>

To load these configuration files using the following utilities:

load_config_item_tags -dv config_item_tags.xml

load_config_item_types -dv config_item_types.xml

Using Developer Center extend the /item/usage to /item/usage/gsm. To do this start Developer Center, click on the Storable Class Editor   and click on the /item/usage class in the class window.  Then click File->New->Class and add “/gsm” to the base class.  And finally click on File->Commit Class to Database

If you get a permission error message committing these changes, recall that the DM_ORACLE pin.conf file needs to be set to enabled to changes to the class and field definitions, see below:

- dm dd_write_enable_fields 1

- dm dd_write_enable_objects 1

You will have to restart the BRM to load these changes.

Setting up GSM Accounts and Services.

Before you can create accounts using the GSM plan created in Pricing Center, you will need to load up a set of test phone numbers and SIM cards to use. What SIM card and phone number you specify will matter for testing. For instance, the pipeline will not rate any out of network calls. So all the CDRs you create to test in the pipeline will have to use phone numbers associated with accounts and services setup in BRM. But before you can do that you will need to establish a block of available numbers to select from.

I found the documentation very good for learning how to use the Number and SIM Card Administrator. These applications are used to set up a block of numbers and SIM cards that can be consumed by account telephony services in BRM. The Number Administrator was straight forward and easy to use. There are a couple things to note, however, when using the Number and SIM Card Administrator.

1) Load SIM Card types before running the SIM Card Administrator. From the PIN_HOME/sys/msgs/simcardtypes directory load the SIM card types by using the load_localized_string utility from the command line:

load_localized_strings sim_card_types.en_US

2) Use known good test SIM cards numbers.  To create a block of SIM cards you first have to order them in the SIM Card Administrator. After they are ordered you will need to fulfill the order. To make this easier, refer to the end of documentation for configuring the SIM Card Administrator. It contains a set of test SIM card numbers you can use to test with. If you don’t use these numbers, you’ll have to figure out valid fulfillment data used to activate the order.

Normally you would export a file and send this file to a supplier of SIM cards. The SIM card manufacturer would return an order fulfillment so you can activate the numbers for BRM to consume.  For testing purposes you will export the order and modify the order with test data provided in the documentation. As described in the documentation, it involves appending some order fulfillment code to the end of the exported order and then loading them back into the SIM Card Administrator.

3) Set the status to “Not Specified” when searching for SIM cards in the Customer Administrator.  When you search for SIM cards in the Customer Center, it searches through available devices (/device/sim) for SIM cards with a status of released. You can either configure the SIM Card Administrator to include “New” status, or change the status to “Not Specified”.

4) Coordinate test phone numbers with zone mapping values and CDR test data. If you plan to leverage pre-configured zone mappings and sample CDRs then you might consider creating a block of phone numbers to include these numbers. If you don’t you’ll have to edit the sample CDRs to include the ones you did use and determine how the numbers are rated and mapped in the zone map.  For reference, I included some phone numbers used in the sample CDRs. These CDRs I found in the IFW_HOME/data/in directory in a file called test_cdr.orig. The second and third field in the files are the source and destination numbers of the CDR. Again, both source and destination numbers need to be used by accounts in BRM for them to rate. No out of network phone calls will work.

TEL;00491732410;004941067600;20011114184300;300;0;0;NORM;123456;
TEL;00491732411;004941067600;20011114184300;270;0;0;NORM;123456;
TEL;00491732412;004941067600;20011114184300;110;0;0;NORM;123456;
DAT;00491732413;004941067600;20011114184300;50;0;0;NORM;123456;
FAX;00491732414;004941067600;20011114184300;12;0;0;NORM;123456;
TEL;00491732415;004941067600;20011114184300;1;0;0;NORM;123456;
SMS;00491732416;004941067600;20011114184300;63;0;0;NORM;123456;
TEL;00491732417;004941067600;20011114184300;37;0;0;NORM;123456;
TEL;00491732418;004941067600;20011114184300;132;0;0;NORM;123456;
TEL;00491732419;004941067600;20011114184300;60;0;0;NORM;123456;
TEL;00491732420;004941067600##;20040601184300;300;0;0;NORM;123456;
GPRT;00491732410;0049;20011114184510;300;78965;5054;;001121;hamburg.portal.com
GPR;00491732410;0049;20011114184510;300;78965;5054;;001121;hamburg.portal.com

And these where pulled out of the wireless.readme file:

TEL;00491729183333;004941067600;20011114184510;300;0;0;;;
TEL;00491729183333;004941067600;20011114184510;300;0;0;Mail;47113;
TEL;00491729183333;004941067600;20011114184510;300;0;0;Conf;98765; TEL;00491729183333;004941067600;20011114184510;300;0;0;MOC;238476;

Once you have a block of numbers and SIM cards configured, you can create accounts. Using Customer Center, create accounts to include phone numbers you plan to use for testing.

Process CDR File

Start up pipeline using the following command in $IFW_HOME.

ifw -r /conf/wireless.reg

Create CDR file and place into /conf/data/in

Testing and Troubleshooting Pipeline Rating

The error messages provided by the Pipeline Rating engine makes is somewhat easy locate problems. The most helpful messages are located in the $IFW_HOME/log/stream directory.  You will find two sets of logs for each input file, Stream_test_XXXX.edr.log and log_test_XXXX.edr.log. If you have CDRs in the data/in directory that don’t make it to the data/out/gsm/* check here for errors. The most common errors I found where problems with the ITEM_TAG value (being null) and problems with out of network phone numbers.  If you’re having trouble with ITEM_TAG numbers, review the section on Item Tag Mapping. If you have error message for out of network phone numbers, remember that both source and destination phone numbers need to be consumed by accounts  (in network) in order for them to be rated.

Posted in SSG | Tagged , , , , , , , , | 5 Comments

Oracle Enterprise Manager 11g to be released

During the week when I will be in Las Vegas at the OAUG Collaborate 2010 conference, Oracle will be announcing the latest version of Oracle Enterprise Manager, version 11g.

Interestingly, the announcement will be made at the Guggenheim Museum in New York on April 22nd!

Here’s a link to the event if you wish to register:

http://www.oracle.com/webapps/events/EventsDetail.jsp?p_eventId=110025&src=6773871&src=6773871&Act=33&evite=33

Posted in SSG | Tagged , | Leave a comment

Like the sound of Oracle Solaris?

A decades of thinking of Solaris in terms of Sun Microsystems, it is now official, Solaris is no longer “Sun Solaris”.

Just remember that when searching for release information at Oracle Support that “Sun Solaris x86 (32-bit)” is now “Oracle Solaris on x86 (32-bit)”.

Posted in SSG | Tagged , | Leave a comment

Just a Reminder: Firefox 3.6 is not Officially Supported by Oracle Support

Here’s the official notice about this:

Firefox 3.6 Not Officially Supported by My Oracle Support

Although much of the functionality of My Oracle Support is accessible via Firefox 3.6, please be aware that Firefox 3.6 is not officially supported by My Oracle Support at this time.

Please review the My Oracle Support FAQ (Knowledge Document #747252.5) for details on the current browser requirements for accessing My Oracle Support.

We are aware of a current issue when viewing Knowledge documents using Firefox 3.6. Using Firefox 3.6, when clicking on a link for a Knowledge document the document appears blank. The workaround is to instead open the documents in a new tab or new window.

We are working on a fix for this issue and hope to have this resolved in the near future. We apologize for any inconvenience.

Posted in SSG | Tagged , | Leave a comment

Common BRM Pipeline Installation Issues

There are a lot of moving parts associated with the BRM Pipeline. Installing it can be very difficult. This blog should remove some of the obstacles you face in installing and configuring BRM pipeline.

Before we get into the installation there are a few important points to consider about Pricing Center (PC). First, the pipeline has it’s own schema where it locates and stores pipeline pricing information.  PC makes a direct connection to this schema; bypassing CM and DM_ORACLE. The PC gets the pipeline connection properties from an extension of /config object or /config/pricing_admin. This database object, PRICING_ADMIN_CONFIG_INFO_T, is created and populated using a BRM (PIN) setup script located in the $PIN_HOME/setup/scripts directory. The pipeline connection password is encrypted using AES encryption. DM_ORACLE needs to be configured properly to encrypt and decrypt this password. This blog will take you through this and other key installation steps needed to run the pipeline in BRM.

The basic steps are quite simple. However each step has several environmental traps you can fall into if you are not careful. I will list the steps and then break them down into more detail below.

1. Run the pipeline installation scripts
2. Execute the pipeline database setup scripts
3. Setup DM_ORACLE for AES encryption
4. Create the IFW Database Connection object; /config/pricing_admin.
5. Add pricing center permissions.

Run Pipeline Installation Scripts

The BRM and Pipeline code can be downloaded from the http://edelivery.oracle.com/. You will need to find and select Oracle Communication Applications and the platform you’re using. The download you need is located in  Oracle Communications Billing and Revenue Management Media Pack.

After you download the file, unzip the file into a staging directory and create a user called IFW. You may want to create a user like IFW74, if you have different versions of  the pipeline installed on your server.

Depending on the version and platform you should see a installation file called like this:

7.4_Pipeline_linux_64_opt.bin

Execute this file as the IFW user.  The installation uses X-windows so on you may need to run the following command as the root user before you’ll see the installation UI.

xhost +

Likewise, be sure you have turned on X-windows for you IFW users. This can be done by setting the following environment variable

export DISPLAY=:1.0

Specify the location of the IFW installation directory and allow the installation to complete. This installation is just unpacking files into your installation directory.  To set up the IFW user, you can execute one of these environment scripts.

source.me.csh

source.me.sh

These files are located in the IFW installation directory, $IFW_HOME.  I recommend merging the contents of this file with your login profile scripts. On linux that may be the .bash_profile file located in the IFW default user home directory.

Execute The Pipeline Database Setup Scripts

There are 4 IFW database scripts and 5 JSA database setup scripts you will need to run. These are located in the $IFW_HOME/database/Oracle/Scripts directory and they are called:

ifw_Tablespaces.sql       ifw_Create.sql               ifw_Roles.sql              ifw_Synonyms.sql

JSA_Tablespaces.sql     JSA_Create.sql            JSA_Roles.sql             JSA_Synonyms.sql            JSA_Prepare.sql

Three important tables need to be populated correctly; JSA_USER, JSA_MODULES and JSA_USERRIGHT.  Running the setup script, pricing_admin.pl script as describe below, can do this for you, but it requires SYSDBA access to do so.  A DBA can use the scripts in the Appendix to populate them with data. Be sure to edit them first with schema names you picked.

Setup DM_Oracle for AES encryption

As the pin user create an AES encryption key using the following application:

pin_crypt_app -genkey

This will create an output that looks like this:

Generation of Encrypted AES key is successful Encrypted key is --->&aes|0D5E11BFDD97D2769D9B0DBFBD1BBF7E29943F470AE3525E8BFDE27A5F7ED93AF0C343CF7CE98A5255D38D903FA8820<---

Copy the lines between the —>   and <—- and place them into the sys/oracle/pin.conf file as shown:

- crypt aes| ${PIN_HOME}/lib/${LIBRARYPREFIX}pin_crypt_aes4dm${LIBRARYEXTENSION} "&aes|0D5E11BFDD97D2769D9B0DBFBD1BBF7E925A04A595DD6EEF9FEC7453C1C83C7C0BD82702ABFE9CB01C7D39F9D56"

Do not copy the key I used here. Substitute the key for the one you created with the pin_crypt_app. Bounce the CBRM using stop_all and start_all and make sure the DM_Oracle comes up again.

Create the IFW Database Connection object; /config/pricing_admin

Locate the pin.conf file in the $PIN_HOME/setup/scripts directory

Edit the following entries to contain the proper IFW connection information

- pipeline login_name IFW74
- pipeline login_pw IFW74
- pipeline port 1521
- pipeline db_type oracle
- pipeline db pindb
- pipeline admin system
- pipeline admin_pw manager
- pipeline db_alias pindb

Run the pricing admin_perl script using the following command line:

perl pricing_admin.pl -init

This will use the values in the pin.conf file and create and populate the PRICING_ADMIN_CONFIG_INFO_T table in the PIN DB schema.  Allow this perl script to set the AES encryption directly. If you try to do this with direct sql updates, this will cause problems with DM_ORACLE when it tries to read the object.  Allow DM_ORACLE to encrypt the password. DM_ORACLE will decrypt the password before it passes it to client application through the CM.

This perl script will also create the JSA USER and roles in the JSA tables and schema. In order for it to do this you must give it a sysdba admin user and password. The perl script creates the user, creates synonyms and grants the user permissions to create tables, views, indexes, etc.  This may not be acceptable in some organizations. The appendix contains scripts that can be used by a DBA to do this according to corporates policies and procedures.

Add Pricing Center Permissions

Using Customer Center or Permission Center add the following read/write permissions to the root.0.0.0.1 user:

/pricingcenter/databaseaccess
/pricingcenter/filesystemaccess
/appcenter/pricingcenter
/loadpricelist/access
/appcenter/provisioningtags
/appcenter/pcenter

Test the configuration by bringing up the Pricing Center. Verify that you have access to the pipeline configuration tools in the pricing center.

Troubleshooting Pricing Center

If  you may get the error message “Unable to connect to the pipeline database.  Please contact your administrator”. when starting up Pricing Center,  check to be sure you can connect to the Pipeline database using the connection properties specified in the config/pricing_admin object.

You may also get this error message if you can log into the pipeline database, but the user cannot access the JSA_USER, JSA_MODULE, or JSA_USERRIGHT tables.

Appendix A. SQL Scripts for JSA_USER

Insert into JSA_USER (USER_ID,LEADER_ID,ACTIVE,LOGIN,USR_FIRSTNAME,USR_LASTNAME,USR_AUTHID,ENTRYDATE,ENTRYBY, MODIFDATE,MODIFBY,MODIFIED,RECVER) values (0,null,1,'JSA','Default','JSA ADMIN',null,to_timestamp('16-MAR-10','DD-MON-RR HH.MI.SSXFF AM'),0,null,null,1,0);
Insert into JSA_USER (USER_ID,LEADER_ID,ACTIVE,LOGIN,USR_FIRSTNAME,USR_LASTNAME,USR_AUTHID,ENTRYDATE,ENTRYBY, MODIFDATE,MODIFBY,MODIFIED,RECVER) values (100,null,1,'IFW74','Default','IntegRate DB Admin',null,to_timestamp('16-MAR-10','DD-MON-RR HH.MI.SSXFF AM'),0,null,null,1,0);

Appendix B. SQL Scripts for JSA_USERRIGHT


Insert into JSA_USERRIGHT (USER_ID,MODULE_ID,CANINSERT,CANUPDATE,CANDELETE,CANREAD,CANPRINT,ENTRYDATE,ENTRYBY, MODIFDATE,MODIFBY,MODIFIED,RECVER) values (100,102,1,1,1,1,1,to_timestamp('25-AUG-09','DD-MON-RR HH.MI.SSXFF AM'),100,to_timestamp('25-AUG-09','DD-MON-RR HH.MI.SSXFF AM'),100,1,0);
Insert into JSA_USERRIGHT (USER_ID,MODULE_ID,CANINSERT,CANUPDATE,CANDELETE,CANREAD,CANPRINT,ENTRYDATE,ENTRYBY, MODIFDATE,MODIFBY,MODIFIED,RECVER) values (100,104,1,1,1,1,1,to_timestamp('25-AUG-09','DD-MON-RR HH.MI.SSXFF AM'),100,to_timestamp('25-AUG-09','DD-MON-RR HH.MI.SSXFF AM'),100,1,0);
Insert into JSA_USERRIGHT (USER_ID,MODULE_ID,CANINSERT,CANUPDATE,CANDELETE,CANREAD,CANPRINT,ENTRYDATE,ENTRYBY, MODIFDATE,MODIFBY,MODIFIED,RECVER) values (100,105,1,1,1,1,1,to_timestamp('25-AUG-09','DD-MON-RR HH.MI.SSXFF AM'),100,to_timestamp('25-AUG-09','DD-MON-RR HH.MI.SSXFF AM'),100,1,0);
Insert into JSA_USERRIGHT (USER_ID,MODULE_ID,CANINSERT,CANUPDATE,CANDELETE,CANREAD,CANPRINT,ENTRYDATE,ENTRYBY, MODIFDATE,MODIFBY,MODIFIED,RECVER) values (100,106,1,1,1,1,1,to_timestamp('25-AUG-09','DD-MON-RR HH.MI.SSXFF AM'),100,to_timestamp('25-AUG-09','DD-MON-RR HH.MI.SSXFF AM'),100,1,0);
Insert into JSA_USERRIGHT (USER_ID,MODULE_ID,CANINSERT,CANUPDATE,CANDELETE,CANREAD,CANPRINT,ENTRYDATE,ENTRYBY, MODIFDATE,MODIFBY,MODIFIED,RECVER) values (100,107,1,1,1,1,1,to_timestamp('25-AUG-09','DD-MON-RR HH.MI.SSXFF AM'),100,to_timestamp('25-AUG-09','DD-MON-RR HH.MI.SSXFF AM'),100,1,0);
Insert into JSA_USERRIGHT (USER_ID,MODULE_ID,CANINSERT,CANUPDATE,CANDELETE,CANREAD,CANPRINT,ENTRYDATE,ENTRYBY, MODIFDATE,MODIFBY,MODIFIED,RECVER) values (100,108,1,1,1,1,1,to_timestamp('25-AUG-09','DD-MON-RR HH.MI.SSXFF AM'),100,to_timestamp('25-AUG-09','DD-MON-RR HH.MI.SSXFF AM'),100,1,0);
Insert into JSA_USERRIGHT (USER_ID,MODULE_ID,CANINSERT,CANUPDATE,CANDELETE,CANREAD,CANPRINT,ENTRYDATE,ENTRYBY, MODIFDATE,MODIFBY,MODIFIED,RECVER) values (100,109,1,1,1,1,1,to_timestamp('25-AUG-09','DD-MON-RR HH.MI.SSXFF AM'),100,to_timestamp('25-AUG-09','DD-MON-RR HH.MI.SSXFF AM'),100,1,0);
Insert into JSA_USERRIGHT (USER_ID,MODULE_ID,CANINSERT,CANUPDATE,CANDELETE,CANREAD,CANPRINT,ENTRYDATE,ENTRYBY, MODIFDATE,MODIFBY,MODIFIED,RECVER) values (100,110,1,1,1,1,1,to_timestamp('25-AUG-09','DD-MON-RR HH.MI.SSXFF AM'),100,to_timestamp('25-AUG-09','DD-MON-RR HH.MI.SSXFF AM'),100,1,0);
Insert into JSA_USERRIGHT (USER_ID,MODULE_ID,CANINSERT,CANUPDATE,CANDELETE,CANREAD,CANPRINT,ENTRYDATE,ENTRYBY, MODIFDATE,MODIFBY,MODIFIED,RECVER) values (100,111,1,1,1,1,1,to_timestamp('25-AUG-09','DD-MON-RR HH.MI.SSXFF AM'),100,to_timestamp('25-AUG-09','DD-MON-RR HH.MI.SSXFF AM'),100,1,0);
Insert into JSA_USERRIGHT (USER_ID,MODULE_ID,CANINSERT,CANUPDATE,CANDELETE,CANREAD,CANPRINT,ENTRYDATE,ENTRYBY, MODIFDATE,MODIFBY,MODIFIED,RECVER) values (100,112,1,1,1,1,1,to_timestamp('25-AUG-09','DD-MON-RR HH.MI.SSXFF AM'),100,to_timestamp('25-AUG-09','DD-MON-RR HH.MI.SSXFF AM'),100,1,0);
Insert into JSA_USERRIGHT (USER_ID,MODULE_ID,CANINSERT,CANUPDATE,CANDELETE,CANREAD,CANPRINT,ENTRYDATE,ENTRYBY, MODIFDATE,MODIFBY,MODIFIED,RECVER) values (100,113,1,1,1,1,1,to_timestamp('25-AUG-09','DD-MON-RR HH.MI.SSXFF AM'),100,to_timestamp('25-AUG-09','DD-MON-RR HH.MI.SSXFF AM'),100,1,0);

Appendix C. SQL Scripts for JSA_MODULES


Insert into JSA_MODULE (MODULE_ID,MODULENAME,NAME,DESCRIPTION,ENTRYDATE,ENTRYBY,MODIFDATE,MODIFBY,MODIFIED, RECVER) values (100,'accessmanagement','accessmanagement','accessmanagement',to_timestamp('25-AUG-09','DD-MON-RR HH.MI.SSXFF AM'),100,to_timestamp('25-AUG-09','DD-MON-RR HH.MI.SSXFF AM'),null,1,0);
Insert into JSA_MODULE (MODULE_ID,MODULENAME,NAME,DESCRIPTION,ENTRYDATE,ENTRYBY,MODIFDATE,MODIFBY,MODIFIED,RECVER) values (101,'toolbarconfiguration','toolbarconfiguration','toolbarconfiguration',to_timestamp('25-AUG-09','DD-MON-RR HH.MI.SSXFF AM'),100,to_timestamp('25-AUG-09','DD-MON-RR HH.MI.SSXFF AM'),null,1,0);
Insert into JSA_MODULE (MODULE_ID,MODULENAME,NAME,DESCRIPTION,ENTRYDATE,ENTRYBY,MODIFDATE,MODIFBY,MODIFIED,RECVER) values (102,'databasebrowser','databasebrowser','databasebrowser',to_timestamp('25-AUG-09','DD-MON-RR HH.MI.SSXFF AM'),100,to_timestamp('25-AUG-09','DD-MON-RR HH.MI.SSXFF AM'),null,1,0);
Insert into JSA_MODULE (MODULE_ID,MODULENAME,NAME,DESCRIPTION,ENTRYDATE,ENTRYBY,MODIFDATE,MODIFBY,MODIFIED,RECVER) values (103,'bulletinboard','bulletinboard','bulletinboard',to_timestamp('25-AUG-09','DD-MON-RR HH.MI.SSXFF AM'),100,to_timestamp('25-AUG-09','DD-MON-RR HH.MI.SSXFF AM'),null,1,0);
Insert into JSA_MODULE (MODULE_ID,MODULENAME,NAME,DESCRIPTION,ENTRYDATE,ENTRYBY,MODIFDATE,MODIFBY,MODIFIED,RECVER) values (104,'IntSmacc.Product','IntSmacc.Product','IntSmacc.Product',to_timestamp('25-AUG-09','DD-MON-RR HH.MI.SSXFF AM'),100,to_timestamp('25-AUG-09','DD-MON-RR HH.MI.SSXFF AM'),null,1,0);
Insert into JSA_MODULE (MODULE_ID,MODULENAME,NAME,DESCRIPTION,ENTRYDATE,ENTRYBY,MODIFDATE,MODIFBY,MODIFIED,RECVER) values (105,'IntSmacc.Mapping','IntSmacc.Mapping','IntSmacc.Mapping',to_timestamp('25-AUG-09','DD-MON-RR HH.MI.SSXFF AM'),100,to_timestamp('25-AUG-09','DD-MON-RR HH.MI.SSXFF AM'),null,1,0);
Insert into JSA_MODULE (MODULE_ID,MODULENAME,NAME,DESCRIPTION,ENTRYDATE,ENTRYBY,MODIFDATE,MODIFBY,MODIFIED,RECVER) values (106,'IntSmacc.Zone','IntSmacc.Zone','IntSmacc.Zone',to_timestamp('25-AUG-09','DD-MON-RR HH.MI.SSXFF AM'),100,to_timestamp('25-AUG-09','DD-MON-RR HH.MI.SSXFF AM'),null,1,0);
Insert into JSA_MODULE (MODULE_ID,MODULENAME,NAME,DESCRIPTION,ENTRYDATE,ENTRYBY,MODIFDATE,MODIFBY,MODIFIED,RECVER) values (107,'IntSmacc.Rating','IntSmacc.Rating','IntSmacc.Rating',to_timestamp('25-AUG-09','DD-MON-RR HH.MI.SSXFF AM'),100,to_timestamp('25-AUG-00','DD-MON-RR HH.MI.SSXFF AM'),null,1,0);
Insert into JSA_MODULE (MODULE_ID,MODULENAME,NAME,DESCRIPTION,ENTRYDATE,ENTRYBY,MODIFDATE,MODIFBY,MODIFIED,RECVER) values (108,'IntSmacc.Time','IntSmacc.Time','IntSmacc.Time',to_timestamp('25-AUG-09','DD-MON-RR HH.MI.SSXFF AM'),100,to_timestamp('25-AUG-09','DD-MON-RR HH.MI.SSXFF AM'),null,1,0);
Insert into JSA_MODULE (MODULE_ID,MODULENAME,NAME,DESCRIPTION,ENTRYDATE,ENTRYBY,MODIFDATE,MODIFBY,MODIFIED,RECVER) values (109,'IntSmacc.Interconnection','IntSmacc.Interconnection','IntSmacc.Interconnection',to_timestamp('25-AUG-09','DD-MON-RR HH.MI.SSXFF AM'),100,to_timestamp('25-AUG-09','DD-MON-RR HH.MI.SSXFF AM'),null,1,0);
Insert into JSA_MODULE (MODULE_ID,MODULENAME,NAME,DESCRIPTION,ENTRYDATE,ENTRYBY,MODIFDATE,MODIFBY,MODIFIED,RECVER) values (110,'IntSmacc.Discount','IntSmacc.Discount','IntSmacc.Discount',to_timestamp('25-AUG-09','DD-MON-RR HH.MI.SSXFF AM'),100,to_timestamp('25-AUG-09','DD-MON-RR HH.MI.SSXFF AM'),null,1,0);
Insert into JSA_MODULE (MODULE_ID,MODULENAME,NAME,DESCRIPTION,ENTRYDATE,ENTRYBY,MODIFDATE,MODIFBY,MODIFIED,RECVER) values (111,'IntSmacc.Aggregate','IntSmacc.Aggregate','IntSmacc.Aggregate',to_timestamp('25-AUG-09','DD-MON-RR HH.MI.SSXFF AM'),100,to_timestamp('25-AUG-09','DD-MON-RR HH.MI.SSXFF AM'),null,1,0);
Insert into JSA_MODULE (MODULE_ID,MODULENAME,NAME,DESCRIPTION,ENTRYDATE,ENTRYBY,MODIFDATE,MODIFBY,MODIFIED,RECVER) values (112,'IntSmacc.UniversalMapping','IntSmacc.UniversalMapping','IntSmacc.UniversalMapping',to_timestamp('25-AUG-09','DD-MON-RR HH.MI.SSXFF AM'),100,to_timestamp('25-AUG-09','DD-MON-RR HH.MI.SSXFF AM'),null,1,0);
Insert into JSA_MODULE (MODULE_ID,MODULENAME,NAME,DESCRIPTION,ENTRYDATE,ENTRYBY,MODIFDATE,MODIFBY,MODIFIED,RECVER) values (113,'IntSmacc.MISC','IntSmacc.MISC','IntSmacc.MISC',to_timestamp('25-AUG-09','DD-MON-RR HH.MI.SSXFF AM'),100,to_timestamp('25-AUG-09','DD-MON-RR HH.MI.SSXFF AM'),null,1,0);
Posted in Oracle BRM, SSG | Tagged , , , , , , , , | 8 Comments

Searches Continued: Step Searches (PCM_OP_STEP_SEARCH, PCM_OP_STEP_NEXT, and PCM_OP_STEP_END)

Continuing our discussion on BRM searches, lets talk about step searches.

In many cases the number of results to be returned will overwhelm the regular PCM_OP_SEARCH op-code.  This can basically cause your PCM context to become unusable and can cause some problems in your DM.  Therefore, efforts should be made to search using PCM_OP_STEP_SEARCH when the result set may become very large.

PCM_OP_STEP_SEARCH Input FLIST

The input FLIST is the same as the input for PCM_OP_SEARCH op-code, but is done in 3 discrete steps:

1.  Call PCM_OP_STEP_SEARCH to start the step search.  Returns the first result set based on the number specified in the PIN_FLD_RESULTS array element ID.  After this point, no op-codes may be called on this context other than PCM_OP_STEP_NEXT and PCM_OP_STEP_END until after the PCM_OP_STEP_END op-code is called.
2.  Call PCM_OP_STEP_NEXT repeatedly using the same input FLIST until all the desired results have been retrieved.
3.  Call PCM_OP_STEP_END to end the step search, and free the context to be able to call other op-codes.

Step Search Result FLISTs

The results FLISTs returned from PCM_OP_STEP_SEARCH and PCM_OP_STEP_NEXT are identical to that of PCM_OP_SEARCH.  The results from PCM_OP_STEP_NEXT will be the input FLIST from PCM_OP_STEP_SEARCH, and may be safely ignored.

Example:
Note the Rec ID of 5 in the PIN_FLD_RESULTS array will determine the result set ‘chunk’ size.

nap> d 1
# number of field entries allocated 20, used 5
0 PIN_FLD_POID           POID [0] 0.0.0.1 /search -1 0
0 PIN_FLD_RESULTS       ARRAY [5] allocated 20, used 3
1     PIN_FLD_POID           POID [0] NULL poid pointer
1     PIN_FLD_CREATED_T    TSTAMP [0] (0)
1     PIN_FLD_NAMEINFO      ARRAY [*] allocated 20, used 2
2         PIN_FLD_LAST_NAME       STR [0] NULL str ptr
2         PIN_FLD_FIRST_NAME      STR [0] NULL str ptr
0 PIN_FLD_ARGS          ARRAY [1] allocated 20, used 1
1     PIN_FLD_NAMEINFO      ARRAY [*] allocated 20, used 1
2         PIN_FLD_FIRST_NAME      STR [0] "%a%"
0 PIN_FLD_TEMPLATE        STR [0] "select X from /account where F1 like V1 "
0 PIN_FLD_FLAGS           INT [0] 0
nap> xop PCM_OP_STEP_SEARCH 0 1
xop: opcode 17, flags 0
# number of field entries allocated 6, used 6
0 PIN_FLD_POID           POID [0] 0.0.0.1 /search -1 0
0 PIN_FLD_RESULTS       ARRAY [0] allocated 3, used 3
1     PIN_FLD_POID           POID [0] 0.0.0.1 /account 35862893 19
1     PIN_FLD_CREATED_T    TSTAMP [0] (1268321292) 03/11/10 09:28:12
1     PIN_FLD_NAMEINFO      ARRAY [1] allocated 2, used 2
2         PIN_FLD_LAST_NAME       STR [0] "Fuhes-Monari"
2         PIN_FLD_FIRST_NAME      STR [0] "Debrah"
0 PIN_FLD_RESULTS       ARRAY [1] allocated 3, used 3
1     PIN_FLD_POID           POID [0] 0.0.0.1 /account 33265410 2065
1     PIN_FLD_CREATED_T    TSTAMP [0] (1238622641) 04/01/09 16:50:41
1     PIN_FLD_NAMEINFO      ARRAY [1] allocated 2, used 2
2         PIN_FLD_LAST_NAME       STR [0] "Ogrlo"
2         PIN_FLD_FIRST_NAME      STR [0] "Micael"
0 PIN_FLD_RESULTS       ARRAY [2] allocated 3, used 3
1     PIN_FLD_POID           POID [0] 0.0.0.1 /account 35856912 42
1     PIN_FLD_CREATED_T    TSTAMP [0] (1267800937) 03/05/10 08:55:37
1     PIN_FLD_NAMEINFO      ARRAY [1] allocated 2, used 2
2         PIN_FLD_LAST_NAME       STR [0] "Christen"
2         PIN_FLD_FIRST_NAME      STR [0] "Beaud"
0 PIN_FLD_RESULTS       ARRAY [3] allocated 3, used 3
1     PIN_FLD_POID           POID [0] 0.0.0.1 /account 28715619 15211
1     PIN_FLD_CREATED_T    TSTAMP [0] (1187360056) 08/17/07 09:14:16
1     PIN_FLD_NAMEINFO      ARRAY [1] allocated 2, used 2
2         PIN_FLD_LAST_NAME       STR [0] "Bianc"
2         PIN_FLD_FIRST_NAME      STR [0] "Gin"
0 PIN_FLD_RESULTS       ARRAY [4] allocated 3, used 3
1     PIN_FLD_POID           POID [0] 0.0.0.1 /account 34456511 191
1     PIN_FLD_CREATED_T    TSTAMP [0] (1252009050) 09/03/09 15:17:30
1     PIN_FLD_NAMEINFO      ARRAY [1] allocated 2, used 2
2         PIN_FLD_LAST_NAME       STR [0] "Gog"
2         PIN_FLD_FIRST_NAME      STR [0] "Dhub"
nap> xop PCM_OP_STEP_NEXT 0 1
xop: opcode 18, flags 0
# number of field entries allocated 6, used 6
0 PIN_FLD_POID           POID [0] 0.0.0.1 /search -1 0
0 PIN_FLD_RESULTS       ARRAY [0] allocated 3, used 3
1     PIN_FLD_POID           POID [0] 0.0.0.1 /account 25469857 53148
1     PIN_FLD_CREATED_T    TSTAMP [0] (1139417895) 02/08/06 10:58:15
1     PIN_FLD_NAMEINFO      ARRAY [1] allocated 2, used 2
2         PIN_FLD_LAST_NAME       STR [0] "Amed"
2         PIN_FLD_FIRST_NAME      STR [0] "Ronaldo"
0 PIN_FLD_RESULTS       ARRAY [1] allocated 3, used 3
1     PIN_FLD_POID           POID [0] 0.0.0.1 /account 19702828 1543
1     PIN_FLD_CREATED_T    TSTAMP [0] (1054135772) 05/28/03 10:29:32
1     PIN_FLD_NAMEINFO      ARRAY [1] allocated 2, used 2
2         PIN_FLD_LAST_NAME       STR [0] "Prestoni"
2         PIN_FLD_FIRST_NAME      STR [0] "Markus"
0 PIN_FLD_RESULTS       ARRAY [2] allocated 3, used 3
1     PIN_FLD_POID           POID [0] 0.0.0.1 /account 11102409 3401
1     PIN_FLD_CREATED_T    TSTAMP [0] (996669081) 08/01/01 07:31:21
1     PIN_FLD_NAMEINFO      ARRAY [1] allocated 2, used 2
2         PIN_FLD_LAST_NAME       STR [0] "Kulkar"
2         PIN_FLD_FIRST_NAME      STR [0] "Rahu"
0 PIN_FLD_RESULTS       ARRAY [3] allocated 3, used 3
1     PIN_FLD_POID           POID [0] 0.0.0.1 /account 35624677 146
1     PIN_FLD_CREATED_T    TSTAMP [0] (1265060079) 02/01/10 15:34:39
1     PIN_FLD_NAMEINFO      ARRAY [1] allocated 2, used 2
2         PIN_FLD_LAST_NAME       STR [0] "Johnson"
2         PIN_FLD_FIRST_NAME      STR [0] "Bryan"
0 PIN_FLD_RESULTS       ARRAY [4] allocated 3, used 3
1     PIN_FLD_POID           POID [0] 0.0.0.1 /account 29737931 520
1     PIN_FLD_CREATED_T    TSTAMP [0] (1199807442) 01/08/08 09:50:42
1     PIN_FLD_NAMEINFO      ARRAY [1] allocated 2, used 2
2         PIN_FLD_LAST_NAME       STR [0] "Degad"
2         PIN_FLD_FIRST_NAME      STR [0] "Joaq"
nap> xop PCM_OP_STEP_NEXT 0 1
xop: opcode 18, flags 0
# number of field entries allocated 6, used 6
0 PIN_FLD_POID           POID [0] 0.0.0.1 /search -1 0
0 PIN_FLD_RESULTS       ARRAY [0] allocated 3, used 3
1     PIN_FLD_POID           POID [0] 0.0.0.1 /account 30425794 264
1     PIN_FLD_CREATED_T    TSTAMP [0] (1207179142) 04/02/08 18:32:22
1     PIN_FLD_NAMEINFO      ARRAY [1] allocated 2, used 2
2         PIN_FLD_LAST_NAME       STR [0] "Lena"
2         PIN_FLD_FIRST_NAME      STR [0] "Mich"
0 PIN_FLD_RESULTS       ARRAY [1] allocated 3, used 3
1     PIN_FLD_POID           POID [0] 0.0.0.1 /account 17981207 1255
1     PIN_FLD_CREATED_T    TSTAMP [0] (1034890106) 10/17/02 16:28:26
1     PIN_FLD_NAMEINFO      ARRAY [1] allocated 2, used 2
2         PIN_FLD_LAST_NAME       STR [0] "Payable"
2         PIN_FLD_FIRST_NAME      STR [0] "National Accounts"
0 PIN_FLD_RESULTS       ARRAY [2] allocated 3, used 3
1     PIN_FLD_POID           POID [0] 0.0.0.1 /account 33730335 4148
1     PIN_FLD_CREATED_T    TSTAMP [0] (1244205808) 06/05/09 07:43:28
1     PIN_FLD_NAMEINFO      ARRAY [1] allocated 2, used 2
2         PIN_FLD_LAST_NAME       STR [0] "Weav"
2         PIN_FLD_FIRST_NAME      STR [0] "Garr"
0 PIN_FLD_RESULTS       ARRAY [3] allocated 3, used 3
1     PIN_FLD_POID           POID [0] 0.0.0.1 /account 13422861 68934
1     PIN_FLD_CREATED_T    TSTAMP [0] (1008632620) 12/17/01 17:43:40
1     PIN_FLD_NAMEINFO      ARRAY [1] allocated 2, used 2
2         PIN_FLD_LAST_NAME       STR [0] "Payable"
2         PIN_FLD_FIRST_NAME      STR [0] "In care of Arba - Accounts"
0 PIN_FLD_RESULTS       ARRAY [4] allocated 3, used 3
1     PIN_FLD_POID           POID [0] 0.0.0.1 /account 16507073 3046
1     PIN_FLD_CREATED_T    TSTAMP [0] (1025313455) 06/28/02 20:17:35
1     PIN_FLD_NAMEINFO      ARRAY [1] allocated 2, used 2
2         PIN_FLD_LAST_NAME       STR [0] "Bain"
2         PIN_FLD_FIRST_NAME      STR [0] "Satn"
nap> xop PCM_OP_STEP_END 0 1
xop: opcode 19, flags 0
# number of field entries allocated 6, used 6
0 PIN_FLD_POID           POID [0] 0.0.0.1 /search -1 0
0 PIN_FLD_RESULTS       ARRAY [5] allocated 3, used 3
1     PIN_FLD_POID           POID [0] NULL poid pointer
1     PIN_FLD_CREATED_T    TSTAMP [0] (0)
1     PIN_FLD_NAMEINFO      ARRAY [*] allocated 2, used 2
2         PIN_FLD_LAST_NAME       STR [0] NULL str ptr
2         PIN_FLD_FIRST_NAME      STR [0] NULL str ptr
0 PIN_FLD_ARGS          ARRAY [1] allocated 1, used 1
1     PIN_FLD_NAMEINFO      ARRAY [*] allocated 1, used 1
2         PIN_FLD_FIRST_NAME      STR [0] "%a%"
0 PIN_FLD_TEMPLATE        STR [0] "select X from /account where F1 like V1 "
0 PIN_FLD_FLAGS           INT [0] 0
0 PIN_FLD_OP_CORRELATION_ID    STR [0] "1:AANDERSON::7428:6596:19:1269464323:4"
Posted in SSG | Tagged , , , , , , , , , | Leave a comment