Showing posts with label How To?. Show all posts
Showing posts with label How To?. Show all posts

Wednesday, May 11, 2016

Siebel Application Usage Pattern Tracking

Siebel CRM Innovation Pack 2015 onwards, Application usage tracking becomes very easy as it is available OOTB and administrators can setup this in the application to get the details like "who", "when" and "how many times" access any UI/feature in the Siebel application. The best part is, it is so much configurable that administrator can decide what all events need to be captured and analyzed.

This video would be very helpful for Siebel administrator to know how to setup the tracking for Siebel Application Usage and use it for analysis.






Monday, May 9, 2016

Auto Fix the Product structure in Quote/Order Line Items

There are situations when due to some business requirements you make changes in the existing Products/Promotions (configured in Administration – Products screen), may be you add a simple product at the second level hierarchy with a minimal cardinality as 1 or add some attribute with some pre-default value and so on.
So, in these kind of situations, while you are working on Asset based ordering (ABO) processes, on the existing Assets (which are based on such Promotions/Products where structure got changed), system doesn’t bring newly added product (in the hierarchy with min cardinality as 1) in the Quote/Order line item automatically, unless you open the Product Configurator window manually by clicking Customize button and then you will see a warning message there. Then you click on Accept button and after that click on Done button so that system fixes the Line items structure for you.
(Please note that we are just talking about fixing the “Default” structure of the complex product here)
So, bottom line is you have to open Product Configurator window to get it fixed. But what about the scenarios where ABO operations are performed by third party systems with the help of some web-services and no manual intervention would be there. How to get the Promotion/Product structure fixed in such situations?
And the answer is you can make use of headless configuration and achieve this using  RCOIS  business service: Remote Complex Object Instance Service (RCOIS)
So, here below are the steps that you can call as part of a sub-process:
(Let’s assume we are working on some Quote, and the quote line items structure would be fixed)




·        Load EAI
BS Name         :           ISS Copy Service
BS Method     :           LoadEAI
Input Arguments
Input Argument
Type
Value/Property Name
IntegrationObjectName
Literal
7.7 Quote Integration Object
(IO to query Quote)
ParentObjectId
Process Property
ActiveDocumentId
(Row Id of the Quote)
RootId
Process Property
RootId
(RowId of the Root quote line item)
SearchSpec
Expression
"[Header.Id] = '" + [&ActiveDocumentId] + "' AND [Line Item.Root Id] = '" + [&RootId] + "'"
Output Arguments
Property Name
Type
Output Argument/Value




·        Load Instance
BS Name         :           Remote Complex Object Instance Service
BS Method     :           LoadInstance
Input Arguments
Input Argument
Type
Value/Property Name
IntObjName
Literal
7.7 Quote Integration Object
ObjId
Process Property
ActiveDocumentId
RootId
Process Property
RootId
ExternalScript
Literal
Y
Output Arguments
Property Name
Type
Output Argument/Value




·        Get Instance
BS Name         :           Remote Complex Object Instance Service
BS Method     :           GetInstance
Input Arguments
Input Argument
Type
Value/Property Name
IntObjName
Literal
7.7 Quote Integration Object
ObjId
Process Property
ActiveDocumentId
RootId
Process Property
RootId
Output Arguments
Property Name
Type
Output Argument/Value




·        Sync Instance
BS Name         :           Remote Complex Object Instance Service
BS Method     :           SyncInstance
Input Arguments
Input Argument
Type
Value/Property Name
IntObjName
Literal
7.7 Quote Integration Object
ObjId
Process Property
ActiveDocumentId
RootId
Process Property
RootId
TriggerEvent
Literal
Y
Output Arguments
Property Name
Type
Output Argument/Value




·        Unload Instance
BS Name         :           Remote Complex Object Instance Service
BS Method     :           UnloadInstance
Input Arguments
Input Argument
Type
Value/Property Name
IntObjName
Literal
7.7 Quote Integration Object
ObjId
Process Property
ActiveDocumentId
RootId
Process Property
RootId
Output Arguments
Property Name
Type
Output Argument/Value




So, these small set of steps will help in achieving the same end result that you would achieve by manually clicking the “Customize” button on the UI, then “accept” the warning displayed in the Product Configurator window and then click “Done” button.


Wednesday, February 17, 2016

How to perform "Apply Promotion" on Order?

If you are an expert in Siebel Order Management area, you would know that the OOTB workflow "ISS Promotion WS - ApplyProductPromotion" comes very handy for the scenario where we want to apply a Promotion on an existing Quote. Meaning this workflow accepts two input process properties, and System will gives you a complete quote hierarchy with the whole Promotion structure expanded in the Quote line items.

1) ProdPromId        : RowId of the Promotion record
2) SiebelMessage   : Quote hierarchy of IO: PDS Quote

But, there is no OOTB way available to perform the same operation on Order (in one step) as we can do over Quote.

