Implementation Guide

BSS Fulfillment









Authors: Peter Obert, Peter Hanušiak

Creation Date: September 16, 2010

Last Updated: February 10, 2011

Version: 1.0.5





This file is part of BSSFulfillment.

BSSFulfillment is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

BSSFulfillment is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License
along with BSSFulfillment. If not, see <http://www.gnu.org/licenses/>.





Preface

This document contains description of basic developers steps to use, configure and extend CFS framework on top of AIA 2.4/2.5

Topics discussed are:


Audience

This manual is written for Integration Team Developers


How to Use This Manual


Related Documents

Oracle Application Integration Architecture - Foundation Pack 2.4/2.5: Concepts and Technologies Guide

Oracle Application Integration Architecture - Foundation Pack 2.4/2.5: Core Infrastructure Components Guide

Oracle Application Integration Architecture - Foundation Pack 2.4/2.5: Integration Developer's Guide

Siebel CRM Integration Pack for Oracle Communications BRM: Order to Bill 2.4/2.5 - Implementation Guide

Siebel CRM Integration Pack for Oracle Communications BRM: Order to Activate 2.5.1 - Implementation Guide


Your Comments are Welcome

Authors value and appreciate your comments as an user and reader of this manual. As we write, revise, and evaluate our documentation, your comments are the most valuable input we receive. If you would like to contact us regarding comments and suggestions on future releases of BSSFulfillment framework, please use the following address:

Web: http://sourceforge.net/projects/bssfulfillment/



Contents




Preface 2

Audience 2

How to Use This Manual 2

Related Documents 2

Your Comments are Welcome 3

Chapter
1 Architectural Overview 6

CFS Architecture 6

CFS in Oracle Order to Bill AIA PIP 7

Comms To Order Capture 9

Order Capture To Activation 10

CFS metadata model 11

Chapter
2 How to add new system to CFS 13

Implementation steps 13

Process Sales Order Flow 13

Routing to Activation 14

Activation Orchestration Flow 14

ABCS Providers 15

Chapter
3 How to create and update CFS metadata for provisioning scenarios 16

Metadata configuration 16

Adding new provisioning system 16

Product metadata modification 17

Specification metadata definition and modification 18

Execution Plan metadata definition and modification 19

Sales order Feature metadata definition and modification. 22

Service metadata definition and modification 24

Change SIM to Resource Activation Scenario decomposition sample 24

Chapter
4 How to deploy CFS & Extensions 28

Assumption 29

Environment pre-installation check 29

How to enable SVN source control on the DEV type environment 29

Adding new or customized BPEL/ESB extension of the OOTB PIP to the deployment structure 30

Adding or customizing EBF project 30

Adding or customizing EBF project 31

Customizing EBS project with new routing rules 32

Adding or customizing ABCS project 34

Steps needed for every ABCS project 34

Customizing Generated BPEL Process deployment script and configuration 35

Adding new partner link to the existing BPEL process 40

Adding new wsdl/xsd 41

Endpoint customization for non-dynamic implemented partner links 42

Adding or customizing fault policy 43

Adding or customizing wsdl imports and schema locations 44

Adding or customizing DVM 44

How to run deployment scripts and targets Adding or customizing ABCS project 45

Appendix A 47

CRM Order templates for Common Business scenarios 47




Chapter
1 Architectural Overview

This Chapter describes CRM Sales Order Central Fulfillment System(CFS) –which implements BSS Fulfillment Framework. CFS is based on templates and methodology provided by Application Integration Architecture from Oracle. Sales Order Execution is implemented as a set of services and composites using Oracle SOA Suite 10g. Sales Order fulfillment life cycle, translation and provisioning are metadata driven.



CFS Architecture

CFS is a concept, which defines a solution for any Sales Order fulfillment in communications industry. BSS Fulfillment solution is a implementation of CFS. BSS Fulfillment focuses on processing sales orders in BSS stack with pre-defined interfacing to OSS or ERP. Following activities are considered as part of sales orders processing in BSS.


BSS Fulfillment in Oracle Order to Bill or Order to Activate AIA PIP

Following picture depicts a potential solution by using BSSFulfillment in Oracle Order To Bill / Order to Activate AIA PIP.

CFSLogicalView

Purple boxes Siebel, BRM (Oracle Billing and Revenue Management) and HLR are systems, which may be involved in overall solution.

BSS Fulfillment is not coupled with them and can work with any systems. On above picture is just represented a simplistic architecture where Order To Bill PIP is used (which integrates Siebel and BRM) and new Order to Bill Extension PIP (BSS Fulfillment) is acting as CFS solution. It is mostly represented by ProcessSalesOrderEBF BPEL flow plus with two new provisioning flows build based on BSS Fulfillment framework approach (Resource ABCS and HLR ABCS).

This solution bridges the gap in Order to Bill / Order to Activate (without OSM) PIP by providing essential Order decomposition solution with dynamic orchestration of downstream provisioning components like Billing provisioning (Billing ABCS coming from Order to Bill PIP), Resource provisioning and HLR provisioning (build based on BSS Fulfillment framework).

The Process Sales Order EBF is a heart of Order to Bill Extension PIP (BSS Fulfillment) and responsible for orchestrating SalesOrderEBO from Siebel or any other CRM or order capture system across all downstream systems like billing, network, ERP, payment gateway etc. The orchestration may involve for example following tasks Customer Management, Network Provisioning, Billing Management and Resource Management.

Regarding a typical extension of Order to Bill solution here is more detailed picture, which explains how easy it is to start using BSS Fulfillment with Order to Bill 2.4/2.5 or Order to Activate 2.5.1:

CFSAIALogicalView

The picture shows component CommunicationsSalesOrderEBSV2, a facade from Order To Bill/Order to Activate, which routes sales order to the template TestOrderOrchestrationEBF process or OSM. Into this facade is plugged in BSS Fulfillment, which intercepts all sales orders and fulfills them in ProcessSalesOrderEBF. This process as part of BSS Fulfillment uses metadata repository in DVM, which needs to be configured for correct Order Fulfillment processing. Such configuration will lead into dynamic generation of orchestration plan with potentialy multiple steps. On picture are shown three provisioning flows CRMActivationEBF, NetworkActivationEBF and ResourceActivationEBF. They are not part of BSS Fulfillment solution, they can be built based on BSS Fulfillment Framework (CRMActivationEBF and NetworkActivationEBF are included as exampled in BSS Fulfillment). Such provisioning flows would then directly communicate to the end systems. In above example CRMActivationEBF talks to Siebel CRM, since this looks at scenario when orders are coming from external order capture system and these orders needs to be translated into Siebel CRM. Then NetworkActivationEBF talks to various external network systems like HLR and ResourceActivationEBF talks to Network Inventory based system.




Comms To Order Capture

Following picture depicts logical component view of the BSS Fulfillment flow for the Sales Order requests from enterprise systems providing Order Capture:

MessageFlow

In case of asynchronous communication, the enterprise system represented with EnterpriseSystemReqProducer will produce JMS message ->

On BSS Fulfillment side EnterpriseSystemReqConsumer picks the message and invoke synchronous ->

ProcessSubscriberCommsReqABCS which is responsible for translation from connector message into SalesOrderEBM ->

Then CommunicationsSalesOrderEBSV2.ProcessSalesOrder routes the message to -> SalesOrderEBS.process which finally routes the message to ->

ProcessSalesOrderEBF responsible for storing sender system id in message header, retrieving state of the order execution/fulfillment of the sales order to recognize whether it is new execution of the order or resubmit of failed order. ProcessSalesOrderEBF invokes PDH decompose provider where dynamic generation of orchestration plan happens. After that provisions all the required enterprise systems based on metadata generated orchestration plan. Concrete provisioning of downstream systems is task of provisioning flows, written based on BSS Fulfillment framework. It uses message FullfilmentOrderEBM , which is tailored for each the provisioning system and

-> FullfilmentOrderEBS is responsible for routing the message to dedicated EnterprisSystemActivationEBF representing provisioning flows written in BSS Fulfillment framework. For example in the case of provisioning to CRM CRMActivationEBF invokes Enterprise services SalesOrderEBS and AssetEBS to invoke CFSSiebelProvABCSs to create, modify, submit Sales Order to initiate terminate, suspend or resume Customer Services

(output FullfilmentOrderEBM)




Order Capture To Activation

Following picture depicts logical component view of Order to Bill/ Order to Activate and BSS Fulfillment flow for the provisioning of request from Order Capture to enterprise systems:

CFSMessageFlow

CRM is producing SWI List of Order IO as the JMS message ->

Message is picked up by ProcessSalesOrderFulfillmentSiebelCommsJMSConsumer and routed to the ->

ProcessSalesOrderFulfillmentSiebelCommsReqABCSImpl, this OOTB component is responsible for the transforms message so SalesOrderEBM then invokes ->

CommunicationsSalesOrderEBSV2.ProcessSalesOrderFulfillment route the order based on Sender filtering SEBL_01 to ->

CommunicationsSalesOrderEBSV2.ProcessSalesOrder routes to ->

SalesOrderEBS.process and final routing to BSS Fulfillment heart ->

ProcessSalesOrderEBF doing decompose, orchestration and provisioning to the Enterprise systems and then again calling back OOTB Fulfillment from O2B PIP provisioning to BRM->

CommunicationsSalesOrderEBSV2.ProcessSalesOrderFulfillment routes the sales order based on message header sender system identification filtering CFS_01 ->

ProcessSalesOrderFulfillmentOSMCFSCommsJMSProducerproduces message to the AIA queue

OrderOrchestrationConsumer picks the message from the queue and routes it to the CommunicationsSalesOrderEBSV2.ProcessSalesOrder ->

SalesOrderEBS.process routes to OOTB BRM provisioning flow

TestOrderOrchestrationEBF




BSS Fulfillment metadata model

The BSS Fulfillment solution uses Configuration Repository built on top of Oracle SOA Suite 10g Domain Value Maps (DVM) where it is holding transformation rules. These rules are describing dependencies between CRM products and downstream provisioning actions. Conceptual model of these DVMs are shown on the picture below:

CFSMetaDataModel


The purpose of the metadata is to describe all possible scenarios, which can be generated from the sales order lines, based on their sales order line actions and properties received from CRM.

Elementary assumption is that each business scenario can be identified by the unique product line and its action or collection of the product lines and their actions. Which simply means that Sales Order produced from CRM must have only one possible business interpretation to one or several not colliding technical scenarios, which are able to be provisioned to the target systems.

Product Code – is the entity that contains order line product identification setup, its translation to the provisioning systems (if needed) and reference to the provisioning Specification entity.

Specification – is entity, which represents a template of possible fulfillment scenarios for the defined specification. It describes fulfillment scenarios for all potential sales order lines of the given product for this specification. In other words it groups all products, which are provisioned in the same way, into one single specification. Specification contains list of possible fulfillment actions.

Execution Plan – is entity which defines conditions for the fulfillment action realisation. These conditions are in and out conditions. In conditions are describing when the scenario for fulfillment should be applied and out conditions are representing fulfillment output behavior for Fulfillment Order assembly transformations. Execution plan contains list of possible features generated and finally represented as the parameters in Fulfillment Order.

