Friday, 16 December 2016

Debugging EDQ-CDS / Siebel Matching Issues

The attached document provided by Oracle itself and sharing the same for knowledge purpose only.


Link

Wednesday, 31 August 2016


Siebel Sales Application


Introduction:Sales Cycle plays a critical role in Customer Relationship Management (CRM). It is critical in a way because it is the initial point of contact for any customer. For any CRM application it is important to understand the Sales Cycle. The Sales Cycle starts from Prospecting and ends when a deal is closed and the revenue is realized.
There are various steps involved in an end-to-end Sales Cycle
.
Prospecting --> Lead --> Opportunity --> Quote --> Order --> Closure
1) Prospecting: It involves creating the target database.
2) Lead Generation: A lead is an expressed interest shown by the prospects. It is used by a sales agent to determine whether there is a potential for some sales opportunity.
3) Opportunity Creation: Once a lead is qualified, an opportunity is created.
4) Quote Generation: Sales agent prepare quotes to communicate prices, discounts and special offers that are associated with a product/service which is part of a sale.
5) Order Creation: Once the quote is accepted it is converted into an order.
6) Closure: The deal is closed once the order is created.
The Sales Cycle may differ to some extent depending upon the type of business. But a typical sales cycle would follow the above mentioned steps.
Mapping the Sales Cycle with SIEBEL Sales Application
Following are the important business entities involved in Siebel Sales Application:
1) Accounts
2) Contacts
3) Opportunities
4) Quotes
The lead that is generated through various sources is captured in Accounts screen. It captures the details like - Account Name, Address, Status of the Account (i.e. whether the Account is active/inactive, Qualified, contract pending etc), Account Type (i.e. whether the Account holder is an existing customer, Business, Competitor or Vendor etc.) within the Account Screen.
The Accounts Screen is then linked to Opportunities, Contacts and Quotes.
The Opportunities Screen will have the details such as opportunity name, account name to which it is associated, revenue that could be generated from the opportunity, sales stage (prospecting, qualification, closing, lost), name of sales team, lead quality(excellent, very high, high, fair, poor) etc. The Contacts Screen will have details such as name of the person, phone number, job title, name of the account, address etc. The Quotes Screen will have details related to the quotes that have been generated for a particular order. The quotes may undergo some iteration if there is any negotiation between the two parties. A Quote Screen will typically have the Quote name & number, Revision, date of creation, name of the account to which it is associated, name of sales rep, Status (whether the quote is approved, accepted, in-progress, active etc.)
Advantages of Siebel Sales Application
Following are the advantages of Siebel Sales Application:
1) Siebel Sales simplifies and optimizes the task of planning and managing the sales process by providing complete visibility into the sales cycle, helping companies to plan and manage effective selling activities.
2) By bringing business activity information closer to the user, displayed in one place, sales people can find what they need to work on and then quickly navigate to that object within the application.

3) Each organization may use slightly or sometimes greatly different terminology. Often applications will use industry standard terminology that is not necessarily applicable to a particular organization. Customization allows each customer to use their own chosen terminology. This way it cuts down on time that is required to train users on what each field is for and thus allowing for a more seamless transition to a new application.

Thursday, 28 January 2016

Oracle Enterprise Data Quality (OEDQ) - Auto Monitor CDS Jobs

Hi,

I came across one requirement to auto monitor EDQ jobs without manual intervention.


Requirement:
    We need to send auto alert message whenever EDQ Jobs are down or not running.

Solution:

I have implemented solution as follows:

Created Java program which will need to monitor Jobs and send alert message as accordingly.

File attached:

JMX Code Sample

    The attached files contains following files:

1.       JMX_Status.sh is unix file which calls the Java program. It passes the required parameters while calling java program.
2.       SystemConfigClient.class is compiled java program which needs to be placed in EDQ server.
3.       JMX_JAVA_CLASS.txt is java code.
4.       EDQ_Param.txt is parameter file.
 
 
         







Saturday, 28 November 2015

Oracle Sales Cloud - GROOVY SCRIPT - Currency format