Here below are the simple steps you can include in a wrapper workflow to make this happen. The best part is this complete solution uses OOTB workflows only.

·        Create a dummy Quote in a workflow Siebel Operation step. Get the RowId of the new Quote.

Output : QuoteId

·        Create SiebelMessage of Quote using EAI Siebel Adapter.

Input:
PrimaryRowId
Process Property
QuoteId
OutputIntObjectName
Literal
PDS Quote
                                               
Output:
SiebelMessage
Output Argument
SiebelMessage

·        Invoke WF: "ISS Promotion WS – ApplyProductPromotion", by passing the RowId of Promotion record and SiebelMessage.

Input:
ProdPromId
Process Property
<Promotion Row Id>
SiebelMessage
Process Property
SiebelMessage

Output:
SiebelMessage
Output Argument
SiebelMessage

·        Invoke WF: "SIS OM Quote To Order Workflow PMT Version". This will just convert the Quote into Order.

Input:
Object Id
Process Property
QuoteId

Output:
OrderId
Output Argument
OrderHeaderId


·        Invoke WF: "SISOMBillingSubmitOrderWebService", to submit the Order to downstream system.

Input:
Fulfillment Mode
Literal
Deliver
Object Id
Process Property
OrderId
Order Number
Process Property
<Order Number>
Order Revision Number
Process Property
<Revision Number>
PageSize
Literal
1
           


Friday, August 2, 2013

Two Buttons with same Method Invoked = ShowPopup, displaying different popup applets!!

After reading the title of this post, you might have got some idea what the scenario I am going to talk about today. This is the scenario where I have two buttons exposed on the UI and both having the same Method Invoked = "ShowPopup".

Here below is the snapshot:

1.      Create SR        :           this button is being used for displaying “Create SR Popup Applet”.
2.   Create Order  :           this button is being used for displaying “Create Order Popup Applet”.

For configuring this simple requirement, you can have the following configuration:

“Create SR” Button
“Create Order” Button
Method Invoked = ShowPopup
Control User Properties
o   Popup = Create SR Popup Applet
o   Mode = Edit
Method Invoked = ShowPopup
Control User Properties
o   Popup = Create Order Popup Applet
o   Mode = Edit

No Issue till now. This pretty simple configuration would work fine!

But the problem comes in when there is a need to execute few lines of server script when each button is clicked, something like:
            If “Create SR” button clicked then
                        Set the Profile Attribute “NewEntityCreated” to “Service Request”
                        Call the web service “X” to retrieve some values from other system.
                        After that display the popup applet : “Create SR Popup Applet”

            If “Create Order” button clicked then
                        Set the Profile Attribute “NewEntityCreated” to “Order Entry - Orders”
                        Call the web service “Y” to retrieve some values from other system.
                        After that display the popup applet : “Create Order Popup Applet”

So, now the problem is, both button clicked will invoke the method “ShowPopup” and there is no way to identify which button is actually clicked.

Solution:
To overcome this, we have to have the different “Method Invoked” on each button.

1.      Instead of using “ShowPopup”, invoke the custom method for each button i.e.
a.      Method Invoke for “Create SR” button would be “CreateSR”.
b.      Method Invoke for “Create Order” button would be “CreateOrder”.

2.       Put the server script in PreInvokeMethod of the applet:
if(MethodName == "CreateSR")
            {
TheApplication().SetProfileAttr(“NewEntityCreated”, “Service Request”);
//         Code for calling the Web Service X
//         ……………………………………………………
//         ……………………………………………………
PopupApplet(“Create SR Popup Applet”);
                        return (CancelOperation);
            }
            if(MethodName == "CreateOrder")
            {

TheApplication().SetProfileAttr(“NewEntityCreated”, “Order Entry - Orders”);
//         Code for calling the Web Service Y
//         ……………………………………………………
//         ……………………………………………………
PopupApplet(“Create Order Popup Applet”);
                        return (CancelOperation);
            }
3.      Create a new Function as per below script:

function PopupApplet(strAppletName)
{
var oBSSLM = TheApplication().GetService("SLM Save List Service");
var psInp = TheApplication().NewPropertySet();
var psOut = TheApplication().NewPropertySet();
psInp.SetProperty("Applet Height", "400");
psInp.SetProperty("Applet Mode", "2");                          
psInp.SetProperty("Applet Name", strAppletName);
psInp.SetProperty("Applet Width", "800");
oBSSLM.InvokeMethod("LoadPopupApplet", psInp , psOut);
            }

Limitation of “SLM Save List Service” business service
If there is a requirement to display another popup applet from a button click on a Popup applet, then this business service doesn’t work and you might see the error:
View: <?> does not contain applet: <?>.(SBL-UIF-00401)

So, in this case the only choice is to either use “ShowPopup” method or if you can’t use it because of the scenario explained above (having two buttons with same Method Invoke i.e. ShowPopup) then other option is to use hijack the custom method invoked and invoke the Browser Script (for displaying popup applet) as explained here in earlier post.