Feature – is entity which represents one of the provisioning parameters which is needed by the provisioning system to fulfill the business scenario triggered by the sales order. Feature contains reference to the service which needs to consume the value coming from the feature value generator.

Service – is entity, which represents one of the provisioning system virtual services or service groups or business scenario scope. This entity contains reference to the enterprise System to which the System specific part of Fulfillment Order is provisioned.

System – is entity, which represents Enterprise System which can be a target for Sales Order Provisioning. System contains a reference to the name of the product column from the Product Code entity. This column is used for direct product provisioning translation.

BSS Fulfillment metadata as the structure represents Sales Order provisioning rules and parameters represented by FulfilmentOrderEBM.


Chapter
2 How to add new system to BSS Fulfillment

This Chapter provides sequence of SOA components development steps to enable provisioning to the new Enterprise system. These steps cover only technical setup of the provisioning flow. It means basic skeleton of the Orchestration and Fulfillment execution for the next provisioning/applicable system.



Implementation steps

Following procedures provides specific implementation activities to follow attaching any new Enterprise System to the Sales Order provisioning process. Generally main effort is only to implement Activation Enterprise Flow and ABCS Providers. All the BSS Fulfillment components stay unchanged or only little modified/configured. In case of changing BSS Fulfillment it is essential to contact authors of the system, in order to gather these requirements and possibly introduce these changes into core product.


Process Sales Order Flow

ProcessSalesOrderEBF is responsible for calling the sales Order Decomposition Provider, calling all the activations flows and OOTB Order To Bill or Order to Activate PIP execution. This process should not be modified. ProcessSalesOrderEBF automatically invokes all the provisioning flows coming from Decomposition process and then calls OOTB O2B PIP provisioning to BRM.



Possible customisations compare to existing OrderToActivation branches:

By default is recommended to do this customisation in System Activation EBF if it is possible.


Routing to Activation

When new system and new „System“ActivationEBF is created, also a new routing rule to the FulfillmentOrderEBS must be added and „System“ActivationEBF as the target for the routing rule:



/telcofulebo:FulfillmentOrderEBM/telcofulebo:DataArea/telcofulebo:FulfillmentOrders/telcofulebo:FulfillmentOrder/telcofulebo:FulfillmentOrderActions/telcofulebo:FulfillmentAction[1]/telcofulebo:FulfillmentSystem = 'NEWSYSTEM_01'


Activation Orchestration Flow

Activation Orchestration for the enterprise system is implemented by „System“ActivationEBF. This process is responsible for recognizing System specific business scenarios and calling all the necessary Enterprise Providers ABCSs responsible for the business scenario realization in target enterprise system.

System“ActivationEBF input and output message is FulfillmentOrderEBM). After the successful/unsuccessful provisioning it should set provisioning result and Response parameters if any.

System“ActivationEBF is responsible for translation from FulfillmentOrderEBM to „System“Provisioning Form and detecting scenario and calling dedicated providers.

Copy the template process artifacts from PIPS\Industry\Communications\Setup\OrderToBillExtension\EBF\EnterpriseSystemActivationEBF

to

PIPS\Industry\Communications\Setup\OrderToBillExtension\EBF\YoursystemActivationEBF

Replace in every content System → Yoursystem

Replace artifact names from System* to Yoursystem

<?xml version="1.0" encoding="UTF-8"?>
<AIAServiceConfiguration xmlns="http://xmlns.oracle.com/aia/core/config/V1" version="1.0">
<ServiceConfiguration serviceName="{http://xmlns.oracle.com/EnterpriseFlows/Industry/Comms/NetworkActivationEBF/V1}YoursystemActivationEBF">
<Property name="Default.SystemID">ENTERPRISESYSTEM_01</Property>
</ServiceConfiguration>
</AIAServiceConfiguration>


ABCS Providers

TODO reference to the ABCS generator


Chapter
3 How to create and update BSS Fulfillment metadata for provisioning scenarios

This Chapter provides sequence of development steps to create metadata description for the Sales Order provisioning to the FullfilmetOrderEBM to enable provision and orchestrate business scenarios to each the Enterprise system. These steps cover only technical setup of the template provisioning decomposition metadata modeling It means basic skeleton rules for business scenario meta-model data creation.




Metadata configuration

Adding new provisioning system

All the provisioning system entities are stored in OF95SYSTEM.xml DVM file.

System represents any system, which is in global product structure. It might be commercial, technical, billing or resource related. It is mandatory to have one MASTER system, one SPEC system and at least one system, which is considered as entry system for sales orders. Entity attributes are:

SystemName - Description of the system.

This name is informative only for humans.

SystemId - Primary key.

Id holding value for internal mandatory systems like MASTER or SPEC, or any AIA defined system, which is involved in Sales Order fulfillment

ProductCodeColumn – out.

Column Id is for ProductCodeClass defining which column is defining product code for the system.

<row>
<cell>New System</cell>
<cell>NEWSYS_01</cell>
<cell>NewSystemId</cell>
</row>

Adding new enterprise system is connected with update of the structure of the Product Metadata model.

Product metadata modification

All the product entities generating provisioning information are stored in OF95PRODUCT95CODE.xml DVM file.

Product Code represents an assignment of a product defined in upstream and downstream systems.

DVM columns are designated for:

ProductName – is description textual description of product. Only for humans. ProductId – is primary key dynamic column with definition from SystemClass.

It is mandatory to have column of MASTER system. It is used for internal unique ids.

SpecificationId – out is dynamic column with definition from SystemClass.

It is mandatory to have column of SPEC system. It is used for assigning product to its own specification. Referenced Specification represents a template of possible fulfillment scenarios which all the products lines containing product mapped to this specification can cause. Other words all the products referring to one specification are provisioned in the same way.

SiebelId - is dynamic column with definition from SystemClass. It is only example.

Might be id from any systems used in order decomposition. Value is used for look up based on value from Sales Order line.

SiebelTest1Id - is dynamic column with definition from SystemClass. It is only example.

Might be id from any systems used in order decomposition. Value is used for look up based on value from Sales Order line.

SurepayId - is dynamic column with definition from SystemClass. It is only example.

Might be id from any systems used in order decomposition. Value is used for look up based on value from Sales Order line.

ViperId - is dynamic column with definition from SystemClass. It is only example.

Might be id from any systems used in order decomposition. Value is used for look up based on value from Sales Order line.

<columns>
<column name="ProductName"/>
<column name="ProductId"/>
<column name="SpecificationId"/>
<column name="SiebelId"/>
<column name="SiebelTest1Id"/>
<column name="SurepayId"/>
<column name="ViperId"/>
</columns>
<rows>

<row>
<cell>SIM Card</cell>
<cell>8</cell>
<cell>ResourceSpec</cell>
<cell>Q-46C</cell>
<cell>SIM Card</cell>
<cell>INVALID</cell>
<cell>SIM</cell>
</row>

Note: Adding another enterprise system means to add new column to the DVM. It is possible to do it e.g. in ESB console and then export the DVM structure.

Specification metadata definition and modification

All the specification entities generating provisioning information are stored in OF95PRODUCT95CODE.xml DVM file.

Specification – is entity, which represents a template of possible fulfillment scenarios for the defined specification. It describes fulfillment scenarios for all potential sales order lines of the given product for this specification. In other words it groups all products, which are provisioned in the same way, into one single specification. Specification contains list of possible fulfillment actions.

Specification is an assignment of a product defined in upstream system and technical services defined in downstream system. The Specification is main driver for recognizing if upstream product is taken into account during order fulfillment process. It holds links to all different order actions in sales order, through which is connected to the correct fulfillment actions.

SpecificationName - is textual description of product. Only for humans.

SpecificationId – is primary key unique id for specification definition

ApplicableSystemin - is regular expression filters.

Filter expression tells for which input system specification is valid.

IsProvisionableout – is switch for the order line processing

Y - means that specification has to be processed

N - all products with this specification will be ignored

IsComponentout - is telling about the type of the product.

Express if the specification is done for the component type of the product or carrier type product which carries some features of the component type product.

Y - means that specification is defined as component and all features will have this mode

N - means that specification is defined as carrier and all features will have this mode

FulfillmentActions - out

Comma separated list with all fulfillment action ids from ExecutionPlanClass. Each fulfillment action from the list will be evaluated.

Following example shows specification for the SIM product type. E.g. SIM card specification defines possible scenarios when to provision order line:

SIM Card change scenario

SIM Card purchase scenario (e.g. during new subscription create)

SIM Card disconnect scenario

Finish Change SIM action scenario (helper scenario that delimits the generated fulfillment output from the unwanted low priority scenarios)

<columns>
<column name="SpecificationName"/>
<column name="SpecificationId"/>
<column name="ApplicableSystem"/>
<column name="IsProvisionable"/>
<column name="IsComponent"/>
<column name="FulfillmentActions"/>
</columns>
<rows>

<row>
<cell>SIM Card Spec</cell>
<cell>ResourceSpec</cell>
<cell>SUREPAY_01|VIPER_01|SEBL_01</cell>
<cell>Y</cell>
<cell>N</cell>
<cell>SimCard_change_action,SimCard_purchase_action,FinishChangeSIM_action,SimCard_disconnect_action</cell>
</row>

Execution Plan metadata definition and modification

All the decomposition execution plan entities generating provisioning information are stored in OF95EXECUTION95PLAN.xml DVM file.

Execution Plan – is entity which defines conditions for the fulfillment action realization. These conditions are in and out conditions. In conditions are describing when the scenario for fulfillment should be applied and out conditions are representing fulfillment output behavior for Fulfillment Order assembly transformations. Execution plan contains list of possible features generated and finally represented as the parameters in Fulfillment Order.

FulfillmentActionId - primary key

Unique identifier for definition of fulfillment action, which is a building block of whole execution plan

OrderItemActionName - in

Regular expression to match order item action from incoming sales order

ActionName - out

Action name for activation platform is Output for the Fulfillment Order Action element.

DecompositionPriority - out

Priority attribute for the fulfillment action. Which action has the highest priority after decomposition will win and determine execution plan.

Priorities are sorted and based on their sequence is created whole execution plan as a chain of fulfillment actions

ExecutionPriority - out

Indicate priority for execution engine for the fulfillment action. Fulfillment actions are sorted in Decomposed Fulfillment Order by the priority

IsSingle - out

Y – Means that in final output fulfillment action must be alone. If there are more fulfillment actions either decomposition rules are incorrect or sales order was invalid

N – Means that fulfillment action can be part of sequence of several fulfillment actions.

Layer - out

Layer is regular expressions, which determines from which layers will be taken features from generated output from all fulfillment actions. It means that each the action finally produces set of fulfillment parameters and services to the virtual layer for the purpose of collecting of all necessary information from different order lines. Layer name can be string as well (see layers in distribution) Layer:

GENERIC - item based scenarios

0 - simple add/remove component scenarios

6 - SIM change

7 - New Subscriber

DISCONNECT – disconnect scenario features and services

IsIncrementable - out

Y - Means that fulfillment action can have dynamic Decomposition Priority. Meaning that based GroupId all priorities from DecompositionPriority will be grouped and accumulated. Total sum will determine final priority

