Question
We need to remove a cycle forward event from existing product which is being used for both the prepaid and postpaid customers. We don't want the pin_cycle_forward to pick up prepaid accounts.
There is a product which is a default product for both the prepaid and the postpaid customers. The product has a cycle forward fee of 0 (zero) amount associated with it. The product is associated with the current 700K subscribers. When we run the CF application, all the 700K subscribers are being picked up in the cycle forward application (pin_cycle_forward), out of which 650K are prepaid and they are getting picked up due to this product.
We need to stop the prepaid accounts from getting picked up in the CF application. If any update needs to be done in BRM side, it would have been possible, but in our stack we are using the Siebel CRM, AIA also. So, we need to achieve this in a End-to-End manner, so that all the components are in sync.
Answer
The following is a list of a few possible suggestions, to address the above business requirement.
Option #1 - Siebel is on driver seat for managing the products, and there must be a way to submit a batch process from Siebel to AIA. I assume this is one time effort and will require AIA configuration enhancement to handle the load and recovery. This option will maintain integrity between Siebel, BRM and AIA xref tables.
Option#2 - Run batch process on BRM and then on Siebel and then update cross reference table, in theory this should work but is not documented.
Option#3 - Create your own workflow and let Siebel send data to it, on the other end of your workflow call OOB O2B PIP.
Option#4 - Explore if any ODI KM is available for Siebel batch process which you can use to call O2B process.
Siebel EAI
Approach to massively change a product configuration, keeping BRM and the entire Siebel/AIA stack is in sync |
Firewall Considerations when Siebel is behind a firewall You have AIA deployed on one server, BRM is on the same network. Siebel on the other hand is installed on a server which is behind a firewall. Which ports on the firewall need to be opened from SOA Suite and Siebel networks in order for the integration to work? There are 2 considerations when having a firewall between Siebel and the SOA Suite used by AIA: Firewall Consideration: In this case what you need to do is open the http port on the Siebel side to be reached from the SOA Suite. The parameter SEBL_01.EndpointURI for the following Business Services configured on the $AIA_HOME/config/AIAConfigurationProperties.xml file, provide the host, port which needs to be opened from SOA Suite towards the Siebel server: CreateTroubleTicketSiebelCommsProvABCSImpl 2- Siebel notifies SOA Suite of any Business Event using JMS messages on a queue. Siebel acts as a JMS client to the JMS Server deployed as part of the SOA Suite, the communication between client and server is through RMI. The RMI specification allows the client RMI to communicate to the RMI Server through a firewall. Firewall Consideratiooin: You need to have a Proxy Server between Siebel and SOA Suite. The Siebel server has to have the system property configuration parameters http.proxyHost and http.proxyPort pointing to the proxy between both servers. (Please refer to the document on http://www.rmiproxy.com/doc/ejp/Internet.pdf, page 194, section 15.5 Firewalls and RMI). As explained in the document what happens is that each time you want to enqueue a message in the JMS Queue, Siebel, acting as an RMI client, tries to create a socket connection to the SOA RMI Server. If it fails it will read the JVM System Properties http.proxyHost and http.proxiPort and will try to establish an HTTP Connection to the SOA Server through the Proxy server. |
reference an EAI Value Map in an integration field map source expression The requirement is to convert a field value from it’s external representation into it’s internal representation and visa versa by referencing a EAI Value Map in a Data Map. According to the information included in eAI Volume IV: Business Processes and Rules, Data Mapping Using Scripts, EAI Value Maps, the functions EAIGetValueMap, EAILookupSiebel and EAILookupExternal work on the EAI data map tables. The source expression in an integration field map can reference the EAI value maps. You can use the EAILookupSiebel function for inbound value mapping which uses the following syntax: EAILookupSiebel(“”,[Value],[]) You can use the EAILookupExternal function for outbound value mapping which uses the following syntax: EAILookupExternal(“”,[Value],[]) The following is an example integration field map source expression: EAILookupExternal(“SAP Country”, ifNULL(LookupName(‘COUNTRY’,[Bill To Country]), “USA”)) In this case, EAILookupExternal returns a value from the EAI data map table whereas LookupName returns a value from the LOV table. |
Increase Error Code Process property text lenght for Siebel Workflow Here are the steps to Increase Error Code Process property text lenght for Siebel Workflow : |
Techniques to display the CTI Call Data in Siebel Application While integrating Siebel and CTI with products like Avaya or CISCO typically clients will have following types of requirement:
There are three techniques how these types of requirements can be achieved: |
Troubleshooting – Common Workflow Errors The following lists some commonly encountered errors for Workflow Process Manager. 1. Problem: You activated your workflow but it is not executing Solution: Verify if <Reload Runtime Events> performed. In order to tell if a process has been triggered, Turn workflow logging (EngInv, DfnLoad, StpExec, PrcExec) on. See the Business Process Administration Guide in Siebel Bookshelf for procedures on how to do this. 2. Problem: You revised the workflow process and re-activated it, but somehow the previous workflow information was read. Solution: Restart Siebel Server service to refresh the cached version. 3. Problem: When workflow is triggered by runtime event Display Applet, the workflow is triggered the first time but not subsequently? Why? Solution: Since the DisplayApplet event is a UI event, and the default web UI framework design is to use cache, the event only got fired when the first time a non-cached view is accessed. The workflow gets triggered whenever the event is fired and worked correctly. To make the trigger work each time, you could explicitly set EnableViewCache to FALSE in .cfg file. NOTE: Setting EnableViewCache to FALSE is not recommended as this may severely impact performance. 4. Problem: If a business component has code on WriteRecord and the runtime event fires on Writerecord, which occurs first? Solution: Runtime events fire before any script events. 5. Problem: After you triggered workflow from a runtime event, you do not get the row-id of the record on which the event occurred. Solution: Runtime event passes the row-id of the object BO (i.e. primary BC) and not the row-id of the BC. Retrieve the row-id of the active BC using searchspecs (e.g. Active_row-id (process property) = [Id] defined as Type = Expression and BC = BC name) 6. Problem: Encountered the error <Cannot resume Process <x-xxxxx> for Object-id <x-xxxxx>. Please verify that the process exists and has a waiting status. Solution: This error typically occurs in the following scenario: 7. Problem: How do you access a different business object (BO) from a workflow process? Solution: Workflow architecture restricts the use of 1 BO to a workflow. Use a sub process step to access a different BO. 8. Cannot initiate process definition <process name> Solution: Verify that the workflow process exists, process status is set to Active, and the process has not expired. 9. Problem: OMS-00107: (: 0) error code = 4300107, system error = 27869, msg1 = Could not find 'Class' named 'Test Order Part A' Solution: Make sure at least one .srf file is copied to SIEBEL_INSTALL\objects\<lang> directory |
Automating "Generate Reporting Relationship" on the Position applet To Automate "Generate Reporting Relationship" on the Position applet, you could : 1. Create the script as a Siebel business service. function Service_PreInvokeMethod (MethodName, Inputs, Outputs) busobj = TheApplication().GetBusObject("Assignment"); return (CancelOperation); Note:Work flow Process Manager (Server Request) Business Service instead. This would fire the workflow process which runs on wfprocmgr component. This will then take the SADMIN username to invoke. (OR) Business Service script below: function Service_PreInvokeMethod (MethodName, Inputs, Outputs) try var AsgnBO = TheApplication().GetBusObject("Assignment"); finally return (CancelOperation); |
SBL-DAT-00500 SBL-EAI-04451 when there are 10000 or more records using Web Service based on EAI Siebel Adapter or EAI UI Adapter Whenever a service based on EAI Siebel Adapter or EAI UI Data Adapter business service run to insert a child record when there are already 10000 records associated to the parent, i.e. Contacts for an Accout, Usert to a Responsibility, an error message is received as the following: "Method 'NextRecord' of business component 'User' (integration component 'User') for record with search specification '[Login Name] = "[email protected]"' returned the following error:"There were more rows than could be returned. Please refine your query to bring back fewer rows(SBL-DAT-00500)"(SBL-EAI-04451)" "Method 'NextRecord' of business component 'Contact' (integration component 'Related Contact') for record with search specification '[Middle Name] = "Cont_MN" AND [Last Name] = "Cont_LN" AND [First Name] = "Cont_FN"' returned the following error:"There were more rows than could be returned. Please refine your query to bring back fewer rows(SBL-DAT-00500)"(SBL-EAI-04451)" Cause This behavior is expected as the default 'ForwardBackward' execution mode is used to limit fetched records from the Select statement needed in this kind of operations (as explained in Document 478896.1 – 'SBL-DAT-00500: There were more rows than could be returned. Please refine your query to bring back fewer rows'). In the context of EAI Siebel Adapter and EAI UI Data Adapter business service, the 'ExecutionMode' is a hidden input argument for Insert methods, and included in Bookshelf > Integration Platform Technolgies: Siebel Enterprise Application Integration > EAI Siebel Adpter Business Service > EAI Siebel Adapter Business Service Method Arguments, Table 23 and Table 24 with the following description: "Used to set the direction of a query on a business component. Valid values are ForwardOnly and Bidirectional. The default is Bidirectional. ForwardOnly is more efficient than Bidirectional, and should be used in cases where you need to process a large number of records in the forward direction only (such as for report generation). For more information on executing queries, see the topic on the ExecuteQuery business component method in Siebel Object Interfaces Reference" As opposite to 'ForwardBackward' value, 'ForwardOnly' does not restrict the number of fetched records during the Select statement. Solution In order to implement the 'ForwardOnly' execution Mode in EAI Siebel Adapter or EAI UI Data Adapter services, the argument 'ExecutionMode' has to be added in the method's arguments. For instance, using 'Siebel Account' Business Service (based on EAI Siebel Adapter), InsertOrUpdate method to link Contacts to an Account: a. From Siebel Tools, Business Services, select 'Siebel Account' and expand it. If needed, publish again your service (Web Service, JCA Code Generated). When invoking the service, set the value 'ForwardOnly' to argument 'ExecutionMode'. Repeat the required call. This will enable the option not to limit fetched records and allow the Insert operation for the child record. |
EAI HTTP Transport does not read the sleep time parameter from the enterprise or object manager settings. Instead, it defaults to 120 seconds internally (hardcoded). The default can be changed if you explicitly pass the value as input to the business se Siebel Application does not support REST web services on Siebel 8.0.x version, inbound .REST inbound web service support is GA in release 8.1.1.4.For more information on REST support please refer to this MOS posting: |
How can we increase the default HTTP Sleep Time on outbound web service calls ? EAI HTTP Transport does not read the sleep time parameter from the enterprise or object manager settings. |