IMPLEMENTATION OF NUMBERFORMAT GROOVY SCRIPT:
Initially a temporary variable gets the value of the field that needs to be formatted. Assuming the current value is in the string format, the length of the value is calculated based on the decimal.
def tempValue = c_Value //e.g. $USD 9967644.09
def currentIndex = tempValue.indexOf('.')
def currencyValue
if(currentIndex<0)
currencyValue = tempValue
else
{
currencyValue =tempValue.substring(0,currentIndex)
}
def currencyLength = currencyValue.length()

After 3 digit formatting, the obtained values are added into a list.
def temp=0
def emptyList = []
if(currencyLength%3 !=0)
temp = currencyLength%3
if(temp!=0 && temp<=currencyLength ){
emptyList.add(currencyValue.substring(0,temp))
}
else
{
emptyList.add(currencyValue.substring(0,temp+3))
temp=temp+3
}
while(temp<currencyLength)
{
emptyList.add(currencyValue.substring(temp,temp+3))
temp=temp+3
}
  • Finally all the values in the list are concatenated as comma separated string and returned as desired US currency format.
String finalCurrency = ""
int i
for(i=0;i<emptyList.size();i++)
{
finalCurrency+=emptyList[i]+','
}
return "\$"+finalCurrency.substring(0,finalCurrency.length()-1) //e.g. $9,967,644
The above code is defined as a global function formatCurrency which could be referred in the text formula field as below,
def currencyValue = OptyRevenue_c
def tempValue = currencyValue.toString()
def finalCurrency=adf.util.formatCurrency(tempValue)//has the formatted value

Oracle Sales Cloud - Creating Appointment - Sample Code

scenario:
when an Opportunity is modified e.g Field “Next Contact Date”  An appointment is created to schedule a meetings:
if (isAttributeChanged(‘NextContactDate_c’))
{
//define variables
def voAppointment = newView(‘AppointmentVO’)
def createAppt = voAppointment.createRow()
def currentDateTime = now()
def apptName = ‘TestGroovyScript’ + currentDateTime
//set the required values to a variable
createAppt.setAttribute(‘ActivityName’, apptName)
createAppt.setAttribute(‘SourceObjectId’,OptyId )
createAppt.setAttribute(‘SourceObjectCd’,’OPPORTUNITY’)
//insert a record in Appointment
voAppointment.insertRow(createAppt)
}

Friday, 27 November 2015

Oracle Sales Cloud - Enable Notifications

The following steps are required to enable notifications in Oracle Sales Cloud R10:

Enable Administrator Profile Values:

All Tasks > Manage Administrator Profile Values 

ZMM_ACTIVITY_DISABLE_EMAIL_APPT_NOTIF = No 
ZMM_ACTIVITY_DISABLE_EMAIL_TASK_NOTIF = No 
ZMM_ACTIVITY_TASK_NOTIF_EMAIL= Yes 
ZMM_ACTIVITY_APPT_NOTIF_EMAIL = Yes 
ZMM_ACTIVITY_EXTERNAL_NOTIFICATION = Yes


Please follow the steps bellow to enable the notification reminders for a user: 

-In the UI click the user name (aka first user) in the right top corner 
-Click Set Preferences... 
-Click Calendar and Appointment Preferences 
-On the Task section 'Notify me if changes are made by others' select the desired options (for example enable 'When I am the owner') 
-On the Task section 'Notify me by' select the the option 'Notification list' 
-Save and logout 
-Login in with another user 
-Create activity and set the owner to the first user 
-Logout and login with the first user 
-Verify that you will have a notification 




Tuesday, 17 February 2015

UCM Survivorship Rules On Custom Extension Columns(X_) of Base Tables


Here is the process to do:

1. Add a new column(X_TEST) to the table S_CONTACT(or any base table).
2. Added the field in the respective BC and IO.
3. Compile objects in to srf.
4. Now restart the siebel server and log in to application.
5. UCM>SurvivorshipRules>Attributegroup>
For the field name picklist without any join "Test"(extension field) will be visible.
6. Now create a Survivorship rule as per your business requirement.
Eg: Attribute group contains: First Name, Last Name and Test
Contact Default: Recent
and in the Attribute group Comparison Rule:History

7. Now using "Person Service" webservice create person operation, insert a record with the following details:

soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cus="http://xmlns.oracle.com/apps/mdm/customer" xmlns:swip="http://www.siebel.com/xml/SwiPersonIO">
<soapenv:Header/>
<soapenv:Body>
<cus:createPerson_Input>
<cus:RealtimePubSub>False</cus:RealtimePubSub>
<cus:_sblesc_lstValue_grt></cus:_sblesc_lstValue_grt>
<swip:ListOfSwiPersonIO ExternalSystemId="ExtSys1">
<swip:Contact operation="Insert" searchspec="" status="">
<swip:Id>1-123</swip:Id> 
<swip:FirstName>X_Recent</swip:FirstName>
<swip:LastName>1stTime</swip:LastName>
<swip:Test>ExtensionColumn</swip:Test>
<swip:EmailAddress>abc@abc.com</swip:EmailAddress> 
</swip:Contact>
</swip:ListOfSwiPersonIO>
<cus:Error_spcCode>?</cus:Error_spcCode>
<cus:Error_spcMessage>?</cus:Error_spcMessage>
</cus:createPerson_Input>
</soapenv:Body>
</soapenv:Envelope>


8. Now modified the message and inserted as below:

soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cus="http://xmlns.oracle.com/apps/mdm/customer" xmlns:swip="http://www.siebel.com/xml/SwiPersonIO">
<soapenv:Header/>
<soapenv:Body>
<cus:createPerson_Input>
<cus:RealtimePubSub>False</cus:RealtimePubSub>
<cus:_sblesc_lstValue_grt></cus:_sblesc_lstValue_grt>
<swip:ListOfSwiPersonIO ExternalSystemId="ExtSys1">
<swip:Contact operation="Insert" searchspec="" status="">
<swip:Id>1-123</swip:Id> 
<swip:FirstName>X1_Recent123</swip:FirstName>
<swip:LastName>1stTime</swip:LastName>
<swip:Test>ExtensionColumn123</swip:Test>
<swip:EmailAddress>abc@def.com</swip:EmailAddress> 
</swip:Contact>
</swip:ListOfSwiPersonIO>
<cus:Error_spcCode>?</cus:Error_spcCode>
<cus:Error_spcMessage>?</cus:Error_spcMessage>
</cus:createPerson_Input>
</soapenv:Body>
</soapenv:Envelope>

9. As per survivorship rules even though first name and extension column are modified they are not disturbed in the base table whereas Email Address is changed to the recent one since email address is not present in the attribute group.

10. Hence it is confirmed that survivorship rules will execute on extension columns as well. 

                                                                                                                                               (Its is only for education /knowledge purpose)

Monday, 9 February 2015

EDQ Sequence Generator Processors


As per the requirement, I need to generate the Sequence in EDQ.

The following is the processor, which will generate the sequence.  

"Add Message Id "

Saturday, 7 February 2015

OCH (Siebel UCM) - OEDQ Real-Time Matching Process

- In real time, when a new record(driving record) come to UCM, Siebel calls EDQ web services to      generate cluster keys for the new record
- EDQ generate the cluster keys and its send back to Siebel
- Siebel stores these new keys and then looks up all records that share any key with the driving record- Once Siebel find a matching key, it submits driving and candidate records to the matching service
- Driver record and all candidate records are send back to EDQ, to be ranked by Match score
- Siebel then pop-up the Matching record with the match score and user can select 'pick' or 'ignore' to commit the record.
Cluster keys are stored in S_DQ_xxx_KEY tables; 


Accounts: S_DQ_ORG_KEY
Contact:    S_DQ_CON_KEY 

Prospects:  S_DQ_PRSP_KEY

Saturday, 27 December 2014

Monitor-OEDQ-Webservice-with-Siebel

Monitor Oracle Enterprise Data Quality (OEDQ) web service when connected with Siebel instance. 

The post will explain, how to visualize the data running through EDQ process:

Here we have two options:

1. Based on process:

 a). Temporary: cancel real-time process from the Director application user     
      interface and select the match processor, the rules hit, data in and data out etc.,related output tabs can view on results browser.

 b). Permanent: we can used writer processor to write output of match processor.


2. EDQ Web service Tester:

   Launchpad -> web Service Tester, by using this we can easily identify the whether the web service is            working as expected or not (for more details please refer the Oracle documentation).

Thursday, 20 November 2014

OEDQ Overview Presentation

Please go through the following link which will give the brief idea on Oracle Enterprise Data Quality overview for quick understanding.

OEDQ Presentation

Thanks