N - priority is fixed by DecompositionPriority

GroupId - out

Is applicable only when IsIncrementable = Y. It defines group for fulfillment actions contributing to their common decomposition priority.

PossibleFeatures - out

Comma separated list of features, which will be executed when fulfillment action is matched. List has feature ids from FeatureClass

ScenarioMultiplication - in out

XPath expression, which is determining how many times fulfillment action has to be applied

FeatureLayer - out

Output layer is name of virtual layer which will have each the feature value generated by the matching action. This FeatureLayer will be used for filtering values by Layer when decomposition is done for all lines from input.

Following example defines execution scenario of the Add subscriber action which is generated by the ADD item of the mobile service complex product. Output fulfillment action generated to the fulfillment order will be “ADD SUBSCRIBER”. Priority of the output action is 10. Action must be single in the output if wins and takes all the generated features from the layer “Generic” and “7”. Feature generated from the order line are produced to the layer “7”.

<row>
<cell>AddSubscriber_action</cell>
<cell>ADD</cell>
<cell>ADD SUBSCRIBER</cell>
<cell>10</cell>
<cell>'1'</cell>
<cell>Y</cell>
<cell>7|GENERIC</cell>
<cell>N</cell>
<cell></cell>
<cell>msisdnRes,faxRes,dataRes,msisdnVip</cell>
<cell>'1'</cell>
<cell>7</cell>
</row>
<row>
<cell>FinishAddSubscriber_action</cell>
<cell>ADD</cell>
<cell>[STOP]</cell>
<cell>9</cell>
<cell>'1'</cell>
<cell>Y</cell>
<cell>GENERIC|7</cell>
<cell>N</cell>
<cell></cell>
<cell></cell>
<cell>'1'</cell>
<cell>7</cell>
</row>

Another FinishAddSubscriber action generates directive to STOP – means cut other generated decomposed actions, features and services with the lower priority than “9”.

Sales order Feature metadata definition and modification.

All the possible decomposition output parameters and variables entities generating provisioning information are stored in OF95FEATURE.xml DVM file.

Feature – is entity which represents one of the provisioning parameters which is needed by the provisioning system to fulfill the business scenario triggered by the sales order. Feature contains reference to the service which needs to consume the value coming from the feature value generator.

FeatureName - primary key

Unique identifier for feature definition

IsInput - out

Y - Means input parameter for service

N - Means output parameter from service

ServiceId - out

Service id from ServiceClass defines for which service on activation platform generated feature belongs to

FeatureParameterName - out

Textual name of feature for activation platform

IsVariable - out

Y - Means that FeatureValueGenerator holds variable name, which will be executed during run time of sales order

N - Means that FeatureValueGenerator holds xpath

FeatureValueGenerator - in out

Xpath expression evaluated from the input of the sales order. It generates value for feature. It is controlled by IsVariable.

TargetVariablesForOutput - out

Comma separated list of variables, which will be filled in by response value during run time of sales order. It is controlled by IsInput

IsIndexing - out

Y - Means that every occurrence of the feature will have sequential index attribute

N - All instances of the feature will be grouped. First in sequence will determine the value

InheritanceMode - out

Features might be coming from component or carrier specification. Component overrides carrier feature with same name.

D - Means that feature will be considered as carrier or component based on from which specification it was initiated

1 - Overrides mode coming from specification and forces to have carrier mode

2 - Overrides mode coming from specification and forces to have component mode

Following example describes feature of previous sim card number from the sales order line. It is possible to use $RootLine and $ParentLine for the xpath expressions.

<row>
<cell>oldSIMRes</cell>
<cell>Y</cell>
<cell>InventoryId</cell>
<cell>OLDSIM</cell>
<cell>N</cell>
<cell>$SalesOrderLine/telcosord:SalesOrderSchedule/corecom:ItemInstance/corecom:PriorSerialNumber</cell>
<cell></cell>
<cell>N</cell>
<cell>D</cell>
</row>

Generated output from Fulfillment Order:

<ns0:FulfillmentSystem>RESOURCE_01</ns0:FulfillmentSystem>
<ns0:FulfillmentActionPriority>1</ns0:FulfillmentActionPriority>
<ns0:FulfillmentServices>
<ns0:FulfillmentService>
<ns0:Service>INVENTORY</ns0:Service>
<ns0:ServiceParameters>
<ns0:Parameter index="">
<ns0:ParameterName>OLDSIM</ns0:ParameterName>
<ns0:ParameterValue>342355699000666</ns0:ParameterValue>
</ns0:Parameter>

Following example defines response parameter which is then automatically transferred through the variables to another input parameter for the different service.

<row>
<cell>newIMSIRes_OUT</cell>
<cell>N</cell>
<cell>InventoryId</cell>
<cell>NewIMSI</cell>
<cell>N</cell>
<cell>OUTPUT</cell>
<cell>NEWIMSI_Variable</cell>
<cell>N</cell>
<cell>D</cell>
</row>

<row>
<cell>newIMSIVip</cell>
<cell>Y</cell>
<cell>ReplaceSIMId</cell>
<cell>NEWIMSI</cell>
<cell>Y</cell>
<cell>'NEWIMSI_Variable'</cell>
<cell></cell>
<cell>N</cell>
<cell>D</cell>
</row>



Service metadata definition and modification

All the possible fulfillment systems service entities generating provisioning information are stored in OF95SERVICE.xml DVM file.

Service – is entity which represents one of the provisioning system virtual services or service groups or business scenario scope. This entity contains reference to the enterprise System to which the System specific part of Fulfillment Order is provisioned.

ServiceId - primary key

Unique Identifier - primary key

ServiceName - out

String value of service used by activation platform

IsUniqueInOrder - out

Y - Means that services are grouped

N - Each service is autonomous and having its own features

IsIndexing - out

Y - Used only with combination of IsUniqueInOrder = N. Each service will get sequenced index attribute

N - Used only with combination of IsUniqueInOrder = N. services will not have index attribute

ProvisioningSystem - out

String value identifying activation platform/provisioning platform – reference to the OF_SYSTEM

ProvisioningSystemSequence - out

Integer value determining execution sequence in execution plan within a fulfillment action

Following example defines INVENTORY Service for the resource system. The service is unique in Fulfillment Order.

<row>
<cell>InventoryId</cell>
<cell>INVENTORY</cell>
<cell>Y</cell>
<cell>N</cell>
<cell>RESOURCE_01</cell>
<cell>2</cell>
</row>


Change SIM to Resource Activation Scenario decomposition sample

This sub chapter shows how to model provisioning of the Sales Order to produce Fulfillment Order part for the Resource Activation platform for the Change SIM scenario.

Expected result of the metadata configuration for each the Sales Order containing Change SIM scenario:

