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/>.
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:
CFS Architecture
CFS Components
CFS Metadata modeling
CFS Deployment
Appendix of CRM Sales Order Skeletons
This manual is written for Integration Team Developers
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
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
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 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.
Metadata driven approach of configuring commercial products and offerings into product specifications and define fulfillment tasks within orchestration plan
Dynamic generation of sales order orchestration plan with atomic fulfillment steps like (network provisioning, resource management, billing provisioning, shipment, payments, etc.)
Execution of generated orchestration plan for sales order
Framework for building a provisioning flows, without affecting orchestration part
Following picture depicts a potential solution by using BSSFulfillment in Oracle Order To Bill / Order to Activate AIA PIP.
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:
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.
Following picture depicts logical component view of the BSS Fulfillment flow for the Sales Order requests from enterprise systems providing Order Capture:
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)
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:
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
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:
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.
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.
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.
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:
when different error handling of the business error from the added system is required then branch for error handling must be customised.
when different than FulfillmentOrderEBS enterprise service is planned to be invoked then new branch for the OrderToActivation must be created
when different Sales Order Status update is planned – usually branch in error handling is enough.
generally when other than OOTB BSS Fulfillment System Activation handling is required, then ProcessSalesOrderEBF can be customised
By default is recommended to do this customisation in System Activation EBF if it is possible.
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 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
Change property in AIAConfigurationProperties.xml
<?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>
TODO reference to the ABCS generator
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.
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.
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.
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
ApplicableSystem – in - is regular expression filters.
Filter expression tells for which input system specification is valid.
IsProvisionable – out – is switch for the order line processing
Y - means that specification has to be processed
N - all products with this specification will be ignored
IsComponent – out - 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>
…
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”.
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>
…
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>
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:
Define provisioning system for the Resources in OF_SYSTEM
<row>
<cell>Numeritrack</cell>
<cell>RESOURCE_01</cell>
<cell>InventoryId</cell>
</row>
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>
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>
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>
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>
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>
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.
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.
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
….
This procedure are recommended for the non-production environments
Login into environment as user which runs SOA
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
Go to the products install directory $ORACLE_HOME
>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
Linking versioned sources to the instance
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
Linking versioned config to the instance
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
Add Environment specific enterprise system deployment properties to $AIA_HOME/config/deploy.properties
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
Now you can use svn commands in the linked directories(eg):
> svn commit MergeOnDemand.wsdl --message 'bla bla'
>svn commit --message ‘cvt cvt’
>svn update
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
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>
Add new ant Undeploy target for the new/customized EBS to the
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
When you are adding new routing rule to the new provider to the EBS project you should do following steps.
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\
Export from svn and add it to the Extension location e.g:
\PIPS\Industry\Communications\Setup\AgentAssistedBillingCareExtensions\EBS\Customer\
Uncomment deployment of the routing rules to the:
\PIPS\Industry\Communications\Setup\AgentAssistedBillingCareExtensions\EBS\Customer\
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"/>
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"/>
….
Customize routing rules in JDEV
Add new endpointService.esbsvc file to SVN or all the new esbsvc files
After adding new routing rule – generate DeploymentPlan
Run >ant ExtractESBDeploymentPlan in the project directory or in JDev then new deployment plan is generated
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>
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>
ABCS projects should be generated by Artifact generator
Generator generates fault policy which is located in FaultPolicy sub folder e.g. MatchContactSiebelReqABCSImplFaultPolicy.xml
See: TODO
Copy or svn. Export your ABCS project(without .svn dirs) to the $AIA_HOME\PIPS\Industry\Communications\Setup\PIPExtensions\System\Provider_or_RequestorABCS\
Add deploy/undeploy reference of the new/customized ABCS to the
$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>
All the artifacts must have replaced references and imports See: Error: Reference source not found
Build scripts must be customized. See: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
TortoiseSVN> Rename generated NewABCSImpl_Config.xml to AIAServiceConfigurationProperties.xml
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&SWEExtCmd=Execute&UserName=${siebel.eai.user}&Password=${siebel.eai.password}
For BRM:
eis/BRM
For SIGO:
http://${sigo.http.host}:${sigo.http.port}/Expected_negotiated_path
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" />
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" />
Modify process-deploy target line to this new one dependency value:
<target name="process-deploy"
depends="EditAIAConfigProperties,CustomiseWSDL,validateTask,
compile, deployProcess, deployTaskForm, deployDecisionServices,
bsrPublish"/>
Add empty target CustomiseWSDL before the line:
<target name="validateTask">
<target name="CustomiseWSDL">
<echo>
--------------------------------------------------------------
| Customising WSDL
--------------------------------------------------------------
</echo>
</target>
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.
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>
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>
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>
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>
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>
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:
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”)
Add partner link to the project and create reference wsdl or copy service wsdl to the project. Then:
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.
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>
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>
Add partner link to the project referring to the server deployed service or wsdl artifact deployed to the AIAComponents on the server:
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>
Copy or edit your wsdl or schema in:
$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
Add deploy/undeploy reference of the new/customized artifact to the
$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"/>
All the artifacts must have replaced references and imports. See: Error: Reference source not found
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"/>
Move(ABCS generated) or copy(customized) fault policy to:
$AIA_HOME\PIPS\Industry\Communications\Setup\PIPExtensions\SeedData\FaultPolicies
Add to svn
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"/>
…
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 )
Customize or add new build properties for wsdl imports and schema locations of customized EBS /AIACommonComponent
$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
Customize or add new DVM – DVM file must be copied to the:
$AIA_HOME\PIPS\Industry\Communications\Setup\PIPExtension\SeedData\DVM
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>
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.
Log in to the shell as the AIA user.
> . $AIA_HOME/bin/aiaenv.sh
Deploy BPEL process
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"
…
Deploy PIP customizations:
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
Deploy AIAComponents only:
>cd $AIA_HOME/PIPS/Industry/Communications/Setup/AgentAssistedBillingCareExtensions/Install
>ant -buildfile CopyAIAComponents.xml
Deploy ABCS only
>cd $AIA_HOME/PIPS/Industry/Communications/Setup/AgentAssistedBillingCareExtensions/Install
>ant -buildfile DeployABCS.xml
Deploy Siebel ABCS only(run target from ant build project)
>cd $AIA_HOME/PIPS/Industry/Communications/Setup/AgentAssistedBillingCareExtensions/Install
>ant -buildfile DeployABCS.xml
DeploySiebelABCS
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
HEADER
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
HEADER
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
HEADER
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
HEADER
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
HEADER
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
HEADER
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
HEADER
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
HEADER
Change SIM scenario
PM---- -
--------- CP -
-------------- SB MS -
------------------- SP1 SIM(+PrevSIM) update
------------------- SP -
------------------- SP -
Example of Change MSISDN scenario
HEADER
Change SIM scenario
PM---- -
--------- CP MSISDN(+PrevMSISDN) update
-------------- SB MS -
------------------- SP -
------------------- SP -
------------------- SP