Sunday, 5 October 2014

Guided Merge Functionality in Oracle Customer Hub (Siebel UCM)



The following steps are required to enable guided merge functionality in Oracle Customer Hub (Siebel UCM):

·          The following Workflow to be called from “Guided Merge” button and modify as follows:

o    Name:   UCM Process Merge Request

o    Change following Process properties:

§   EnablePubub : True (default string : False)

§   EnableSE: True (default string:  False)

o    Activate the workflow from client



·          Client: Enable Merge Tasks

o    Navigate to Administration – Business Process–>Task Deployment.

o    Click the Active Tasks tab, then in the Name field, query for UCM*



·          Enable and publish as follows for task based UI screen to perform Guided Merge:

o    Navigate to Administration – Business Process–>Task Deployment.

o    Click the Active Tasks tab, then in the Name field, query for UCM*.

§   UCM Merge Account Request Task

§   UCM Merge Account Task

§   UCM Merge Contact Request Task

§   UCM Merge Contact Task   and restart the server



·          Add Responsibility for accessing “Guided Merge”  features



·          Invoke “Guided Merge”  button :

o    Go to “Existing Duplicates” tab from “Admin-UCM” screen

o    Query and click on duplicate record.

o    Click on “Guided Merge” button will appears in below applet

o    Guided Merge popup applet will be display and do the necessary changes and proceed to next applet

o    Click on submit button



·          Adding new fields to “Guided Merge”

The following changes are required to add new fields in following IC’s at respective IO’s

o    Account:

§   IO: UCMAccountTaskUIMerge ;  IC: Account

§   IO: UCMAccountMerge;  IC: Account

o    Contact:

§   IO: UCMContactTaskUIMerge; IC: Contact

§   IO: UCMContactMerge; IC: Contact



·          Deploy IO’s as follows:

o    Tools > Integration Object

o    Right Click > Deploy to Runtime Database



·          Limitations:

o    Guided Merge functionality supports only for Account and Contact entities only and not support for child entities.




Tuesday, 23 September 2014

Oracle Enterprise Data Quality – About Profilers


Oracle Enterprise Data Quality – About Profiler:

·          The profilers are intended purely to analyze data
·          They are used to quickly understand the data
·          They are used to help find the issues in provided data
·          Profilers  do not 'check' data for business rules
·          Profilers  do not have output filters like ‘valid’ or ‘invalid’ records

The following are some of the different Profilers:

1.     Quickstats Profiler: It is used to analyze overall data i.e. analyze high-level completeness, duplication, and value frequency across many attributes, and highlights possible issues.  Input as ‘any’ data type

2.     Character Profiler: it is used to analyze a number of attributes and counts of the instances of each character. Input as ‘strings’ data type only

3.     Contained Attributes Profiler: it is used to analyze records to find pairs of attributes where one attribute value commonly contains another. Input as ‘any’ data type

4.     Data Types Profiler: it is used to analyze attribute values for their data type e.g String, Number or Date - and assesses data type consistency.  Input as ‘any’ data type

5.     Date Profiler: it is used to analyze a Date attribute for date distribution by day of week, day of month, day of year, month and year.  Input as ‘Date’ data type only

6.  Equal Attributes Profiler:  it is used to analyze records to find pairs of attributes that commonly have the same values.  Input as ‘any’ data type

7.     Frequency Profiler: it is used to analyze value frequency across many attributes.  Input as ‘any’ data type

8.     Length Profiler:  it is used to analyze a number of attributes and measures the length of values by number of characters.  Input as ‘any’ data type

9.     Max/Min Profiler: it is used to find minimum and maximum values e.g:  longest, shortest, lowest and highest.  Input as ‘any’ data type

10.  Number Profiler:  it is used to analyze a Number attribute for number distribution across user-defined bands.  Input as ‘Number data type only

11.  Patterns Profiler: it is used to analyze character patterns, and pattern frequency, across many attributes.  Input as ‘any’ data type

12.  Record Completeness Profiler:  it is used to analyze records for their completeness across many attributes.  Input as ‘any’ data type

13.  Record Duplication Profiler:  it is used to analyze records for duplicates across many attributes.  Input as ‘any’ data type

                 14. RegEx Patterns Profiler:  it is used to analyze a number of attributes for values 
                      that match a list of regular expressions.