<decomposedOrder_OutputVariable><part xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="payload"><FulfillmentOrderEBM versionID="" languageCode="" xmlns="http://xmlns.oracle.com/EnterpriseObjects/Industry/Comms/EBO/FulfillmentOrder/V1">
<EBMHeader xmlns:corecom="http://xmlns.oracle.com/EnterpriseObjects/Core/Common/V2" xmlns="http://xmlns.oracle.com/EnterpriseObjects/Core/Common/V2">
<corecom:EBMName>{http://xmlns.oracle.com/EnterpriseObjects/Industry/Comms/EBO/FulfillmentOrder/V1}FulfillmentOrderEBM</corecom:EBMName>
<corecom:EBOName>{http://xmlns.oracle.com/EnterpriseObjects/Industry/Comms/EBO/FulfillmentOrder/V1}FulfillmentOrderEBO</corecom:EBOName>
<corecom:CreationDateTime>2010-05-26T20:36:36+02:00</corecom:CreationDateTime>
<corecom:VerbCode>MODIFY</corecom:VerbCode>
<corecom:Sender>
<corecom:CallingServiceName></corecom:CallingServiceName>
<corecom:ID></corecom:ID>
</corecom:Sender>
<corecom:Target>
<corecom:ID/>
</corecom:Target>
<corecom:BusinessScope>
<corecom:ID></corecom:ID>
<corecom:InstanceID></corecom:InstanceID>
<corecom:BusinessScopeTypeCode></corecom:BusinessScopeTypeCode>
<corecom:EnterpriseServiceName></corecom:EnterpriseServiceName>
<corecom:EnterpriseServiceOperationName></corecom:EnterpriseServiceOperationName>
</corecom:BusinessScope>
<corecom:EBMTracking>
<corecom:SequenceNumber>1</corecom:SequenceNumber>
<corecom:ExecutionUnitName></corecom:ExecutionUnitName>
<corecom:ImplementationCode>BPEL</corecom:ImplementationCode>
<corecom:ActivityDateTime>2010-05-26T20:36:36+02:00</corecom:ActivityDateTime>
</corecom:EBMTracking>
</EBMHeader>
<DataArea>
<Process xmlns="http://xmlns.oracle.com/EnterpriseObjects/Core/Common/V2"/>
<FulfillmentOrders xmlns:ns0="http://xmlns.oracle.com/EnterpriseObjects/Industry/Comms/EBO/FulfillmentOrder/V1">
<ns0:FulfillmentOrder>
<ns0:FulfillmentOrderHeader isSingle="Y">
<ns0:SalesOrderId>11111111</ns0:SalesOrderId>
<ns0:OrderAction>CHANGE SIM</ns0:OrderAction>
<ns0:OrderScenario/>
<ns0:OrderPriority>1</ns0:OrderPriority>
</ns0:FulfillmentOrderHeader>
<ns0:FulfillmentOrderActions>
<ns0:FulfillmentAction>
<ns0:FulfillmentSystem>RESOURCE_01</ns0:FulfillmentSystem>
<ns0:FulfillmentActionPriority>1</ns0:FulfillmentActionPriority>
<ns0:FulfillmentServices>
<ns0:FulfillmentService>
<ns0:Service>INVENTORY</ns0:Service>
<ns0:ServiceParameters>
<ns0:Parameter index="">
<ns0:ParameterName>MSISDN</ns0:ParameterName>
<ns0:ParameterValue>355699000666</ns0:ParameterValue>
</ns0:Parameter>
<ns0:Parameter index="">
<ns0:ParameterName>SIM</ns0:ParameterName>
<ns0:ParameterValue>11111111111</ns0:ParameterValue>
</ns0:Parameter>
<ns0:Parameter index="">
<ns0:ParameterName>NewSIM</ns0:ParameterName>
<ns0:ParameterValue>222222222</ns0:ParameterValue>
</ns0:Parameter>
</ns0:ServiceParameters>
</ns0:FulfillmentService>
</ns0:FulfillmentServices>
</ns0:FulfillmentAction>
</ns0:FulfillmentOrderActions>
</ns0:FulfillmentOrder>
</FulfillmentOrders>
</DataArea>
</FulfillmentOrderEBM>
</part></decomposedOrder_OutputVariable>

Following steps needs to be done:

  1. Define provisioning system for the Resources in OF_SYSTEM

<row>
<cell>Numeritrack</cell>
<cell>RESOURCE_01</cell>
<cell>InventoryId</cell>
</row>

  1. Create/Add product which represents SIM to the OF_PRODUCT

<row>
<cell>SIM Card</cell>
<cell>8</cell>
<cell>ResourceSpec</cell>
<cell>Q-46C</cell>
<cell>SIM Card</cell>
<cell>INVALID</cell>
<cell>SIM</cell>
</row>

  1. Specify SIM product type OF_SPECIFICATION and reference to the new SIM Card Change action scenario

<row>
<cell>SIM Card Spec</cell>
<cell>ResourceSpec</cell>
<cell>SUREPAY_01|VIPER_01|SEBL_01</cell>
<cell>Y</cell>
<cell>N</cell>
<cell>SimCard_change_action,SimCard_purchase_action,FinishChangeSIM_action</cell>
</row>

  1. Define Execution plan in OF_EXECUTION_PLAN for the SIM Card Change when SIM product line carries UPDATE action and generates new features for the Resource Activation platform

Note: See all the features are produced to the layer 6 but results are taken from GENERIC layer as well

<row>
<cell>SimCard_change_action</cell>
<cell>UPDATE</cell>
<cell>CHANGE_SIM</cell>
<cell>3</cell>
<cell>'1'</cell>
<cell>Y</cell>
<cell>6|GENERIC</cell>
<cell>N</cell>
<cell></cell> <cell>accountFeature,componentFeature,simCardFeature,newSIMRes,oldSIMRes ,MSISDNRes,newIMSIRes_OUT,newSIMSerialVip,oldSIMserialVip,newIMSIVip</cell>
<cell>'1'</cell>
<cell>6</cell>
</row>

  1. Define features, expressions to get value and reference to the service in OF_FEATURE

<row>
<cell>newSIMRes</cell>
<cell>Y</cell>
<cell>InventoryId</cell>
<cell>NewSIM</cell>
<cell>N</cell>
<cell>$SalesOrderLine/telcosord:SalesOrderSchedule/corecom:ItemInstance/corecom:SerialNumber</cell>
<cell></cell>
<cell>N</cell>
<cell>D</cell>
</row>
<row>
<cell>oldSIMRes</cell>
<cell>Y</cell>
<cell>InventoryId</cell>
<cell>SIM</cell>
<cell>N</cell>
<cell>$SalesOrderLine/telcosord:SalesOrderSchedule/corecom:ItemInstance/corecom:PriorSerialNumber</cell>
<cell></cell>
<cell>N</cell>
<cell>D</cell>
</row>
<row>
<cell>MSISDNRes</cell>
<cell>Y</cell>
<cell>InventoryId</cell>
<cell>MSISDN</cell>
<cell>N</cell>
<cell>$SalesOrder/telcosord:SalesOrderLine[telcosord:Identification/corecom:BusinessComponentID=$RootLine]/telcosord:SalesOrderLineSchedule/telcocom:ItemInstance/telcocom:SerialNumber</cell>
<cell></cell>
<cell>N</cell>
<cell>D</cell>
</row>

  1. Create definition for the Inventory Service in OF_SERVICE

<row>
<cell>InventoryId</cell>
<cell>INVENTORY</cell>
<cell>Y</cell>
<cell>N</cell>
<cell>RESOURCE_01</cell>
<cell>2</cell>
</row>


Chapter
4 How to deploy CFS & Extensions

This Chapter provides sequence of development steps to enable deploy all the modified OOTB components or new developed components to any Environment running SOA Suite 10g and AIA2.4/2.5. These steps cover only technical setup, which needs to be done to deploy automatically using deployment properties.

Assumption

This chapter is not replacing the AIA 2.5/AIA2.4 documentation: E17423-01/ E14797-01 Installation and Upgrade Guide, E15763-01/ E14750-01 Integration Developers Guide. This chapter provides instructions to speed up PIP deployment and configuration setup to be able quickly to adopt the extension solution to different environments. The User Guide is a role-based document that provides specific user procedures to follow based on the user’s role.


Environment pre-installation check

Check if before install/deploy $AIA_HOME/bin/aiaenv.sh contains Highlighted lines:


BPEL_HOME=$ORACLE_HOME/bpel
JAVA_HOME=$ORACLE_HOME/jdk
AIA_INSTANCE=/oracle/app/product/10.1.3.1/OracleAS_1/j2ee/oc4j_soa/applications
BSR_APP=$AIA_INSTANCE/AIAApplication/AIAUserInterface/WEB-INF
PLATFORM=ias_10g

if [ "$PLATFORM" = "weblogic" ]; then



CLASSPATH=$AIA_HOME/Infrastructure/BSR/wllib/weblogic.jar:$AIA_HOME/lib/xalan.jar
BSR_APP=$AIA_HOME/Infrastructure/AIAApplication/AIAUserInterface/WEB-INF



fi

ANT_OPTS="-Xms512M -Xmx1024M -XX:MaxPermSize=256M"
CLASSPATH=$CLASSPATH:$ORACLE_HOME/bpel/lib/connector15.jar:$ORACLE_HOME/bpel/lib/oracle_http_client.jar:$ORACLE_HOME/j2ee/home/oc4jclient.jar:$ORACLE_HOME/bpel/lib/orawsdl.jar:$ORACLE_HOME/bpel/lib/orabpel.jar:$ORACLE_HOME/bpel/lib/orabpel-common.jar:$ORACLE_HOME/bpel/lib/orabpel-common.jar:$ORACLE_HOME/bpel/lib/orabpel-thirdparty.jar:$ORACLE_HOME/integration/esb/lib/commons-logging.jar:$ORACLE_HOME/integration/esb/lib/commons-codec-1.3.jar:$ORACLE_HOME/j2ee/home/admin_client.jar:$AIA_HOME/lib/InstallUtils.jar:$AIA_HOME/lib/aia.jar
PATH=.:$ANT_HOME/bin:$JAVA_HOME/bin:$PATH

export PATH
export ORACLE_HOME
export AIA_HOME
export ANT_HOME
export JAVA_HOME
export BPEL_HOME
.


How to enable SVN source control on the DEV type environment

This procedure are recommended for the non-production environments

Add following lines to the .profile or shell profile(e.g. .bashrc):

ORACLE_HOME=/oracle/app/product/10.1.3.1/OracleAS_1;export ORACLE_HOME;
AIA_HOME=/oracle/app/product/10.1.3.1/OracleAIA25;export AIA_HOME;
PATH=$PATH:$ORACLE_HOME/opmn/bin;export PATH;
. $AIA_HOME/bin/aiaenv.sh

>cd /oracle/app/product/10.1.3.1

Checkout the branch or tag

> svn co http:/repositoryIP/svn/project/branches/ReleaseHome subversion

> cd $AIA_HOME

mv Infrastructure Infrastructure.orig; ln -s ../subversion/Infrastructure Infrastructure

mv lib/ lib.orig; ln -s ../subversion/lib lib

mv seeddata/ seedata.orig; ln -s ../subversion/seeddata seedata

mv util/ util.orig; ln -s ../subversion/util util

mv PIPS/ PIPS.orig; ln -s ../subversion/PIPS PIPS

mv AIAComponents/ AIAComponents.orig; ln -s ../subversion/AIAComponents AIAComponents

mv config config.orig; ln -s ../subversion/config config

cp config.orig/*.properties config

mv config/AIAConfigurationProperties.xml config/AIAConfigurationProperties.xml.svn

cp config.orig/AIAConfigurationProperties.xml config/AIAConfigurationProperties.xml

e.g.:

network.http.host=netwinhost
network.http.port=80
resource.http.host=omhost
resource.http.port=80
paymentGW.http.host=sigohost
paymentGW.http.port=80

> svn commit MergeOnDemand.wsdl --message 'bla bla'

>svn commit --message ‘cvt cvt’

>svn update


Adding new or customized BPEL/ESB extension of the OOTB PIP to the deployment structure

Adding or customizing EBF project

copy or svn.Export your EBF project(without .svn dirs) from AIA sources to the Release\PIPS\Industry\Communications\Setup\PIPExtensions\EBF

Add reference of the new/customized EBF to the

Release\PIPS\Industry\Communications\Setup\PIPExtensions\Install\DeployEBF.xml

Example:

<target name="DeployEBF">
<!--todo ADD modified/custom EBF reference there -->
<echo message="********************** Deploying OrderOrchestrationEBF ***********************"/>
<ant dir="${aia.home}/PIPS/Industry/Communications/Setup/OrderToBillExtensions/EBF/OrderOrchestrationEBF"/>
<echo message="********************** Deploying NewEBF ***********************"/>
<ant dir="${aia.home}/PIPS/Industry/Communications/Setup/OrderToBillExtensions/EBF/NewEBF"/>
….
</target>

<target name="UnDeployEBF">
<!--todo ADD modified/custom EBF reference for undeploy there -->
<echo message="********************** UnDeploying EBF's required for OrderToBill***********************"/>
<echo message="********************** UnDeploying OrderOrchestrationEBF ***********************"/>
<ant dir="${aia.home}/PIPS/Industry/Communications/Setup/OrderToBillExtensions/EBF/OrderOrchestrationEBF" target="undeploy"/>
<echo message="********************** UnDeploying NewEBF ***********************"/>
<ant dir="${aia.home}/PIPS/Industry/Communications/Setup/OrderToBillExtensions/EBF/NewEBF"/>
….
</target>

If you are adding new EBF projects then new fault policy file should be created

Then Modify your bpel/bpel.xml following way:

<BPELSuitcase>
<BPELProcess id="YourProcessEBF" src="YourProcessEBF.bpel">
<partnerLinkBindings>
….
</partnerLinkBindings>
<faultPolicyBindings>
<process faultPolicy="YourProcessEBFFaultPolicy"/>
</faultPolicyBindings>
</BPELProcess>
</BPELSuitcase>
</target>

Copy e.g. \PIPS\Industry\Communications\SeedData\FaultPolicies\CommsProcessBillingAccountListEBFFaultPolicy.xml to YourProcessEBFFaultPolicy.xml

See: Error: TODO

All the artifacts must have replaced references and imports. See: TODO

Adding or customizing EBF project

copy or svn.Export your EBF project(without .svn dirs) from AIA sources to the Release\PIPS\Industry\Communications\Setup\PIPExtensions\EBS

Add new ant deploy reference and target for the new/customized EBS to the

Release\PIPS\Industry\Communications\Setup\ PIPExtensions\Install\DeployEBS.xml(DeployEBSRoutingRules.xml)



The EBS deployed with this script has to the configured without Routing Rules. This means that we need to have two folders to each service. One to be deployed here without any routing rules and another one with the routing rules to be deployed with DeployEBSRoutingRules.xml.

It also means that for customized (existing) EBS there is no need to add an entry in DeployEBS.xml only in DeployEBSRoutingRules.xml.

<target name="DeployEBSN">
<echo>---------------------------------------------------------</echo>
<echo>----------------Deploying EBS's Without Routing-----------</echo>
<echo>---------------------------------------------------------</echo>
<antcall target="CommunicationsFulfillmentOrderEBSV1"/>
<antcall target="NewEBSV2"/>

</target>


<target name="NewEBSV2" if="NewEBSV2">
<echo>----------------Deploying NewEBSV2 Without Routing-----------</echo>
<ant dir="${aia.home}/PIPS/Industry/Communications/Setup/OrderToBillExtensions/EBS/NewEBSV2"/>
<propertyfile file="${aia.home}/config/deployedEBS.properties">
<entry key="deployed.NewEBSV2" value="false"/>
</propertyfile>
</target>

Release2010_1\PIPS\Industry\Communications\Setup\PIPExtensions\Install\DeployEBSRoutingRules.xml

<target name="UndeployEBSNoRouting">
<echo>-----------------------------------------------------------</echo>
<echo>----------------UnDeploying EBS's Without Routing-----------</echo>
<echo>-----------------------------------------------------------</echo>
<ant dir="${aia.home}/PIPS/Industry/Communications/Setup/OrderToBillExtensions/EBS/CommunicationsFulfillmentOrderEBSV1" target="undeploy"/>
dir="${aia.home}/PIPS/Industry/Communications/Setup/OrderToBillExtensions/EBS/NewEBSV2" target="undeploy"/>

</target>

All the artifacts must have replaced references and imports See: Error: Reference source not found

Customizing EBS project with new routing rules

When you are adding new routing rule to the new provider to the EBS project you should do following steps.

  1. Find your EBS service with routing rules – should be located in:

\Release2010_1\PIPS\Industry\Communications\Setup\AgentAssistedBillingCare\

\Release2010_1\PIPS\Industry\Communications\Setup\AgentAssistedBillingCare\

  1. Export from svn and add it to the Extension location e.g:

\PIPS\Industry\Communications\Setup\AgentAssistedBillingCareExtensions\EBS\Customer\

  1. Uncomment deployment of the routing rules to the:

\PIPS\Industry\Communications\Setup\AgentAssistedBillingCareExtensions\EBS\Customer\

  1. Uncomment/check deployment of the routing rules in Install.xml:

<target name="Install">
<echo> -------------------------------------------------------------------------- </echo>
<echo> -------------- Installing AgentAssistedBillingCareExtensions ------------- </echo>
<echo> -------------------------------------------------------------------------- </echo>
<!--<ant antfile="${aia.home}/util/GetEsbMetadata/build.xml"/>
<ant antfile="BsrDesigntimePublish.xml" target="replaceTokens"/>-->
<echo> ----------------- CopyAIAComponents ----------------------- </echo>
<ant antfile="CopyAIAComponents.xml"/>
<ant antfile="DVMInstall.xml"/>
<echo message="**************** Restarting Server ******************"/>
<antcall target="stopServer"/>
<antcall target="startServer"/>
<!--<ant antfile="DeployServiceGroups.xml"/>-->
<ant antfile="DeployEBS.xml"/>
<ant antfile="DeployEBF.xml"/>
<ant antfile="DeployABCS.xml"/>
<ant antfile="DeployEBSRoutingRules.xml"/>

  1. Add from OrderToBill or AgentAssistedBillingCare those chunks referring to the customized EBS



Also here, the conditions defined in the script are not used. The “if” condition in target definition should be commented in order to execute the ant process.

<!--Conditions below are to check if the "EBS with no routing" and "EBS with routing rules" has been already deployed.-->
<condition property="CommunicationsCustomerPartyEBSV2">
<equals arg1="${deployed.CommunicationsCustomerPartyEBSV2}" arg2="false"/>
</condition>
<condition property="CommunicationsCustomerPartyEBSV2_dep">
<equals arg1="${deployed.CommunicationsCustomerPartyEBSV2}" arg2="true"/>
</condition>


<target name="deployEBS">
<antcall target="CommunicationsCustomerPartyEBSV2"/>
<antcall target="CommunicationsCustomerPartyEBSV2_dep"/>

</target>

….
<target name="CommunicationsCustomerPartyEBSV2" if="CommunicationsCustomerPartyEBSV2">
<echo>---------------------------------------------------------------</echo>
<echo>-------Deploying CommunicationsCustomerPartyEBSV2 With Routing Rules-----</echo>
<echo>---------------------------------------------------------------</echo>
<ant dir="${aia.home}/PIPS/Industry/Communications/Setup/AgentAssistedBillingCareExtensions/EBS/Customer/CommunicationsCustomerPartyEBSV2"/>
<propertyfile file="${aia.home}/config/deployedEBS.properties">
<entry key="deployed.CommunicationsCustomerPartyEBSV2" value="true"/>
</propertyfile>
</target>

<target name="CommunicationsCustomerPartyEBSV2_dep" if="CommunicationsCustomerPartyEBSV2_dep">
<echo>---------------------------------------------------------------</echo>
<echo>-------CommunicationsCustomerPartyEBSV2 is already deployed in the server-----</echo>
<echo>-------To add new Routing Rules Refer Developer Guide-----</echo>
<echo>---------------------------------------------------------------</echo>
</target>



<target name="undeployEBS">
<echo>---------------------------------------------------------------</echo>
<echo>-------------UnDeploying EBS's With Routing Rules--------------</echo>
<echo>---------------------------------------------------------------</echo>
<ant dir="${aia.home}/PIPS/Industry/Communications/Setup/AgentAssistedBillingCareExtensions/EBS/Customer/CommunicationsCustomerPartyEBSV2" target="undeploy"/>
….

  1. Customize routing rules in JDEV

  2. Add new endpointService.esbsvc file to SVN or all the new esbsvc files

  3. After adding new routing rule – generate DeploymentPlan

    Run >ant ExtractESBDeploymentPlan in the project directory or in JDev then new deployment plan is generated

  1. Add customization of the routing rule (your service endpoint customization) to the build.xml

<target name="CustomiseDeploymentPlan">
<echo>
--------------------------------------------------------------
| Customising DeploymentPlan
--------------------------------------------------------------
</echo>
<customiseDPServiceDef inDPfile="${esb.deploymentPlan}" inQname="BPELSystem.default.QueryCustomerPartyListBRMCommsProvABCSImpl.QueryCustomerPartyListBRMCommsProvABCSImpl_1_0" targetWsdlURL="http://${http.hostname}:${http.port}/orabpel/default/QueryCustomerPartyListBRMCommsProvABCSImpl/1.0/QueryCustomerPartyListBRMCommsProvABCSImpl?wsdl" targetSoapEndpointURI="http://${http.hostname}:${http.port}/event/BPELSystem/default/QueryCustomerPartyListBRMCommsProvABCSImpl/QueryCustomerPartyListBRMCommsProvABCSImpl_1_0" />

</target>

  1. If new ESB service: SOAP Service(not link to BPEL service through ESB), Routing Service or Adapter service has been created then add customization for the BSR registration to the build.xml

<target name="bsrPublish">
<echo>
--------------------------------------------------------------
| Registering ESB services in BSR
--------------------------------------------------------------
</echo>
<registerESBWsdl serviceQname="AIASystem.EBS.CommunicationsCustomerPartyEBSV2" hostname="${http.hostname}" httpport="${http.port}" user="${admin.user}" password="${admin.password}" url="" />
<ant antfile="${aia.home}/Infrastructure/install/scripts/FPBSRPublish.xml" target="publishConcreteWSDLS"><property name="concretewsdl" value="${url}" />
</ant>

<registerESBWsdl serviceQname="AIASystem.BRM.SyncCustomerPartyListBRMCommsJMSProducer" hostname="${http.hostname}" httpport="${http.port}" user="${admin.user}" password="${admin.password}" url="" />
<ant antfile="${aia.home}/Infrastructure/install/scripts/FPBSRPublish.xml" target="publishConcreteWSDLS"><property name="concretewsdl" value="${url}" />
</ant>

<registerESBWsdl serviceQname="AIASystem.EBS.CustomerPartyEBSV2" hostname="${http.hostname}" httpport="${http.port}" user="${admin.user}" password="${admin.password}" url="" />
<ant antfile="${aia.home}/Infrastructure/install/scripts/FPBSRPublish.xml" target="publishConcreteWSDLS"><property name="concretewsdl" value="${url}" />
</ant>

</target>


Adding or customizing ABCS project

Steps needed for every ABCS project

Generator generates fault policy which is located in FaultPolicy sub folder e.g. MatchContactSiebelReqABCSImplFaultPolicy.xml

See: TODO

$AIA_HOME\PIPS\Industry\Communications\Setup\PIPExtensions\Install\DeployABCS.xml

Note: add replaceTokensForBRMAdapters in the case of BRM system ABCS

<target name="DeployOMABCS">
<echo message="********************** Deploying OSM Services***********************"/>
<ant dir="${aia.home}/PIPS/Industry/Communications/Setup/OrderToBillExtensions/OM/ProviderABCS/ProcessFulfillmentOrderPT_INOV_OMCommunicationsProvABCSImpl"/>
<ant dir="${aia.home}/PIPS/Industry/Communications/Setup/OrderToBillExtensions/OM/ProviderABCS/NewABCS"/>
</target>



<target name="UnDeployOMABCS">
<echo message="********************** UnDeploying OSM Services***********************"/>
<ant dir="${aia.home}/PIPS/Industry/Communications/Setup/OrderToBillExtensions/OM/ProviderABCS/ProcessFulfillmentOrderPT_INOV_OMCommunicationsProvABCSImpl" target="undeploy"/>
</target>

Customizing Generated BPEL Process deployment script and configuration

These steps are only to be applied to ABCS’s created from scratch with Artifact Generator.

Artifact generator generates build script which does not contain some parts necessary for the deployment to different environment. This chapter describes how to modify generated artifacts to build and deploy in different solution environment.



Note: Do not forget move fault policy file from generated directory to the $AIA_HOME\PIPS\Industry\Communications\Setup\PIPExtensions\SeedData\FaultPolicies



  1. TortoiseSVN> Rename generated NewABCSImpl_Config.xml to AIAServiceConfigurationProperties.xml

  2. Finish the generated configuration e.g. for Numeritrack Provider:

<!-- SyncCustomerPartyNumeritrackCommsProvABCSImpl -->
<ServiceConfiguration serviceName="{http://xmlns.oracle.com/ABCSImpl/Numeritrack/Industry/Comms/SyncCustomerPartyNumeritrackCommsProvABCSImpl/V1}SyncCustomerPartyNumeritrackCommsProvABCSImpl">
<Property name="Default.SystemID">Numeritrack_01</Property>
<Property name="ABCSExtension.PreXformEBMtoABMCustomerPartyEBM">false</Property>
<Property name="ABCSExtension.PostXformABMtoEBMCustomerPartyEBM">false</Property>
<Property name="Routing.ServiceAuxSessionWSPortV1.RouteToCAVS">false</Property>
<Property name="Routing.ServiceAuxSessionWSPortV1.CAVS.EndpointURI"></Property>
<Property name="Routing.ServiceAuxSessionWSPortV1.Numeritrack_01.EndpointURI">http://${Numeritrack.http.host}:${Numeritrack.http.port}/Expected_negotiated_service_path</Property>
<Property name="Routing.ServiceAuxSessionWSPortV1.MessageProcessingInstruction.EnvironmentCode">PRODUCTION</Property>
<Property name="ABCSExtension.PreInvokeABSNumeritrackABM">false</Property>
<Property name="ABCSExtension.PostInvokeABSNumeritrackABM">false</Property>
</ServiceConfiguration>

For OM services:
http://${om.http.host}:${om.http.port}/Expected_negotiated_path

For Siebel Services: http://${siebel.http.host}:${siebel.http.port}/eai_enu/start.swe?SWEExtSource=WebService&amp;SWEExtCmd=Execute&amp;UserName=${siebel.eai.user}&amp;Password=${siebel.eai.password}

For BRM:
eis/BRM

For SIGO:
http://${sigo.http.host}:${sigo.http.port}/Expected_negotiated_path

  1. Add following section before the line:

<!-- Set bpel.home from developer prompt's environment variable BPEL_HOME -->

<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Check for environment variable existence
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<fail message="Please set the ORACLE_HOME environment variable">
<condition>
<not>
<isset property="env.ORACLE_HOME" />
</not>
</condition>
</fail>
<fail message="Please set the AIA_HOME environment variable">
<condition>
<not>
<isset property="env.AIA_HOME" />
</not>
</condition>
</fail>
<!--Set oracle.home and aia.home-->
<property name="oracle.home" value="${env.ORACLE_HOME}" />
<property name="aia.home" value="${env.AIA_HOME}" />

<!--Get target deployment Env properties - USER/PWD/HOST/PORT -->
<property file="${aia.home}/config/deploy.properties" />
<import file="${aia.home}/Infrastructure/install/lib/AIATaskdefs.xml" />
<AIAProperty file="${aia.home}/config/deploy.properties" />


  1. Add AIA specific tasks definition import after the line:

<property file="${bpel.home}/utilities/ant-orabpel.properties"/>

<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Import, to enable the custom WSDL modification ant tasks ...
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<import file="${aia.home}/Infrastructure/install/lib/WSDLTaskdefs.xml" />
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Import, to enable the undeploy and fetch URL ant tasks ...
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<import file="${aia.home}/Infrastructure/install/lib/AIABPELTaskdefs.xml" />

  1. Modify process-deploy target line to this new one dependency value:

<target name="process-deploy"
depends="EditAIAConfigProperties,CustomiseWSDL,validateTask, compile, deployProcess, deployTaskForm, deployDecisionServices, bsrPublish"/>

  1. Add empty target CustomiseWSDL before the line:

<target name="validateTask">
<target name="CustomiseWSDL">
<echo>
--------------------------------------------------------------
| Customising WSDL
--------------------------------------------------------------
</echo>
</target>

  1. For each the WSDL included in the project add schema reference imports deployment time customizations:

<target name="CustomiseWSDL">
<echo>
--------------------------------------------------------------
| Customising WSDL
--------------------------------------------------------------
</echo>
<customiseSchemaLocation inWsdlfile="${process.dir}/bpel/SyncCustomerPartyNumeritrackCommsProvABCSImpl.wsdl" hostName="${http.hostname}" port="${http.port}" />
<customiseSchemaLocation inWsdlfile="${process.dir}/bpel/ServiceAuxSessionWSPortRef.wsdl" hostName="${http.hostname}" port="${http.port}" />
</target>

Note: if schema is not located on AIA server then different properties based on $AIA_HOME/config/deploy.properties than http.hostname, http.port.



  1. For each the WSDL imported in the project wsdl files(usually in Ref WSDLs) add wsdl reference imports deployment time customizations:

<target name="CustomiseWSDL">
<echo>
--------------------------------------------------------------
| Customising WSDL
--------------------------------------------------------------
</echo>
<customiseSchemaLocation inWsdlfile="${process.dir}/bpel/SyncCustomerPartyNumeritrackCommsProvABCSImpl.wsdl" hostName="${http.hostname}" port="${http.port}" />
<customiseSchemaLocation inWsdlfile="${process.dir}/bpel/ServiceAuxSessionWSPortRef.wsdl" hostName="${http.hostname}" port="${http.port}" />
<customiseWsdlImport
inNamespace="http://www.projectcomp.com/Numeritrack/wsdl/serviceaux/v1-0"
targetLocation="http://${http.hostname}:${http.port}/AIAComponents/ApplicationObjectLibrary/Numeritrack/V1/wsdls/NW-ServiceAux-v1-0.wsdl"
inWsdlfile="${process.dir}/bpel/ServiceAuxSessionWSPortRef.wsdl" />
<customiseWsdlImport
inNamespace="http://schemas.oracle.com/bpel/extension"
targetLocation="http://${http.hostname}:${http.port}/AIAComponents/UtilityArtifacts/RuntimeFault.wsdl"
inWsdlfile="${process.dir}/bpel/SyncCustomerPartyNumeritrackCommsProvABCSImpl.wsdl" />
</target>



  1. Add merge Service configuration to Global AIA configuration task before the line:

<target name="compile">

<target name="EditAIAConfigProperties">
<echo>
--------------------------------------------------------------
| Editing AIAConfigurationProperties.xml
--------------------------------------------------------------
</echo>
<property name="AIAServiceConfigurationProperties.xml" value="AIAServiceConfigurationProperties.xml" />
<available file="${process.dir}/AIAServiceConfigurationProperties.xml" property="AIAServiceConfigurationProperties.xml.present" />

<taskdef resource="net/sf/antcontrib/antcontrib.properties" />

<if>
<equals arg1="${AIAServiceConfigurationProperties.xml.present}" arg2="true" />
<then>
<ant target="merge" />
</then>
<else>
<echo>AIAServiceConfiguration.xml not present</echo>
</else>
</if>
</target>
<target name="merge">
<copy file="${process.dir}/AIAServiceConfigurationProperties.xml" tofile="${process.dir}/AIAServiceConfigurationPropertiestemp.xml" overwrite="true">
<filterchain>
<expandproperties/>
</filterchain>

</copy>
<condition property="command" value="/c antExit -DforceMergeAIAConfigProperties=${forceMergeAIAConfigProperties} xslMerge">
<os family="windows" />
</condition>
<condition property="command" value="${env.AIA_HOME}/apache-ant-1.7.0/bin/ant --noconfig -DforceMergeAIAConfigProperties=${forceMergeAIAConfigProperties} xslMerge">
<os family="unix" />
</condition>
<condition property="windows.or.unix" value="cmd.exe">
<os family="windows" />
</condition>
<condition property="delimiter" value=";">
<os family="windows" />
</condition>

<condition property="windows.or.unix" value="/bin/sh">
<os family="unix" />
</condition>
<condition property="delimiter" value=":">
<os family="unix" />
</condition>

<exec dir="." executable="${windows.or.unix}" failonerror="true">
<env key="CLASSPATH" value=".${delimiter}${aia.home}/apache-ant-1.7.0/lib/xercesImpl.jar${delimiter}${aia.home}/lib/xalan.jar" />
<arg line="${command}" />
</exec>

</target>
<target name="xslMerge">
<ant antfile="${aia.home}/util/XMLMerger/build.xml" target="runXMLMerger" inheritall="false">
<property name="ServiceConfigFilePath" value="${process.dir}/AIAServiceConfigurationProperties.xml" />
<property name="aiahome" value="${aia.home}" />
</ant>

<copy file="${aia.home}/config/AIAConfigurationProperties.xml" tofile="${aia.home}/config/AIAConfigurationProperties.xml.bck" overwrite="true" />
<taskdef resource="net/sf/antcontrib/antcontrib.properties" />
<if>
<equals arg1="${forceMergeAIAConfigProperties}" arg2="true" />
<then>
<xslt style="${aia.home}/config/UpgradeMergeAIAConfigurationProperties.xsl" in="${aia.home}/config/AIAConfigurationProperties.xml" out="${aia.home}/config/temp.xml">
<param name="file" expression="${process.dir}/AIAServiceConfigurationPropertiestemp.xml" />
<param name="forceMergeAIAConfigProperties" expression="true" />
</xslt>
</then>
<else>
<xslt style="${aia.home}/config/MergeAIAConfigurationProperties.xsl" in="${aia.home}/config/AIAConfigurationProperties.xml" out="${aia.home}/config/temp.xml">
<param name="file" expression="${process.dir}/AIAServiceConfigurationPropertiestemp.xml" />
</xslt>
</else>
</if>
<delete file="${aia.home}/config/AIAConfigurationProperties.xml" />
<move file="${aia.home}/config/temp.xml" tofile="${aia.home}/config/AIAConfigurationProperties.xml" />
<delete file="${aia.home}/config/temp.xml" />
<delete file="${process.dir}/AIAServiceConfigurationPropertiestemp.xml" />
</target>



  1. Replace the compile target definition with this value:

<target name="compile">

<echo>
--------------------------------------------------------------
| Compiling bpel process ${process.name}, revision ${rev}
--------------------------------------------------------------
</echo>

<bpelc input="${process.dir}/bpel/bpel.xml" out="${process.dir}/output"
rev="${rev}" home="${bpel.home}">
<classpath>
<pathelement location="${aia.home}/lib/aia.jar" />
<pathelement location="${aia.home}/Infrastructure/install/applications/ESBErrorListenerMDB.jar" />
</classpath>
</bpelc>
</target>



  1. For each the partnerlink binding from bpel.xml copy and customize the URI using the deploy.properties names. (Only for partnerlinks and properties, which wsdl is referenced with regular URI or needs to be changed using the environment specific property)

<target name="compile">

<echo>
--------------------------------------------------------------
| Compiling bpel process ${process.name}, revision ${rev}
--------------------------------------------------------------
</echo>

<bpelc input="${process.dir}/bpel/bpel.xml" out="${process.dir}/output"
rev="${rev}" home="${bpel.home}">
<classpath>
<pathelement location="${aia.home}/lib/aia.jar" />
<pathelement location="${aia.home}/Infrastructure/install/applications/ESBErrorListenerMDB.jar" />
</classpath>

<customize infile="${process.dir}/bpel/bpel.xml" outfile="${process.dir}/bpel/bpel.xml">
<partnerLinkBinding name="ServiceAuxSessionWSPort">
<property name="wsdlRuntimeLocation">http://${http.hostname}:${http.port}/AIAComponents/ApplicationObjectLibrary/Numeritrack/V1/wsdls/NW-ServiceAux-v1-0.wsdl</property>
</partnerLinkBinding>
<partnerLinkBinding name="AIAAsyncErrorHandlingBPELProcess">
<property name="wsdlLocation">http://${http.hostname}:${http.port}/orabpel/default/AIAAsyncErrorHandlingBPELProcess/AIAAsyncErrorHandlingBPELProcess?wsdl</property>
</partnerLinkBinding>
</customize>

</bpelc>
</target>



  1. Add undeploy and BSR(Business Service Repository) target before lines:

<!--=============================-->
<!-- BPEL Test targets -->
<!--=============================-->

<!--=============================-->
<!-- Process Undeployment target -->
<!--=============================-->

<target name="undeploy">
<echo>
-------------------------------------------------------------
| Undeploying bpel ${process.name} from ${http.hostname}, http.port ${http.port} , opmn.port ${opmn.requestport}
-------------------------------------------------------------
</echo>
<undeployBPELProcess domain="${domain}" process="${process.name}" rev="${rev}" user="${admin.user}" password="${admin.password}" hostname="${http.hostname}" opmnrequestport="${opmn.requestport}" oc4jinstancename="${oc4jinstancename}" platform="${platform}" httpport="${http.port}" />
</target>

<!--=============================-->
<!-- Process Registration target -->
<!--=============================-->
<target name="bsrPublish">
<registerBPELWsdl domain="${domain}" process="${process.name}" rev="${rev}" user="${admin.user}" password="${admin.password}" hostname="${j2ee.hostname}" opmnrequestport="${opmn.requestport}" oc4jinstancename="${oc4jinstancename}" url="" platform="${platform}" httpport="${http.port}" />
<ant antfile="${aia.home}/Infrastructure/install/scripts/FPBSRPublish.xml" target="publishConcreteWSDLS">

<property name="concretewsdl" value="${url}" />
</ant>
</target>

Adding new partner link to the existing BPEL process

These steps are only to be applied to ABCS’s created from scratch with Artifact Generator.

There are several possibilities how to add and deploy partner link to the BPEL project. Recommended 3 types are:

  1. Add partner link to the project and use Dynamic Partner link configuration. This is recommended for ABCS providers when calling target system e.g. Numeritrack, Sigo, CRM, BRM,…

(See E15763-01 Integration Developer's guide “Dynamic SOAP PartnerLink and CAVS enablement Within Provider ABC Service Impl”)

  1. Add partner link to the project and create reference wsdl or copy service wsdl to the project. Then:

    1. For the WSDL included in the project add schema reference imports deployment time customizations:

<target name="CustomiseWSDL">
<echo>
--------------------------------------------------------------
| Customising WSDL
--------------------------------------------------------------
</echo>
<customiseSchemaLocation inWsdlfile="${process.dir}/bpel/SyncCustomerPartyNumeritrackCommsProvABCSImpl.wsdl" hostName="${http.hostname}" port="${http.port}" />

</target>

Note: if schema is not located on AIA server then different properties based on $AIA_HOME/config/deploy.properties than http.hostname, http.port.



    1. For the WSDL imported in the project files if the wsdl contains wsdl reference imports then add deployment time customizations:

<target name="CustomiseWSDL">
<echo>
--------------------------------------------------------------
| Customising WSDL
--------------------------------------------------------------
</echo>


<customiseWsdlImport
inNamespace="http://www.projectcomp.com/Numeritrack/wsdl/serviceaux/v1-0"
targetLocation="http://${http.hostname}:${http.port}/AIAComponents/ApplicationObjectLibrary/Numeritrack/V1/wsdls/NW-ServiceAux-v1-0.wsdl"
inWsdlfile="${process.dir}/bpel/ServiceAuxSessionWSPortRef.wsdl" />
</target>

    1. For the partnerlink binding from bpel.xml copy and customize the URI using the deploy.properties names. (Only for partnerlinks and properties, which wsdl is referenced with regular URI or needs to be changed using the environment specific property)

<target name="compile">

<echo>
--------------------------------------------------------------
| Compiling bpel process ${process.name}, revision ${rev}
--------------------------------------------------------------
</echo>

<bpelc input="${process.dir}/bpel/bpel.xml" out="${process.dir}/output"
rev="${rev}" home="${bpel.home}">
<classpath>
<pathelement location="${aia.home}/lib/aia.jar" />
<pathelement location="${aia.home}/Infrastructure/install/applications/ESBErrorListenerMDB.jar" />
</classpath>

<customize infile="${process.dir}/bpel/bpel.xml" outfile="${process.dir}/bpel/bpel.xml">
<partnerLinkBinding name="ServiceAuxSessionWSPort">
<property name="wsdlRuntimeLocation">http://${http.hostname}:${http.port}/AIAComponents/ApplicationObjectLibrary/Numeritrack/V1/wsdls/NW-ServiceAux-v1-0.wsdl</property>
</partnerLinkBinding>

</customize>


</bpelc>
</target>



  1. Add partner link to the project referring to the server deployed service or wsdl artifact deployed to the AIAComponents on the server:

    1. For the partnerlink binding from bpel.xml copy and customize the URI using the deploy.properties names. (Only for partnerlinks and properties, which wsdl is referenced with regular URI or needs to be changed using the environment specific property)

<target name="compile">

<echo>
--------------------------------------------------------------
| Compiling bpel process ${process.name}, revision ${rev}
--------------------------------------------------------------
</echo>

<bpelc input="${process.dir}/bpel/bpel.xml" out="${process.dir}/output"
rev="${rev}" home="${bpel.home}">
<classpath>
<pathelement location="${aia.home}/lib/aia.jar" />
<pathelement location="${aia.home}/Infrastructure/install/applications/ESBErrorListenerMDB.jar"/>
</classpath>

<customize infile="${process.dir}/bpel/bpel.xml" outfile="${process.dir}/bpel/bpel.xml">
<partnerLinkBinding name="ServiceAuxSessionWSPort">
<property name="wsdlRuntimeLocation">http://${http.hostname}:${http.port}/AIAComponents/ApplicationObjectLibrary/Numeritrack/V1/wsdls/NW-ServiceAux-v1-0.wsdl</property>
</partnerLinkBinding>

</customize>

</bpelc>
</target>


Adding new wsdl/xsd

$AIA_HOME\PIPS\Industry\Communications\Setup\PIPExtensions\\AIAComponents\ApplicationObjectLibrary – for customized ABCS schemas and wsdls

$AIA_HOME\PIPS\Industry\Communications\Setup\PIPExtensions\AIAComponents\EnterpriseBusinessServiceLibrary – for EBS wsdls

$AIA_HOME\PIPS\Industry\Communications\Setup\PIPExtensions\AIAComponents\EnterpriseObjectsLibrary – for EBO xsds

$AIA_HOME\PIPS\Industry\Communications\Setup\PIPExtensions\Install\CopyAIAComponents.xml



<target name="CopyAIAComponents">
<echo> ---------------------------------------------------------------- </echo>
<echo> ------Copying AIAComponents required for OrderToBill------- </echo>
<echo> ---------------------------------------------------------------- </echo>
<antcall target="ReplaceTokens"/>
<antcall target="EndpointConfigurator"/>
<antcall target="Merge"/>
<copy file="${aia.home}/PIPS/Industry/Communications/Setup/PIPExtensions/AIAComponents/ApplicationObjectLibrary/Siebel/V1/schemas/SWIISSPriceListItemIO.xsd" todir="${oracle.home}/Apache/Apache/htdocs/AIAComponents/ApplicationObjectLibrary/Siebel/V1/schemas" overwrite="yes"/>
<copy file="${aia.home}/PIPS/Industry/Communications/Setup/PIPExtensions/AIAComponents/ApplicationObjectLibrary/Siebel/V1/wsdls/SWIISSPriceListItemIO.wsdl" todir="${oracle.home}/Apache/Apache/htdocs/AIAComponents/ApplicationObjectLibrary/Siebel/V1/wsdls" overwrite="yes"/>
….


<target name="UnInstall">
<echo>------------------------------------------------------------------------</echo>
<echo>-------Deleting AIAComponents required for OrderToBill ------------</echo>
<echo>------------------------------------------------------------------------</echo>
<delete file="${oracle.home}/Apache/Apache/htdocs/AIAComponents/ApplicationObjectLibrary/Siebel/V1/schemas/SWIISSPriceListItemIO.xsd"/>
<delete file="${oracle.home}/Apache/Apache/htdocs/AIAComponents/ApplicationObjectLibrary/Siebel/V1/wsdls/SWIISSPriceListItemIO.wsdl"/>

Endpoint customization for non-dynamic implemented partner links

AIA providers should be implemented using Dynamic Partner Links techniques. But in the case of adding call of the system without using the dynamic endpoint configuration you must customize partnerlink in the wsdl in the AIAComponents.

For each the added wsdl to the AIAComponents you must add these sequence to the $AIA_HOME\PIPS\Industry\Communications\Setup\PIPExtensions\Install\CopyAIAComponents.xml

<!-- XML Task definition -->
<taskdef name="xmltask" classname="com.oopsconsultancy.xmltask.ant.XmlTask">
<classpath>
<pathelement location="${aia.home}/lib/xmltask.jar"/>
</classpath>
</taskdef>

<target name="CopyAIAComponents">
<echo> ---------------------------------------------------------------- </echo>
<echo> ----- Start Copy AIAComponents required for UtilExtensions ----- </echo>
<echo> ---------------------------------------------------------------- </echo>
<antcall target="ReplaceTokens"/>
<antcall target="EndpointConfigurator"/>
<antcall target="Merge"/>
<echo> ---------------------------------------------------------------- </echo>
<echo> ------ Copying AIAComponents required for Siebel->Numeritrack ------- </echo>
<echo> ---------------------------------------------------------------- </echo>
<copy file="${aia.home}/PIPS/Industry/Communications/Setup/TEAMExtensions/AIAComponents/ApplicationObjectLibrary/Numeritrack/V1/wsdls/NW-Common-v1-0.xsd" todir="${oracle.home}/Apache/Apache/htdocs/AIAComponents/ApplicationObjectLibrary/Numeritrack/V1/wsdls/" overwrite="yes"/>
<xmltask source="${aia.home}/PIPS/Industry/Communications/Setup/TEAMExtensions/AIAComponents/ApplicationObjectLibrary/Numeritrack/V1/wsdls/NW-NumeritrackClient-v1-0.wsdl" dest="${aia.home}/AIAComponents/ApplicationObjectLibrary/Numeritrack/V1/wsdls/NW-NumeritrackClient-v1-0.wsdl.repl">
<replace path="/wsdl:definitions/wsdl:service[@name='NumeritrackClientSessionWebService']/wsdl:port[@name='NumeritrackClientSessionWSPort']/soap:address/@location" withText="http://${Numeritrack.http.host}:${Numeritrack.http.port}/TODO_GET_NUMERITRACK_URL_PARTFORTHISSERVICE"/>
</xmltask>
<move file="${aia.home}/PIPS/Industry/Communications/Setup/TEAMExtensions/AIAComponents/ApplicationObjectLibrary/Numeritrack/V1/wsdls/NW-NumeritrackClient-v1-0.wsdl.repl" tofile="${aia.home}/PIPS/Industry/Communications/Setup/TEAMExtensions/AIAComponents/ApplicationObjectLibrary/Numeritrack/V1/wsdls/NW-NumeritrackClient-v1-0.wsdl"/>
<copy file="${aia.home}/PIPS/Industry/Communications/Setup/TEAMExtensions/AIAComponents/ApplicationObjectLibrary/Numeritrack/V1/wsdls/NW-NumeritrackClient-v1-0.wsdl" todir="${oracle.home}/Apache/Apache/htdocs/AIAComponents/ApplicationObjectLibrary/Numeritrack/V1/wsdls/" overwrite="yes"/>

Adding or customizing fault policy



  1. Move(ABCS generated) or copy(customized) fault policy to:

$AIA_HOME\PIPS\Industry\Communications\Setup\PIPExtensions\SeedData\FaultPolicies

Add to svn

  1. Add deploy/undeploy reference of the new/customized artifact to the

$AIA_HOME\PIPS\Industry\Communications\Setup\PIPExtensions\Install\CopyAIAComponents.xml

<target name="CopyAIAComponents">



<!-- Fault policies copy -->
<copy file="${aia.home}/PIPS/Industry/Communications/Setup/OrderToBillExtensions/SeedData/FaultPolicies/ProcessFulfillmentOrderPT_INOV_OMCommunicationsReqABCSImplFaultPolicy.xml" todir="${oracle.home}/bpel/domains/default/config/fault-policies" overwrite="yes"/>




<target name="UnInstall">

<delete file="${oracle.home}/bpel/domains/default/config/fault-policies/ProcessFulfillmentOrderPT_INOV_OMCommunicationsReqABCSImplFaultPolicy.xml"/>


  1. All the artifacts must have replaced references and imports See: TODO



Example of Policy based Error handling for the process and partner links in bpel.xml:

</BPELProcess>


<faultPolicyBindings>
<process faultPolicy="ProcessSalesOrderEBFFaultPolicy"/>
<!-- Overriding the policy for partnerLinks -->
<partnerLink faultPolicy="SalesOrderFaultPolicy_Custom">
<name>SalesOrderEBS</name>
<name>FulfillmentOrderEBS</name>
<name>InterfaceOrderToCustomerEBF</name>
</partnerLink>
<!-- Or define for each name the same partnerLink fulpolicy?
<partnerLink faultPolicy="SalesOrderFaultPolicy_Custom">
<name>InterfaceOrderToCustomerEBF</name>
</partnerLink> -->
</faultPolicyBindings>
</BPELProcess>

More about Fault policies see “ Fault Management Framework” in Oracle SOA Suite 10.1.3.3.0 New Features Technote (http://www.oracle.com/technology/products/ias/bpel/pdf/10133technotes.pdf )



Adding or customizing wsdl imports and schema locations

$AIA_HOME\PIPS\Industry\Communications\Setup\PIPExtensions\Install\ EndpointConfigurator.properties



For new BPEL processes see Customizing Generated BPEL Process deployment script and configuration

For existing only find the process

## ********************** SyncCustomerPartyListBRMCommsProvABCSImpl **************************
home.dir64.http.hostname = localhost
home.dir64.http.port = 7777
home.dir64 = aia.home/PIPS/Industry/Communications/Setup/AgentAssistedBillingCareExtensions/BRM/ProviderABCS/SyncCustomerPartyListBRMCommsProvABCSImpl
home.dir64.filetypes = esb,esbsvc,wsdl,xsl,xsd,xml
home.dir64.xpath1 = //@schemaLocation
home.dir64.xpath2 = //@location
home.dir64.xpath3 = processing-instruction("oracle-xsl-mapper")
home.dir64.xpath4 = //wsdlURL
home.dir64.xpath5 = //concreteWSDLURL
home.dir64.xpath6 = //soapEndpointURI
home.dir64.xpath7 = /BPELSuitcase/BPELProcess/partnerLinkBindings/partnerLinkBinding/property
home.dir64.xpath8 = //@href

Customize od add new build properties for wsdl imports and schema locations of customized
SEARCH FOR your type EBS/EBF/ABCS/ AIACommonComponent !!!!
Copy the section
GO TO THE END and add new number

## ********************** SyncCustomerPartyListBRMCommsProvABCSImpl **************************
home.dir65.http.hostname = localhost
home.dir65.http.port = 7777
home.dir65= aia.home/PIPS/Industry/Communications/Setup/AgentAssistedBillingCareExtensions/BRM/ProviderABCS/SyncCustomerPartyListBRMCommsProvABCSImpl
home.dir65.filetypes = esb,esbsvc,wsdl,xsl,xsd,xml
home.dir65.xpath1 = //@schemaLocation
home.dir65.xpath2 = //@location
home.dir65.xpath3 = processing-instruction("oracle-xsl-mapper")
home.dir65.xpath4 = //wsdlURL
home.dir65.xpath5 = //concreteWSDLURL
home.dir65.xpath6 = //soapEndpointURI
home.dir65.xpath7 = /BPELSuitcase/BPELProcess/partnerLinkBindings/partnerLinkBinding/property
home.dir65.xpath8 = //@href



Adding or customizing DVM

  1. Customize or add new DVM – DVM file must be copied to the:

$AIA_HOME\PIPS\Industry\Communications\Setup\PIPExtension\SeedData\DVM

  1. Then add DVM deploy to the install script:

$AIA_HOME\PIPS\Industry\Communications\Setup\TEAMExtensions\Install\DVMInstall.xml

<target name="copyDVMs">
<echo message="************* Copying DVM's ******************"/>
<!--TODO REMOVE THIS LINE after ADDING Real DVM -->
<copy file="${aia.home}/PIPS/Industry/Communications/Setup/OrderToBillExtensions/SeedData/DVM/CUSTOMERPARTY95BILLPROFILE95FREQUENCYCODE.xml" todir="${basedir}/${zip.dir}/dvm" overwrite="yes"/>
<delete file="${zip.dir}/${zip.file}"/>
</target>

Note: Now because of DEVs metadata problems different style of the deployment which automatically deploys DVMs in the SeedData directory. But later export/import metadata should be used to do “ESB” health validation as well (see $AIA_HOME\PIPS\Industry\Communications\Setup\PIPExtension\Install\DVMInstall.xml):



<taskdef resource="net/sf/antcontrib/antcontrib.properties">
<classpath>
<pathelement location="${aia.home}/lib/ant-contrib.jar"/>
</classpath>
</taskdef>

<target name="deployDVMCycle">
<for param="file">
<path>
<fileset dir="${aia.home}/PIPS/Industry/Communications/Setup/OrderToBillExtensions/SeedData/DVM" includes="**/*.xml"/>
</path>
<sequential>
<echo>Deploying DVM @{file}</echo>
<exec executable="java">
<arg line="ImportDVM ${http.hostname} ${http.port} ${admin.user} ${admin.password} @{file}"/>
</exec>
</sequential>
</for>
</target>

<!-- Different step calls to import DVM -->
<target name="DVMInstall" description="Build the project" depends="deployDVMCycle">
<!--<target name="DVMInstall" description="Build the project" depends="export,getEsbMetaData,copyDVMs,zipping,import">-->
</target>


How to run deployment scripts and targets Adding or customizing ABCS project



When build script is customized in described way then because of existing setup is possible to run ant straight from the shell. But basic principles to run default build script/different build script/target are described in following paragraphs.

  1. Log in to the shell as the AIA user.

> . $AIA_HOME/bin/aiaenv.sh



  1. Deploy BPEL process

    1. Login to the environment as user that runs OAS(oracle,aia)

>cd $AIA_HOME/PIPS/Industry/Communications/Setup/AgentAssistedBillingCareExtensions/Numeritrack/ProviderABCS/SyncCustomerPartyNumeritrackCommsProvABCSImpl
>ant

Command “ant” without any other parameter runs ant build interpreter trying to find build.xml and each the ant xml build file contains project name and default build target When build script is customized in described way then because of existing setup is possible to run. E.g. build.xml for BPEL process:

<?xml version="1.0" encoding="iso-8859-1"?>
<project name="bpel.deploy" default="deploy"

  1. Deploy PIP customizations:

    1. Login to the environment as user that runs OAS(oracle,aia)

>cd $AIA_HOME/PIPS/Industry/Communications/Setup/AgentAssistedBillingCareExtensions/Install
> ant –buildfile Install.xml | tee AgentAssistedBillingCareExtensions.log

  1. Deploy AIAComponents only:

>cd $AIA_HOME/PIPS/Industry/Communications/Setup/AgentAssistedBillingCareExtensions/Install
>ant -buildfile CopyAIAComponents.xml

  1. Deploy ABCS only

>cd $AIA_HOME/PIPS/Industry/Communications/Setup/AgentAssistedBillingCareExtensions/Install
>ant -buildfile DeployABCS.xml

  1. Deploy Siebel ABCS only(run target from ant build project)

>cd $AIA_HOME/PIPS/Industry/Communications/Setup/AgentAssistedBillingCareExtensions/Install
>ant -buildfile DeployABCS.xml DeploySiebelABCS

Appendix A


CRM Order templates for Common Business scenarios

CRM Sales order consists of Header with Customer Account and Order information and Hierarchy of order lines which represents customer’s wished product and services purchase, disconnect or update expressed by the action on each the order line.

This hierarchy contains from top to bottom:

PM – promotion product

CP – complex product

SB – service bundle product

SP – Service simple product



Example of New Postpaid Subscription Order

PM1---- add

--------- CP parent add

-------------- SB1 add

------------------- SP1 add

------------------- SP2 add

------------------- SP3 add

-------------- SB2 add

------------------- SP4 add

------------------- SP5 add

------------------- SP6 add

PM2---- add

--------- CP parent add

-------------- SB1 add

------------------- SP1 add

------------------- SP2 add

------------------- SP3 add



Example of New Hybrid Subscription Order

PM---- add

--------- CP add

-------------- SB add

------------------- SP add

------------------- SP add

------------------- SP add

-------------- SB(hybrid in name) add

(Somewhere is SB hybrid/Billing Profile Type reference – will be customized and clarified by CRM)



Example of Suspend Subscription Order

PM---- suspend

--------- CP suspend

-------------- SB suspend

------------------- SP suspend

------------------- SP suspend

------------------- SP suspend

Note: Should be provisioned for VIPER (BARADMIN), VPNIN



Example of Termination Subscription Order

PM--- delete

--------- CP delete

-------------- SB delete

------------------- SP delete

------------------- SP delete

------------------- SP delete

Note: Should be provisioned for VIPER, NUMERITRACK, VPNIN, SUREPAY



Example of Resume Subscription Order

PM---- resume

--------- CP resume

-------------- SB resume

------------------- SP resume

------------------- SP resume

------------------- SP resume

Note: Should be provisioned for VIPER (REVERSEBARADMIN), VPNIN



Example of Upgrade/Downgrade Subscription Order

PM1---- same msisdn delete

--------- CP1 updelete

-------------- SB1 delete

------------------- SP1 delete

------------------- SP2 delete

------------------- SP3 delete

PM2---- same msisdn add

--------- CP2 upadd

-------------- SB2 add

------------------- SP4 add

------------------- SP5 add

------------------- SP6 add



Example of buy, remove, update buy bundle or service product to existing Subscription

PM---- -

--------- CP -

-------------- SB1 add

------------------- SP1 add

------------------- SP2 add

------------------- SP3 add

-------------- SB2 -

------------------- SP4 add

------------------- SP5 update

------------------- SP6 delete

-------------- SB3 -

------------------- SP7 -

------------------- SP8 -

------------------- SP9 delete



Example of Change SIM scenario

Change SIM scenario

PM---- -

--------- CP -

-------------- SB MS -

------------------- SP1 SIM(+PrevSIM) update

------------------- SP -

------------------- SP -



Example of Change MSISDN scenario

Change SIM scenario

PM---- -

--------- CP MSISDN(+PrevMSISDN) update

-------------- SB MS -

------------------- SP -

------------------- SP -

------------------- SP