Académique Documents
Professionnel Documents
Culture Documents
Mathieu Emanuelli
Joann Alejandro Bravo
Times have changed. Companies are not anymore worried about its products, the production processes or
even the quality, today, what really determines a companys strategy is nothing more than people,
customers or prospects are modeling their market context following their needs and privileging what really
makes life easier. It seems that it is worthy then listening to people, what are their expectations, what
motivates them to come and ask try and buy new products
All these changes are not just coincidences, the world has really changed, human interactions are evolving
faster than never before and the Internet as well as all the communication technologies being conceives
every hour all around the world have finally put people and nothing else, in the top of the priorities and
you know what? We, humans, just love it, this is actually all that we have ever wanted, to be listened and
followed by our equals.
If you consider this new landscape, we are sure that we will not have to make big efforts in order to
convince you that you as an individual but particularly, as a company, you need to listen people around in
order to adapt and improve your offer for all your prospects and clients. The CRM (Customer Relationship
Management) is just a grandiose combination between new technologies and a new world giving more
and more importance to each individual opinion and broadcasting those opinions everywhere in just one
second.
This book is intended to be a tool for all those companies using Oracle CRM On Demand and looking for
better means to make the customer dreams become reality. If you have ever wanted to optimize your
CRM configuration or integrate your CRM to the open internet world, this book is for you.
In the book, youll find three indicators for each How To:
Time to result : how much time the user need to apply successfully
Complexity: scale from 1 to 5
Gap with out of the box cap: What is the gap with Oracle CRM On Demand out of the box
capabilities: 0% is a standard functionality, 100% is a complete custom development
This project was born from our customer requirements. Yes, as many of you, listening to our customers
gave us the key to this project. We start at the beginning, gathering up every single requirement
demanding a high level of complexity in our projects implementation. In the earliest phases we intended
those files to be exploited as a part of our internal knowledge data base.
A couple of implementations later and some years of experience shown us that some expected features
requests came over and over again in our projects and most of the time, those request came from the
Oracle CRM On Demand administrators looking for the way to make easier the use of the application or
wanting to integrate the application to other tools available in the internet.
When the trend was confirmed, we decided to share our experiences with all the Oracle CRM On Demand
community by writing this book that contains the functional and the technical points of view for every
application improvement, we hope that you will find this information useful and that you will enjoy as
much as we did, its implementation.
Mr. Mathieu Emanuelli is currently CRM Practice Manager for a Swiss Consulting and Systems Integration
(CSI) company. He has been working with Oracle CRM On Demand from the earliest phase of the product
(has implemented release 12), in the first instance as user and administrator for his former company and
lately as CRM consultant and product expert, managing implementation teams in international projects all
around the world.
You can find more details about Mathieus work checking his profile in LinkedIn (type Mathieu Emanuelli)
Currently Mr. Joann Alejandro Bravo is a senior CRM consultant, specialized on SaaS (Software as a service)
applications and Social CRM. In the past he has ensured the implementation as team member and team
leader for multiple projects using Oracle CRM On Demand
You can find more details about Joann Alejandros work checking his profile in LinkedIn (type Joann
Alejandro Bravo)
THANKS TO
Many thanks to our customers for all the new challenges during implementations, seeing Oracle CRM On
Demand evolves in several business environments allow us to identify which information is worthy for
most of the people using the application.
Of course, thanks to our company, Business & Decision, for being the central quarter for the Oracle CRM
On Demand team. That was always a great opportunity to be involved in many challenging projects in
different industries. Thanks to our colleagues and/or external people we had the chance to meet and/or to
work with: Jonathan Fouque, Elios Gibanel, Sandrine Wens, Amine Hammi, Steffen Soldner, Josselain
Prost, Laurent Petitguyot for their support, their imagination and their creativity.
Thanks to Oracles staff for being there and interact with us when particular questions concerning the
application came up.
And last but not least, of course our beloved families, my wife and my children to have seen sawing daddy
working hard after an official day work! Thanks as well to the fabulous Fab for being understanding during
the work at home and all the support and encouragement.
TABLE OF CONTENT
How can I create a link between Oracle CRM On Demand and Skype?................................................... 120
How can I use Skype applet for support? ................................................................................................. 122
How can I create satisfaction survey, send it to customer and measure feedback? ............................... 125
How can i create a link between Oracle CRM On Demand and Gmail? ................................................... 134
How can i send email with Gmail or Microsoft Outlook? ........................................................................ 136
How can i embed Google capabilities? .................................................................................................... 143
How can i embed Google talk into Oracle CRM On Demand? ................................................................. 146
How to create Web Applet with Google Maps?....................................................................................... 148
How can I send SMS from the application (using email)? ........................................................................ 150
How can I send voice SMS from the application (using email)? .............................................................. 156
How can I send SMS from the application (using http request)?............................................................. 161
GENERAL CONFIGURATION
People want their life to be easier, and lets face it, we all want the same. When it comes to the adoption
of a new application people are often asking: what is the added value that I am getting from it?
As every IT Consultant knows using out of the box applications is not always easy and, for sure, never
totally adapted to the business needs. This is not because applications are not well developed but due to
the fact that each company has its own way to complete processes and so its own customization needs.
Consider all the information before and you can be sure about one thing, users want the applications to be
as customized as possible in order to make little effort when using it, after all the only way for users to
adapt a new tool is by getting more from it than they should give.
This chapter is dedicated to some of the more recurrent tricks used during the implementation for our
clients, some of them concern first level data quality, some others take care about the form and the
presentation and some others just integrate new features being added, in all cases as you will see, our
efforts strives to ensure the adoption of the tool at every level of the company since, as you probably
know, users are the success of technological evolution.
Complexity (1 to 5)
40 Mins
Level 3
45%
INTRODUCTION
Native relationships between different records of the same type are not available in OCOD, in fact only
accounts (and from V19, opportunities as long as we know) propose the possibility to link internally their
records. In companies everyday operations yet, users are looking for a way that easily allows defining
connections and hierarchical relationships
And what about a company wanting to execute an action plan composed of a sequence actions what
to do?
Create a custom field called Related Activity ID which would store the parent Appointment Id
Create a web applet that embed the code for the related item
Create a Report which will show the related Tasks for this particular Contact Call
Embedded the report on the Call detail page
We have created a new field for the object Activity, called Related Activity ID and we have added it to
the page layouts:
To understand:
Yellow code: custom field ID (in this example we used an Indexed text field)
Fields with the format %%%field%%% are tags coming from the application
This script should work for:
Tasks:
Task Standard
Visit Report
Appointments:
Appointment Standard
Visit
Once you add the web applet to the layout it appears like this:
Tasks related to an Appointment (when you are on Appointment Standard or Visit page layout)
Tasks related to a Task (when you are on Task Standard or Visit Report page layout)
When you click on this button the New Task creation page would be opened with the Related Activity ID
field filled in automatically:
CREATE EMBEDDED REPORT
But how is this contextual section alimented and updated? Start going to the reporting tool and building a
report which looks like this:
Upon Save or Cancel, you will return to the Appointment or Task page layout and the Related Tasks web
applet is automatically refreshed in a few seconds to reflect the change:
Notice that we have chosen the indexed short text field to store the related Activity ID so we need to ask
for this information by adding the filter is prompted on this field
Now, you can integrate the contextual report in the application using the following code
<iframe src='/OnDemand/user/analytics/saw.dll?Go&Path=%2fshared%2fCompany_HE36781JAZ2_Shared_Folder%2fRelated+to&Options=rfd&&Action=Navigate&p0=1&p1=eq&p2=Activity.INDEXE
D_SHORTEXT_0&p3=%%%Id%%%'frameborder="no" width="100%" height=200></iframe>
To understand:
Yellow: column technical name for the custom field
Now you just need to add the web applet code to the script described previously, as follows:
newTD.innerHTML = "<div
onclick=\"doNavigate('TaskNew?OMTGT=TaskEditForm&OMTHD=ActivityNewNav&TaskEditForm.Indexed
Short Text
0=%%%Id%%%&TaskEditForm.Type=To+Do&OMRET0=TaskDetail%3fOMTGT%3dTaskDetailForm%26OMT
HD%3dActivityDetailNav%26OCTYPE%3d%%%Type%%%%26TaskDetailForm.Id%3d%%%Id%%%&OCTYPE=
To+Do',false, this, null);\" onmouseover=\"toggleNavButton(this);\"
onmouseout=\"toggleNavButton(this);\" onkeypress=\"onButtonPress(this);\"
class=\"buttonChildTitleBarTD\" id=\"OpenActivitiesTB31607487*1\"> New Related
Task </div>";
Title_obj.parentNode.insertBefore(newTD, Title_obj.nextSibling );
}
</script>
<iframe
src='/OnDemand/user/analytics/saw.dll?Go&Path=%2fshared%2fCompany_HE36781JAZ2_Shared_Folder%2fRelated+to&Options=r&&Action=Navigate&p0=1&p1=eq&p2=Activity.INDEXED_
SHORTEXT_0&p3=%%%Id%%%'
frameborder="no" width="100%" height=200></iframe>
To understand:
yellow: part of code to create the button associating the activities
Blue: part of the code to enclosed the contextual report
Complexity (1 to 5)
40 Mins
Level 3
30%
INTRODUCTION
BUSINESS CASE
Service Requests from tasks
Imagine you or your client wants to create a service request from a task with the capability to keep the
contact filled in into the task layout that is what he ask us, we quickly understood that there were no
relation join task and service request since service request was not a tasks related information.
Using standard OCOD functionalities, it is impossible to create a Service Request from the detail page of an
activity since service request is not a related section for the object activity. It gets even harder when in
addition you need to copy some information (one or more values in different fields) coming from that
activity in the new service request detail what can you do?
The following screenshot illustrates the page launched after the click:
The first thing to do is to find a similar page to the one we want to generate when clicking the button that
we will insert. We have decide to start from the contact page as, in the related information sections you
can add a new service request (treatment) by clicking the button new
Now we need to copy the URL of this page. Be careful!!! do it from the edition page (instead of the
consultation page) you should get something like:
https://secure-ausomxXXX.crmondemand.com/OnDemand/user/ServiceRequestNew?OMCR0=AIIAO2B12&OMTGT=ServiceRequestEditForm&OMTHD=ServiceRequestNewNav&OMCBO=Contact&OMRET0=
ContactDetail%3focTitle%3d%2b%26OMTGT%3dContactDetailForm%26OMTHD%3dContactDetailNav%26
ocEdit%3dY%26OCTYPE%3dClient%26ocTitleField%3dFull%2bName%26ContactDetailForm.Id%3dAIIAO2B12&OCNOEDITTYPE=Y&OCTYPE=
Modify the URL to meet the following format:
https://secureausomxXXX.crmondemand.com/OnDemand/user/ServiceRequestNew?OMCR0=%%%Contact_Id%%%&O
MTGT=ServiceRequestEditForm&OMTHD=ServiceRequestNewNav&OMCBO=Contact&OMRET0=ContactD
etail%3focTitle%3d%2b%26OMTGT%3dContactDetailForm%26OMTHD%3dContactDetailNav%26ocEdit%3
dY%26OCTYPE%3dClient%26ocTitleField%3dFull%2bName%26ContactDetailForm.Id%3d%%%Contact_Id%
%%&OCNOEDITTYPE=Y&OCTYPE=
To understand:
Blue: your POD
Yellow: The ID of the contact
Green : the variable for the Contact ID that will replace the ID contact (yellow)
10
Figure 14: Web applet hosting the code to create custom related information with custom behavior button
The script for the button is composed of the URL on edition mode plus the button code.
Only two modifications to the script:
1. Copy the URL created previously as indicated (see URL highlighted in blue) and
2. Give a name to the button (name of the button highlighted in yellow here Nouvel Traitement:
To understand:
Add this web applet to the layout and thats it, now, you can create service request whenever you want
from the activities layout.
11
Complexity (1 to 5)
10 Mins
Level 2
90%
INTRODUCTION
Users adoption depends, frequently, on how ergonomic the application is; people do not want to change
over and over again from a screen to another. Centralizing work tools is one of the greatest challenges on
a project.
Or
We would like to have one or many links show in the action bar
12
Figure 17: Global web applet created to embed a web applet in the action bar
Figure 18: Global web applet created to embed a web applet (more complex) in the action bar
We could imagine a more complex code, defining a table including several links:
13
Complexity (1 to 5)
40 Mins
Level 3
70%
INTRODUCTION
Taking advantage from a pre existent record is a common practice that very often users which to apply.
After all, why should I create from scratch my record if there is another containing almost the exact values
that I need?
Note: you could modify URL addresses using tags coming from Oracle CRM On Demand
14
BUSINESS CASES
Identical opportunities and several activities responding to the same problem
This trick starts as a requirement from one of our clients who wished to be able to copy opportunities on
his environment. Filling in the whole information in opportunities takes time because of the number of
fields in this object so he wanted to take advantage from all this typing.
Once we found a technical solution, we realized that this code could of course be useful when copying
records, but more than that, with some little variations, the code could work when initializing new records
from a particular one. Lets see how?
To define the content of the opportunity that will be created, you need to go to the opportunity edition
page and copy its url, then edit this url in order to initialize as you want each field (this expression was
built using the weblink editor):
15
Figure 20: Code to copy a record pasted in the web link definition
/OnDemand/user/OpptyCreateNewPageDefault?OMTGT=OpptyCreateEditForm&OMTHD=OpportunityNe
wNav&OMRET0=OpportunityHomePage&OpptyCreateEditForm.Primary Revenue Close
Date=%%%Primary Revenue Close
Date%%%&OpptyCreateEditForm.Description=%%%Description%%%&OpptyCreateEditForm.Account=%%
%Account%%%&OpptyCreateEditForm.Account
Id=%%%Account_Id%%%&OpptyCreateEditForm.ZDate_26=%%%dAward_Date%%%&OpptyCreateEditFor
m.ZPick_11=%%%plIntegration_Center_IC%%%&OpptyCreateEditForm.ZPick_10=%%%plSBL_Geographical
_Zone%%%&OpptyCreateEditForm.ZPick_17=%%%plSegment%%%&OpptyCreateEditForm.ZPick_25=%%%
plTHINT_Status%%%&OpptyCreateEditForm.ZPick_18=%%%plTHINT_Category%%%&OpptyCreateEditFor
m.ZPick_4=%%%plSBL_1%%%&OpptyCreateEditForm.ZDate_29=%%%dRFP_Date%%%&OpptyCreateEditF
orm.ZPick_13=%%%nP1_C%%%&OpptyCreateEditForm.ZPick_14=%%%plP2_%%%&OpptyCreateEditForm.
ZPick_24=%%%plCountry_of_Origin%%%&OpptyCreateEditForm.ZPick_6=%%%plActivities%%%&OpptyCre
ateEditForm.Currency
Code=%%%Currency_Code%%%&OpptyCreateEditForm.ZNum_21=%%%pcExpected_Gross_Margin%%%&
OpptyCreateEditForm.ZPick_21=%%%plSubActivities%%%&OpptyCreateEditForm.ZPick_15=%%%plScenari
o%%%&OpptyCreateEditForm.ZPick_14=%%%nP1_C%%%&OpptyCreateEditForm.ZDate_30=%%%dPropos
al_Due_Date%%%&OpptyCreateEditForm.ZPick_9=%%%plCompetitiveNegociation%%%&OpptyCreateEdit
Form.OwnerAlias=%%%Owner_Alias%%%&OpptyCreateEditForm.ZPick_20=%%%plUnit%%%&OpptyCreat
eEditForm.ZPick_22=%%%plSubSegment%%%&OpptyCreateEditForm.ZCur_1=%%%cGlobal_Amount%%%
&OpptyCreateEditForm.ZPick_12=%%%plLegal_Entity%%%&OpptyCreateEditForm.ZCur_3=%%%cThales_A
mount%%%&OpptyCreateEditForm.ZPick_8=%%%plBusiness_Unit_BU%%%&OpptyCreateEditForm.ZPick_
19=%%%plTHINT_Type%%%&OpptyCreateEditForm.ZMSPick_1=%%%msplBid_Currency%%%&OpptyCreat
eEditForm.ZPick_7=%%%plBid_Type%%%&OpptyCreateEditForm.ZPick_32=%%%plDepartment%%%&Opp
tyCreateEditForm.ZPick_30=%%%plTHINT_Client_Type%%%&OpptyCreateEditForm.ZPick_31=%%%plCivil_
_Military%%%&OpptyCreateEditForm.ZText_32=%%%stOpportunity_Group%%%&OpptyCreateEditForm.Z
Pick_35=%%%plInternalExternal%%%&OpptyCreateEditForm.ZCur_19=%%%cBid_Currency%%%&OpptyCr
eateEditForm.ZNum_20=%%%pcP3_%%%&OpptyCreateEditForm.Indexed Pick
16
1=%%%Indexed_Pick_1%%%&OpptyCreateEditForm.ZText_31=%%%stBid_Manager%%%&OpptyCreateEdi
tForm.Sales Type=%%%
Now you can modify the values after the equal sign (=) in order to initialize your record with fix values if
needed.
Complexity (1 to 5)
10 Mins
Level 1
100%
INTRODUCTION
Concatenated fields are very often useful when a particular naming rule is defined for an object,
configuring your system this way avoid the need for you asking users to keep in mind the rule so they can
focus on the business needs.
BUSINESS CASES
Naming opportunities
Imaging a company willing to name all its opportunities coming from leads following this rule:
Account name + Oppty ID
WHAT DO WE WANT TO DO?
We want to populate the field opportunity name (or any other field) with the predefined content
HOW CAN WE DO?
The general syntax to use when concatenating fields and including blanks between is:
[<Field_name>]+ ' ' + [<Field_name>]+ ' ' + [<Field_name>]+ ' ' + [<Field_name>]
So you can now define a default value and a workflow to update the field, hereafter the concatenation for
the field opportunity name
17
Notice that, the workflow concatenation is only available for data in characters (exclude dates, timestamp
or integer). If you want to concatenate with one of these type, use the function ToChar.
Complexity (1 to 5)
15 Mins
Level 2
100%
INTRODUCTION
Automatic calculation with dates used to be one of the better known limitations on OCOD. Values
depending on time variables were just impossible to modify so very often system administrators had to
use contextual reports like web applets to show the information. Fortunately, this is not a problem
anymore.
Warranties expiring on
Imagine you need to fill in a date field when a particular action like a change on the opportunity sales stage
is executed, or just think about the case of this example, a client trying to calculate the end date for a
warranty how can you do?
BUSINESS CASES
18
Using a post default value for the field we that we want to update (and adding a workflow if it changes on
modification) with the following syntax:
[<PurchaseDate>] + Duration('P2Y')
Figure 22: Example of syntax pasted in the field to calculate the end date of warranty
Complexity (1 to 5)
20 Mins
Level 1
20%
INTRODUCTION
Data quality is a recurrent question when working with data bases. Sometimes is very important to keep a
unique format for specific fields in order to ensure data identification or integration. This how to will show
you how to automate and be sure that your data will follow the format that you define.
Often companies wish to use their customers data on marketing campaigns that are including information
coming directly from the data base. Imagine for instance that you are generating a personalized e-mailing
campaign, would you like to include names combining random upper and lowercase?
WHAT DO WE WANT TO DO?
We would like to ensure that a particular field will be filled in with uppercase only. We do not want any
workflow to run when saving the record, instead of that, we need the function to be active while typing
the field value
19
20
To understand:
Yellow: Field ID where we would like functionality activated
SOME APPLICATION EXAMPLES
Using a field as a part of the primary key of a record in interfaces
Imagine that you are interfacing 2 different systems, updating some particular information for the same
set of records based on a key. Imagine as well that one (or several) field making part of the primary key is
systematically filled in with caps for one of the systems how can you ensure the primary key
correspondence? We are guessing that after this reading you have a particular idea in mind dont you?
Complexity (1 to 5)
15 Mins
Level 2
100%
INTRODUCTION
Some standard functions provide users with the capability to join two object non-related in a
conventional way by using JoinfieldValue. Sometimes this function is not enough since it works only
between a well defined group of objects. Do not worry if you want to go further, we have found an
alternative solution for these particular requirements: just use reports capabilities and build a custom
lookup are you wondering how? Keep reading
BUSINESS CASES, WHEN SIMPLE CUSTOM LOOK UP IS USEFUL
Many Oracle CRM On Demand users would like to fill in fields with a value coming from a non-linked
object simulating thus, a standard lookup (that appears with the following icon: )
Oracle CRM On Demand allows users to define relationships between tables (known as objects). These
relationships are defined in many ways including related information (for 1 to many relationship) or the
lookup for 1 to 1 relationship.
21
The most frequent example concerning this functionality is the creation of a hierarchical relationship
inside a particular object. Lets consider for instance a marketing program, launched in Europe and
composed of many campaigns linked to the marketing program. In this case the simplest way to create this
non-standard relationship is the custom look up.
WHAT DO WE WANT TO DO?
It is possible to simulate a look up behavior by creating a custom look up based on reports. This how to
will show you how you can create a simple custom look up catching one field content coming from the
report. (Notice that you will find the equivalent functionality for more than one field later on this book)
So lets create a report containing the required information. Please notice that this report will include a
link sending the information to the right field:
FIND OUT THE FIELD ID OF THE TARGET FIELD (FIELD TO FILL IN)
We need to know the Oracle CRM application field id that we will fill in by clicking on the report.
1. On Firefox, select the field you would like to fill in
2. Right Click
3. Select view selection code
22
Yellow: name of the link that will appear in the place of the value
To understand:
23
4.
After the execution of the previous steps your report will contain two columns as shown:
<html>
<script type="text/javascript">
function Callback(Line)
{
var Line = Line
var theform = window.top.opener.document.getElementById("ServiceRequestEditForm");
for (n=0;n<theform.elements.length;n++) {
if (theform.elements[n].name == "ServiceRequestEditForm.Product")
{
theform.elements[n].innerText=Line;
theform.elements[n].value=Line;
}
}
window.close();
}
</script>
</html>
24
To understand:
Yellow: page name
Blue: Field id (catch in previous step)
Note: usually the field ID is based on the following pattern: page_name.Field_name
CREATE A WEB LINK
Note: To run a custom report we are going to need to click the Edit button in the target record detail
page. If you want to run the custom lookup without editing the page, please read the HowTo How to run
a custom lookup without clicking on page Edit Button on a single object
We need now to create the custom function into a report to catch the expected value that will feed our
CRM target field. To do this we just need to create a web link with the report path to run it from the target
record detail page in the CRM application:
25
Complexity (1 to 5)
50 Mins
Level 3.5
20%
INTRODUCTION
Custom look ups are quite useful and I think we all agree about it, although, when using it, many of us
have asked why we cannot use it from the simple view page with not need to previously click the edit
button surprisingly, is possible keep reading if you want to find out
WHAT DO WE WANT TO DO?
We would like to create a custom button that runs a custom look up in edit and detail page:
CODE TO INSERT
This code has been created to launch a custom report service request in order to call a report related on
product. That aims to catch a product into a Service Request through a custom lookup.
The code is the following:
<script>
function openLink(target) {
// Open the reportrelated on custom lookup
var str = "https://secureausomxXXX.crmondemand.com/OnDemand/user/analytics/saw.dll?Go&Path=%2fshared%2fCompany_30
701_Shared_Folder%2fProduct+Workaround&Options=rfd&Action=Prompt";
var editButton = " Edit ";
var tdtd = document.getElementsByTagName("td");
for (var i = 0; i < tdtd.length; i++) {
26
var sr ="Consumer";
var target ="";
if(currentPage != null && currentPage.innerHTML != null && (currentPage.innerHTML.match("^"+sr)==sr )
){
target ="Service";
var tdtd = document.getElementsByTagName("td");
for (var i = 0; i < tdtd.length; i++) {
// this button will be displyed close to text "Select product"
To understand:
Yellow: repot path. Be aware to change the POD
Blue: target page name in edit mode
Green: text closed to the button will be displayed
Objectives of this code are to:
1. Create a button and put in the layout in Edit and Detail pages for lead and deal Objects
2. Switch the page in Edit mode if the page is not to allow the custom lookup to run
3. Open the report that embed the code for sending values into the layout
27
** Some comments have been added to let you understand code lines.
EMBED THIS CODE IN O COD
The code has to be defined into a Global web applet, displayed in the action bar:
Note: Do not forget to add this global web applet in the action bar and to create the custom look up.
Complexity (1 to 5)
30 Mins
Level 3,5
40%
Lets say that this How to is the second of my favorites (I let you find the first one in the book)
I am sure that you know the standard custom lookup, I mean the one that send one value from a report
into the application. Then, here is the evolved version of it ! This custom look up will be able to fill in
several values in one shot, from a report to the application.
BUSINESS CASES, KEEPING KEY IDENTIFICATION
Imagine that you want to recover data concerning an order in the application; you want the ID in order to
keep a primary key relationship but also, the order number coming from an external application. Obviously
you want to do it with the minimum number of clicks
INTRODUCTION
28
Fields that will receive information should be text fields and should not be defined as Read only:
29
Figure 36: Edit page source and search the system name thanks to fields display name
When the source page is displayed, do a search (Ctrl + F) based on the field display name. The system
name follows the format: Page_name.field_name
30
Now that we have the containers waiting for the data, we need to create our report:
IN ORACLE ANSWER (REPORT)
We need now to create a report that will feed our custom fields:
CREATE YOUR REPORT (STEP 1)
Select expected columns to build your report:
As we want to prompt orders (opportunities) owned by the contact we are based on, we will add a filter
based on the contact ID:
31
Figure 39: filter to display only opportunities owned by the displayed contact
We will use a custom format for all data displayed on this column based on JavaScript function (Callback):
32
To understand:
Yellow: is the link name
In the fx defined in our column we must find all the parameters that will be used in the future:
In our example, we need to find two fields:
33
To understand:
Yellow: two fields we are interested in to fill in our application
Blue (?): the sign ? allow us to separate both fields. Before selecting this key, be sure that it will not be
used in any other column
Note: we can also use the sign || to define a concatenation function as follows:
"- Product Category"."Parent Product" || '?' || "- Product Category"."Category Description"
Now we have to host the JavaScript that will parse our report and run the callback function to fill in our
two application field:
34
35
To understand:
Yellow: fields system name
Blue: page name that we want to feed
<html>
<script type="text/javascript">
function Callback(ProgramID)
{
var position = ProgramID.indexOf('?');
var MyProgramID = ProgramID.substring(0,position);
var MyProgramName = ProgramID.substring(position+1);
var theform = window.top.opener.document.getElementById("DealRegistration.EditForm");
for (n=0;n<theform.elements.length;n++) {
if (theform.elements[n].id == "DealRegistration.EditForm.Product Interest")
{
theform.elements[n].innerText=MyProgramID;
theform.elements[n].value=MyProgramID;
Note: To create a custom report with many parameters to feed, objects and method can be lightly
different. You have to use the following syntax:
36
}
if (theform.elements[n].id == "DealRegistration.EditForm.ZText_2")
{
theform.elements[n].innerText= MyProgramName ;
theform.elements[n].value = MyProgramName ;
}
}
window.close();
}
</script>
</html>
CREATE THE LINK BETWEEN ORACLE CRM ON DEMAND AND ORACLE ANSWER
Now we have to create a web link that will run the prompted report:
RETRIEVE THE REPORT PATH
To find the report path, run it in internet Explorer, right click on it and select properties:
37
38
https://secureausomxXXX.crmondemand.com/OnDemand/user/OpportunityDetail?ocTitle=%%%Indexed_Short_Text_0
%%%&OMTGT=OpptyDetailForm&OMTHD=OpportunityDetailNav&ocEdit=Y&OpptyDetailForm.Id=%%%stI
D_Commande%%%&OCTYPE=Nouvelle+activit%C3%A9&ocTitleField=Name
Complexity (1 to 5)
40 Mins
Level 1,5
100%
INTRODUCTION
Consolidating figures could be a tricky question with CRM. Sometimes users just are not that sure about
the information that they are entering in CRM. You might want to ask accurate updates on the database so
you can take information as real facts, thus, it would be worthy for you to prevent users from changing the
Opportunity Sales Stage picklist value from Closed/Lost or Closed/Won back to any of the earlier stages
(say, Short List, Negotiation, etc.)
BUSINESS CASES, WHEN CLOSED OPPORTUNITY MODIFICATION RESTRICTION IS USEFUL
Matching financial and commercial information
Imagine that you need to validate your financial figures with commercial information coming from your
sales force. We are guessing you do not want to find any inconsistency that push you make many calls and
ask to a half of your sales why information does not match what to do? What about Forcing your users
to announce the final decision at the real end of the opportunity and not being able to get back if they do
not?
WHAT DO WE WANT TO DO?
We want to block opportunities with status Closed. Does not matter if they are Won or Lost.
This can be achieved by writing a field validation rule for the Sales Stage Id field in the Opportunity
record-type. Usually field validation rules are written directly for the field that one wants to control, but in
this case, you cannot write these rule for the Sales Stage field, since the field validation option is disabled.
Instead of this, you can use the Sales Stage Id field to achieve the same result
1. Locate Sales Stage Id on the Opportunity Field Setup page and click the Edit link.
2. Enter the following rule in the Field Validation field:
39
If you want only users with a certain role, such as the Administrator, to have the ability to change a
closed opportunity to one of the earlier stages, then you can exclude that user role in the field
validation rule:
3. Enter the error message that should be displayed when a user tries to change the sales stage value on
a closed Opportunity record.
4. Click Save.
5. Test the field validation rule to make sure it works as you expect.
If you want to see more details, including more pictures, check out this document on My Oracle Support:
Restricting Opportunity Sales Stage Value Using Field Validation (Doc ID 841398.1: You'll need to sign in
with your My Oracle Support account to access the document.)
Figure 47: Validation message after applying workflow to restrict opportunity status changes
40
Complexity (1 to 5)
30 Mins
Level 2,5
100%
INTRODUCTION
Sometimes, is worthy for users to follow up the evolution of certain variables that will, in consequence,
facilitate and encourage the team work by allowing managers to help at the right moment their team
members.
BUSINESS CASES, WHEN MONITORING VARIABLES IS USEFUL
Following up opportunities evolution
Imagine for instance, a sales rep. who has created an opportunity for the current year but it is been a while
since he modified it for the last time. As a manager, you would like to see how could you help him to
concretize his opportunity and win it but how could you know who needs support at the right moment?
Well in this document we will build a report concerning opportunities (you can do the same with any
object) that will let you know when a particular field was modified for the last time and what was its
previous value.
Contact form
As you can imagine from now, many uses are possible with this functionality, lets go deeper and see some
other examples.
41
Create pivot fields for the object that contains the date and the previous value for the fields that you
want to follow up. In our example this object is the opportunity and we will follow up the field Sales
Stage.
We need to create two pivot fields for each monitored field. The first one keeping the field previous value
and the second one will indicate the last modification date not for the record but for the field being
monitored.
Figure 48: Example of pivot field used to monitor some variables evolution
STEP 2: WORKFLOWS
Once the fields are available we will need to populate it automatically with the right information. To do
this, lets create a workflow for the field taking the information as shown on the figure below:
The condition triggering the workflow is the field (and no the record) modification. The function PRE
allows you to compare the previous value to the new one.
42
Note:
-
Please notice that this reports needs at least two days to be finalized since new customized fields
are available on analytics just the day after its creation.
If you need to go farther on modification history, you can use the same philosophy to explore
previous modifications, but you will have to create two additional fields each time.
Time to result
Complexity (1 to 5)
30 Mins
Level 3
30%
INTRODUCTION
Integrating custom buttons following specific behavior is very often worthy to respond to particular
requirements which are not standard functionalities in OCOD. Using code you can get to create many
interesting possibilities. Lets see how can we integrate buttons.
BUSINESS CASES, WHEN CUSTOM BUTTONS ARE USEFUL
Creating a custom look up filling up multiple fields
43
Standard look up functionality can only fill in one field at a time what about saving time and effort for
your users when creating and/or editing records?
WHAT DO WE WANT TO DO?
We would like to create a custom button with a custom behavior.
This how to is based on an example realize on "lead" object:
window.open (addr); //pour un popup. Pour ouvrir dans la page courante: window.location
}
function addCustomPickListButton2()
{
// comportement du bouton
function linkedIn(addr){
44
CODE EXPLANATION
We put some comments into the code, but let us explain how you can adapt this code:
We have to write the link in a variable because Javascript cannot follow a simple URL:
function linkedIn(addr){
window.open (addr); //pour un popup. Pour ouvrir dans la page courante: window.location
}
function addCustomPickListButton2()
{
45
VARIABLE DECLARATION
Specify the variable(s) that will compose our URL (the example is based on tags that will compose the
URL):
var fname ="";
var lname ="";
To find the element (the value in the fields called "Last Name" and "first Name"), we are looking for the
elements after elements called "Last Name" and "first Name", some element after td = Last name and First
name, so td+1:
46
And don't forget to add this web applet to the action bar for users...
Complexity (1 to 5)
50 Mins
Level 4
20%
The code, once adapted to your environment, has to be copied in a custom web applet
47
INTRODUCTION
Business rules and daily work restrictions can add complexity to the configuration of a CRM. Imaging that
you are using your application to monitor your deliveries and, as many of us, some of the members of your
supply chain do not work on weekends. You do not want to plan shipping and deliveries in those dates
since performance indicators will not correspond to reality what to do without checking carefully the
calendar each time that you create and/or edit a record?
BUSINESS CASES, WHEN AVOIDING WEEKENDS IS USEFUL
Avoiding weekend choice
Imagine that your customer wants an automatic calculation to be launched on a date field type in order to
avoid week end and this, for the Service Request object which includes a dynamic layout (rule should be
triggered just for a particular service request type)
The dates in question represent the final shipment date and the pickup start date (commitment from the
shipping provider) which are, as well, calculated depending on a department selection and a original
pickup and shipment date selection.
WHAT DO WE WANT TO DO?
We want to avoid work on weekends well even if it is funny this is pretty much right, lets check the
business rule
We should not be able to select pickup date and shipment date when:
We are on a layout type Assistance Service FR (dynamic layout value)
And
Field Issue du diagnostique= Dcision Pickup
And
Select the pickup date or shipment date that represents the original date
and
And
You select the department number
Filled in field Pickup code postal (pick up zip code) or Livraison code postal (shipment zip code)
48
A workflow rule is applied to calculate the final shipment or pickup date where the provider is committed
with following definition:
01xxx
02xxx
03xxx
04xxx
05xxx
06xxx
07xxx
08xxx
09xxx
10xxx
11xxx
12xxx
13xxx
14xxx
15xxx
16xxx
17xxx
18xxx
19xxx
20xxx
21xxx
22xxx
23xxx
24xxx
25xxx
26xxx
27xxx
Days in Transit
1
1
1
3
3
2
2
1
1
1
2
1
2
1
2
1
2
1
1
5
1
1
1
2
1
2
1
DestinationZip
code
45xxx
46xxx
47xxx
48xxx
49xxx
50xxx
51xxx
52xxx
53xxx
54xxx
55xxx
56xxx
57xxx
58xxx
59xxx
60xxx
61xxx
62xxx
63xxx
64xxx
65xxx
66xxx
67xxx
68xxx
69xxx
70xxx
71xxx
Days in Transit
1
2
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
2
1
2
1
1
1
1
1
DestinationZip code
49
28xxx
29xxx
30xxx
31xxx
32xxx
33xxx
34xxx
35xxx
36xxx
37xxx
38xxx
39xxx
40xxx
41xxx
42xxx
43xxx
44xxx
1
2
2
1
1
1
2
1
1
1
1
1
1
1
1
1
1
72xxx
73xxx
74xxx
75xxx
76xxx
77xxx
78xxx
79xxx
80xxx
81xxx
82xxx
83xxx
84xxx
85xxx
86xxx
87xxx
88xxx
1
2
1
1
1
1
1
1
1
1
1
2
2
2
1
1
1
We need to create a workflow involving the shipment and the pickup start date to calculate the final date
depending on the department rule and the original date:
Figure 53: Workflow formula to calculate final date depending on the department rule based on the original date
50
The code that well need to use is the following (explanation are embedded with the code (marked as
comment):
<script type="text/javascript">
function startW (s, str)
{
return (s.match("^"+str)==str);
}
// keep date, parse and define variable new Date()
function getDateFromOcodStringDate(sDate)
{
var v = sDate;
var j = v.substr(0,start);
var m = v.substr(start+1,2);
var a = v.substr(start+4,4);
var d = new Date();
d.setFullYear(a,m-1,j);
return d;
}
///////////////////////////////////////////////////////////////////////////////
51
// Parse page
function GetElement( id )
{
if( document.getElementById(id) )
{
return document.getElementById(id);
}
else
{
//alert("Not found Element by id : "+ id);
return false;
}
}
////////////////////////////////////////////////////////////////////////////
52
function checkDates()
{
// Get needed input values
var type = GetElement('ServiceRequestEditForm.SR Type').value;
var pick = GetElement('ServiceRequestEditForm.Indexed Pick 4').value;
53
54
}
}
i++ ;
}
}
// Run the script 2 seconds after action bar loaded
//detectAddForm();
setTimeout ( "detectAddForm()", 2000 );
e = e.getElementsByTagName('td');
// Parse HTML page to find Save button and change his behavior by Check Date function
var i=0;
while( i < e.length)
{
// Check SR form
if( startW (e[i].id, "ServiceRequestNewForm") || startW (e[i].id,
"ServiceRequestEditForm") )
{
// Check Save button
if(e[i].innerHTML == " Enregistrer " || e[i].innerHTML ==
" Enregistrer & Nouvelle Traitement " )
{
document.getElementById( e[i].id ).onclick = function(e){
// Add check date functionality before saving
if( checkDates() == true )
{
// doNamedInvoke : default function used when clicking
on Save button
doNamedInvoke('Save', this);
}
}
55
</script>
To understand:
Adapt and paste the code in a global web applet associated to the Action Bar and you will be done!!!
Complexity (1 to 5)
10 Mins
Level 1,5
100%
Data bases are being more and more integrate to business processes in the last years. Today interfaces,
web marketing and many other functionalities are finding support on brut data base content. From the
practical point of view what this introduces is the need for every system administrator to manage data
quality.
BUSINESS CASES, WHEN MANDATORY CAPS ARE USEFUL
Emailing on your data base contacts
Imagine that you are sending marketing e-mails campaigns to all or a segment of your data base contacts.
Imagine as well that you are merging some of the fields on the contact record profile you do not want to
include orthographic errors which can bother your potential client, do you? If you say no, this how to is for
you.
INTRODUCTION
56
(FindNoneOf((FieldValue('<AccountName>')),"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.-() _/")) = 0
To understand:
<AccountName> can be replaced by any other field name!
The FindNoneOf function in Expression Builder returns the position of the first instance in the first
argument (string1) that does not match any character in the second argument (string2).
THE SYNTAX TO FOLLOW
The syntax to follow is: FindNoneOf(string1, string2)
RESULT TYPE
The result type is an Integer
STEP 2: SPECIFY THE FIELD VALIDATION ERROR MESSAGE
57
Once you have the validation expression, you can now create a message that will show up whenever users
try to save a record not matching the established conditions. Here and example:
Only capital letters, numbers, spaces and the characters period, parenthesis, dash, slash and underscore,
can be used for the field Account Name, please modify your entry accordingly
Complexity (1 to 5)
10 Mins
Level 2
40%
INTRODUCTION
This tip has often been used to personalize Oracle CRM On Demand application. This customization allows
users to create shortcuts based on user business processes
BUSINESS CASES, WHEN A HOMEPAGE I-FRAME IS USEFUL
I had a customer who wanted to personalize his application with the look of a Partner Portal. The aim of
this customization was to create an I Frame in the homepage, embedding some quick links to main
functionalities and most consulted information.
Or
Your CRM could have this more attractive than the standard look:
58
<body>
<style type="text/css">
a:link {COLOR: #0033BB; TEXT-DECORATION: none}
a:visited{COLOR: #0033BB; TEXT-DECORATION: none}
a:active{COLOR: #0033BB; TEXT-DECORATION: none}
a:hover {COLOR: #0033BB;TEXT-DECORATION: underline}
</style>
<table cellspacing="10" width="100%" bgcolor="#F9F9F9">
<tr>
<br>
<br>
<td width="100"><img
src="http://t3.gstatic.com/images?q=tbn:pkSvMmwgOsBelM:http://www.oekumenischekampagne.ch/cm
s/uploads/media/Signet_BFA_RGB.jpg"></td>
<td width="100%"><font size=3 color="black"><b>Welcome to your <Customer>s future application,
what do you want to do today? <br></font>
<font size=2>
<br>
<table width="100%" border="0" cellspacing="0" cellpadding="2" height="60">
<tr valign="middle">
<td bgcolor="#BACFDA" width="33%" height="20">
<div align="center"><font face="Arial" size="2" color="#064380"><b>Manage My Activity
</b></font></div>
</td>
<td width="1%" height="20">
</td>
<td bgcolor="#BACFDA" width="33%" height="20">
<div align="center"><font face="Arial" size="2" color="#064380"><b>Manage
Donations</b></font></div>
</td>
<td width="1%" height="20">
</td>
<td bgcolor="#BACFDA" width="33%" height="20">
<div align="center"><font face="Arial" size="2" color="#064380"><b>Get Help</b></font></div>
<td width="100%" height="20">
59
</font>
</p>
</td>
</td>
</tr>
</table>
<td width="1"></td>
<td bgcolor="#BACFDA" width="33%">
<table width="100%" border="0" cellspacing="0" cellpadding="3" height="40">
<tr bgcolor="#FFFFFF" valign="top">
</td>
</tr>
<tr valign="top">
<td bgcolor="#BACFDA" width="33%">
<table width="100%" border="0" cellspacing="0" cellpadding="3" height="40">
<tr bgcolor="#FFFFFF" valign="top">
<td>
<p>
<font face="Arial" size="2" color="#ABDAF3">
<a
href="/OnDemand/user/CalendarWeekly?CalendarCtrl.Date=10%2f7%2f2009&OMTGT=CalendarCtrl&OM
THD=Weekly&CalendarCtrl.ShowFullDay=0"> Plan My Week </a>
<br>
<a
href="/OnDemand/user/CRMODLS_BusinessPlan.FullList?CRMODLS_BusinessPlan.FullList.LAYOUT=CRMO
DLS_BusinessPlan.AllList&CRMODLS_BusinessPlan.FullList.LAYOUTID=&OMTGT=CRMODLS_BusinessPlan.F
ullList&OMTHD=PdqListMethod&CRMODLS_BusinessPlan.FullList.EDITFLAG=N"> Review My Business
Plans </a>
<br>
<a
href="/OnDemand/user/ContactList?ContactList.LAYOUT=Contact+List+Key+Target+Physicians&OMTGT=C
ontactList&OMTHD=PdqListMethod&ContactList.EDITFLAG=Y"> View My Members</a>
</font>
</p>
</td>
</tr>
</table>
</td>
<td width="1">
</td>
<td bgcolor="#BACFDA" width="33%">
<table width="100%" border="0" cellspacing="0" cellpadding="3" height="40">
<tr bgcolor="#FFFFFF" valign="top">
<td>
<p><font face="Arial" size="2" color="#ABDAF3">
<a
href="OnDemand/user/OpptyListPage?OpptyListPage.LAYOUT=OptyList&OpptyListPage.EDITFLAG=N&OM
TGT=OpptyListPage&OMTHD=PdqListMethod&OpptyListPage.LAYOUTID="> All Donations </a>
<br>
<a href="http://www.vetwholesaler.co.uk"> My Donations </a>
<br>
<a href="http://www.nwlabs.co.uk"> Top 10 Donation </a>
60
<td>
<p>
<font face="Arial" size="2" color="#ABDAF3">
<a
href="/OnDemand/user/CRMOD_LS_MessagingPlan.FullList?OMTGT=CRMOD_LS_MessagingPlan.FullList&
OMTHD=PdqListMethod&CRMOD_LS_MessagingPlan.FullList.LAYOUTID=&CRMOD_LS_MessagingPlan.Full
List.EDITFLAG=N&CRMOD_LS_MessagingPlan.FullList.LAYOUT=CRMOD_LS_MessagingPlan.AllList"> Find
Messaging Plans </a>
<br>
<a href="https://secureausomxama.crmondemand.com/OnDemand/user/ServiceRequestList?OMTGT=ServiceRequestList&OMTH
D=PdqListMethod&ServiceRequestList.EDITFLAG=N&ServiceRequestList.LAYOUT=SRList&ServiceRequestLi
st.LAYOUTID="> Check MedInfo requests </a>
<br>
<a href="mailto:mathieu.emanuelli@gmail.com"> My Contact</a>
</font>
</p>
</td>
</tr>
</table>
</td>
</tr>
</table>
</tr>
</table>
To understand:
Yellow : Color code to adapt
Blue: Picture path
Red: application path
Green: Other links
Note: You can adapt the code inserting the expected picture and links. When configuring internal URL do
not use any pod information so the code can be applied in many environments such as production or
staging.
61
Complexity (1 to 5)
20 Mins
Level 1
90%
INTRODUCTION
This tip will allow you to improve content shown in the action bar. We would like to customize the action
bar letting only the most important information for business.
We want to create an I-frame in the action bar with scroll bar giving to users the capability to access to
other non-standard functionalities:
62
We will need to create global web applet into the action bar:
63
We just need to be careful while specifying the size for the global web applet. After this, any link can be
added to the action bar in order to facilitate the access to particular information to any Oracle CRM On
Demand user in your company
Complexity (1 to 5)
30 Mins
Level 3
10%
INTRODUCTION
This tip shows you how it is possible to rename a standard button on your CRM application
BUSINESS CASES, WHEN RENAMING A STANDARD BUTTON IS USEFUL
One of my customer wanted to renamed the out of box button log a call because the term call did not
corresponded to his business language. SIince we cannot do that using standard customization capability
we have found this workaround.
WHAT WE WOULD LIKE TO DO?
We would like to rename the button Log A call into related information:
Before:
64
After:
We will create a Web applet that we will embed into the contact layout with the following code:
65
Figure 61: Code to paste in a web applet to change the "Log a Call" label
Code to paste:
<script type="text/javascript">
var td = document.getElementsByTagName("td");
for (var i = 0; i < td.length; i++) {
66
if (td[i].innerHTML == "RenommerBtnConsignerAppel"){
td[i].innerHTML = "";
}
}
var a = document.getElementsByTagName("a");
// Code is for the <environment>. This part is to hide the related information title
if (document.getElementById("AIIA-RQVJL_Title")) {
document.getElementById("AIIA-RQVJL_Title").innerHTML = "";
document.getElementById("AIIA-RQVJL_Title").innerText = "";
}
</script>
Note: if you want to let this code flexible, working on different environments such as production and
staging, just add, before <\script>:
if (document.getElementById("AIIA-RQVJL_Title")) {
document.getElementById("AIIA-RQVJL_Title").innerHTML = "";
document.getElementById("AIIA-RQVJL_Title").innerText = "";
}
To understand the code:
// Code is for the <environment>. This part is to hide the related information title
67
Time to result
Complexity (1 to 5)
30 Mins
Level 3
10%
INTRODUCTION
A mouse over functionality is today a very used web behavior. In many CRM on the market you can see
this type of functionality available. We couldnt let Oracle CRM on Demand users without this workround
which cover this requirement and make easier the application adoption!
BUSINESS CASES, WHEN THE INFORMATION BUBBLE IS USEFUL
I think that all of my prospects and customers asked us at least once this functionality. Information
bubbles will help users to understand a field meaning and/or purpose and so, to adopt the application
faster.
WHAT DO WE WANT TO DO?
Or on an image:
We would like to create a mouse over functionality based on the field display name:
68
In our example, the bubble will appear only on the detail page (not edit mode), lets use the leads
69
}
}
function get_mouse(e)
{
var x;
try{
x = e.pageX;
y = e.pageY;
} catch(e){
x = event.x+document.body.scrollLeft;
y = event.y+document.body.scrollTop;
}
document.all("dek").innerHTML=content;
skn.display='';
70
skn.left=x+Xoffset;
skn.top=y+yyy;
}
function kill()
{
yyy=-1000;
if(ns4) { skn.visibility = "hidden"; }
else if (ns6||ie4)
skn.display="none"
}
function set_Info_Bulle()
{
var tds = document.getElementsByTagName("td");
var CONVERT_LABEL = "Campaign";
var CONVERT_DESC = "Campaign Description...<br>This is a test to show Info Bull"; //
for (var i = 0; i < tds.length ; i++) {
if ( tds[i].innerHTML == CONVERT_LABEL ) {
//alert("in");
tds[i].innerHTML += "<font style='color:red' ><b> ?</b></font>";
tds[i].onmouseover = function(){
// do stuff. I could call this 1st or 2nd if I want
popup( CONVERT_DESC );
}
tds[i].onmouseout= function(){
// do stuff. I could call this 1st or 2nd if I want
kill();
}
}
}
</script>
To understand:
Yellow: color code
Green: field display name to change
Red: Message you would like to show
71
document.getElementById("dek").innerHTML=content;
skn.display='';
}
if(ie4){
document.all("dek").innerHTML=content;
skn.display='';
}
}
function get_mouse(e)
{
var x;
try{
x = e.pageX;
}
if(ns6){
72
y = e.pageY;
} catch(e){
x = event.x+document.body.scrollLeft;
y = event.y+document.body.scrollTop;
}
skn.left=x+Xoffset;
skn.top=y+yyy;
}
function kill()
{
yyy=-1000;
if(ns4) { skn.visibility = "hidden"; }
else if (ns6||ie4)
skn.display="none"
}
function set_Info_Bulle()
{
}
setTimeout ( "set_Info_Bulle()", 1000 ); // To be sure the Action Bar is loaded
</script>
To understand:
Yellow: color code
73
Complexity (1 to 5)
20 Mins
Level 4
90%
INTRODUCTION
With Oracle CRM On Demand many additional components (add-ons) like Excel Anaylsis or mail Merge are
provided without any additional costs. In Oracle CRM On Demands world, the add-ons are intended to
cover features gaps that users can meet when using the application, sometimes the add-ons do not
provide a satisfactory answer to users expectations and Oracle administrators have then to make a choice
between a custom development by using WebServices and a standard workaround.
This book also aims to help you to optimize your budget, lets stay on the standard then and use Oracle
CRM On Demand capabilities to improve our percentage of requirements coverage. This How To is
dedicated to all the companies using Oracle CRM On Demand and wanting to print in their daily activity
documents including merged information coming from the application.
BUSINESS CASES, WHEN THIS HOW TO IS USEFUL
Imagine that your company is using Oracle CRM On Demand to execute and monitor their Call Center
business processes. Imagine now that your activity includes quotidian documents printing with variables
coming from the CRM, you will probably need to merge static text with variables stocked in the CRM we
are almost sure that you will want to print the final results... want to know how? Keep reading then.
74
Note: take care not to specify any number in the field lines to display in your narrative view
<body>
<p> </p>
<p> </p>
<p> </p>
<table height="241">
<tr>
<td width="25"></td>
<td width="408"><div align="left"></div></td>
<td width="420"><div align="left"><b><font size="2"> @1 @2 @3 </b></div></td>
</tr>
75
</script>
</div></td>
<tr>
<td></td>
<td><div align="left"></div></td>
<td><div align="left"><em><font size="2">Entreprise: @4 </em></div></td>
</tr>
<tr>
<td></td>
<td><div align="left"></div></td>
<td><font size="2"><b>
<div align="left">@5</div></td>
</tr>
<tr>
<td></td>
<td><div align="left"></div></td>
<td><font size="2"><b>
<div align="left">@6</div></td>
</tr>
<tr>
<td></td>
<td><div align="left"></div></td>
<td><font size="2"><b>
<div align="left">@7</div></td>
</tr>
<tr>
<td></td>
<td><div align="left"></div></td>
<td><font size="2">
<div align="left">@8 @9 </div></td>
</tr>
<tr>
<td></td>
<td><div align="left"></div></td>
<td><div align="left"></div></td>
</tr>
<tr>
<td></td>
<td><div align="left"></div></td>
<td><div align="left"></div></td>
</tr>
<tr>
<td></td>
<td><font size="2">
<div align="left">Reference: @10</div></td>
<td><div align="left"></div></td>
</tr>
<tr>
<td></td>
<td><div align="left"></div></td>
<td><font size="2">
<div align="left">Genève, le @12
76
To understand:
Yellow: page break code separating documents
</tr>
<tr>
<td></td>
<td><div align="left"></div></td>
<td><div align="left"></div></td>
</tr>
<tr>
<td></td>
<td><div align="left"></div></td>
<td><div align="left"></div></td>
</tr>
</table>
<table>
<tr>
<td width="26" height="791"></td>
<td width="830"><font size="2">
<p align="left"><font size="2">@1 @2 @3,</font></p>
<p align="left"> </p>
<p align="left">Vous venez de créer une nouvelle entreprise à Genève et nous
tenons à vous en féliciter.</p>
<p align="left"><br>
CONTENT.<br>
En souhaitant avoir prochainement l'occasion de vous être utile, nous vous présentons,
@1 @2 nos sentiments les meilleurs.</p>
<p align="left"> </p></td>
</tr>
</table>
</div>
<table width="868" border="0">
<tr>
<td width="732"><div align="right"><img src="http://www.your website.fr/signature.jpg" width="209"
height="112" longdesc=" http://www.your website.fr/signature.jpg "></div></td>
<td width="126"> </td>
</tr>
</table>
<table width="866" border="0">
<tr>
<td width="306"> </td>
<td width="550"><font size="2">Annexes mentionnées </td>
</tr>
</table>
<p> </p>
<p style="page-break-after: always"></p>
</body>
77
To understand:
78
79
80
Complexity (1 to 5)
10 Mins
Level 2
100%
INTRODUCTION
Lets check a recurrent application of JoinFieldValue for recipients on campaigns
BUSINESS CASE
I remember that one of my clients wanted to see the account related to the contact on the marketing
campaign target. It seems like a standard request but unfortunately, the recipient related information in
Oracle CRM on Demand propose only the contact information, in addition you can not create fields for this
related section
WHAT DO WE WANT TO DO?
How can we obtain the following result?
81
Note: that this field will be also filled in when you import recipient from Segmentation Wizard!
Do not forget to check this functionality to be sure that this rule will run at the records creation:
82
The explosion of social networks during the last 5 years had completely changed the way people exchange
information and communicate. In our days, just a couple of seconds are enough to let know to all your
contacts that X company does not agree to help you with technical support or has a low quality product it
seems that clients did get the power and they are not ready to let it go. So, why do not you listen to those
that decide about the market?
Lets see have you ever heard about social CRM? This term is definitely been a hot topic now days.
Social brings a new element into CRM because now instead of just dealing with data and information we are
dealing with conversations and relationships in the internet. These conversations and relationships take
place not anymore just between a company and a consumer but now, more than ever before, between
customers with their own level of influence.
It seems like now days, a part of your companys efforts to gather customer information should move from
the street, focus groups and other conventional tools to the internet, where thousands of people are saying
freely what they really think about interesting topics for your business.
As far as we know, Oracle is currently working hard in order to get a tool able to provide services with this
new channel. Thanks to partnerships like Buzzient for instance you can already discover this new world. In
this chapter we would like to introduce tips that will easily help you to extend capabilities for Oracle CRM On
Demand.
83
Complexity (1 to 5)
10 Mins
Level 2
90%
INTRODUCTION
May I manage what people say about my company products? Of course I cannot, but, at least, I can listen,
monitor and evaluate feeds coming from people in social networks. In this How To we are showing you
how your CRM application can be linked with a free listening platform named Social Mention.
Be careful, this How to will make your imagination wake up and so, you will have many ideas in order to
define your own usage, to adapt your own business processes. Do not hesitate to let us know what you
have done with this How To!
BUSINESS CASES, WHEN PRODUCT ANALYZING IN SOCIAL MEDIA IS USEFUL
Imagine a company wanting to get indicators from a monitoring platform in order to measure what people
say about their products. We will use Social Mention, which is a social media search and analysis platform
aggregating user generated content from across the universe into a single stream of information.
WHAT DO WE WANT TO DO?
Main technical objective is to embed this type of measure into Oracle CRM On Demand using the product
catalog defined in the application:
84
Figure 78: Create a web applet that embed Social Mention platform
To understand:
85
Figure 79: Result of social network monitoring embedded into Oracle CRM On Demand
Now, you can of course imagine to use information coming from another field on Oracle CRM On Demand,
containing information you are interested in, like product characteristics or anything else.
Time to result
Complexity (1 to 5)
10 Mins
Level 2
90%
INTRODUCTION
Managing and giving top quality service to all the contact on my company is often impossible. Would it be
interesting to manage contacts with a different level of quality depending on their influence in the web
social world? We think it is.
What can be the best monitor tool to do this job, what are their indicators mean and how can I integrate
this tool with my Oracle CRM On Demand?
Lets check out Klout. Klout is an application that measure overall online influence.
BUSINESS CASES, WHEN MEASURE CONTACT PROFILE IS USEFUL
Imagine our company is using Oracle CRM on Demand in a call center to manage customer complaints and
service requests. The call center operators want to know how much the contact is influent so they can
86
adapt the service level and spend time in real critical contacts, which will give to the social world a
feedback concerning you.
Another useful usage could be for sales to evaluate the contact profile they would like to address.
Figure 80: Social Network Contact scoring embedded into Oracle CRM On Demand
Integrate a contact social network monitoring tool with Oracle CRM On Demand in order to evaluate the
profile of our contact in social world:
87
In our example we use Klout: Klout is a tool that measures social influence across the web. The higher
the Klout score, the higher the social influence. Klout has been integrated into the Contacts section of the
dashboard to gauge social reputability.
ORACLE CRM ON DEMAND CUSTOMIZATION
We have to create a field to host the twitter contact alias.
Then, create a field type short text and keep the integration name:
88
<body>
<div align="center">
<table width="100%" border="0">
<tr>
<td width="440" valign="top">
<div align="center">
<table width="100%" border="0">
<tr>
<td colspan="2"><div align="right">
<iframe src="http://widgets.klout.com/badge/%%%stTwitter_ID%%%" style="border:0"
scrolling="No" allowtransparency="true" frameborder="0" width="200px" height="98px"></iframe>
</div></td>
</tr>
<tr>
<td colspan="2"><hr /></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td><div align="justify"><strong>The Klout Score</strong> is the measurement of your overall
online influence. The scores range from 1 to 100 with higher scores representing a wider and stronger
sphere of influence. Klout uses over 35 variables on Facebook and Twitter to measure True Reach,
Amplification Probability, and Network Score.</div></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td width="4%"> </td>
<td width="96%"><div align="justify"><strong>True Reach </strong>is the size of your engaged
audience. We eliminate inactive and spam accounts, and only include accounts that you influence. To do
this we calculate influence for each individual relationship taking into account factors such as whether an
individual has shared or acted upon your content and the likelihood that they saw it.</div></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td><div align="justify"><strong>Amplification Probability</strong> is the likelihood that your
content will be acted upon. How often do your messages generate retweets or spark a conversation? The
89
ability to create content that compels others to respond and high-velocity content that spreads into
networks beyond your own is a key component of influence. </div></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td><div align="justify"><strong>Network Influence</strong> is the influence level of your engaged
audience. Engagement is measured based on actions such as retweets, @messages, follows, lists,
comments, and likes. Each time a person performs one of these actions it is a testament to the authority
and the quality of your content. </div></td>
</tr>
<tr>
<td> </td>
<td><div align="right">More information <a href="http://klout.com/kscore"
target="_blank">here</a> </div></td>
</tr>
</table>
<hr />
</div></td>
<td width="748" valign="top">
<iframe src="http://klout.com/%%%stTwitter_ID%%%?ct=1" width = "100%" height = "450"
marginheight = 0 marginwidth = 0 border = 0 style = "borde:none;"> </iframe></td>
</tr>
</table>
</div>
</body>
To understand:
RESULT
Do not forget to display the web applet in the contacts layout:
Yellow: Oracle CRM On Demand field name used for twitter alias
90
Complexity (1 to 5)
40 Mins
Level 3
40%
INTRODUCTION
Now we would extend our social monitoring by having capability to select a term we would like to
monitor. Using Social Mention will allows us to easily track and measure what people are saying about us,
our company or any topic across the web's social media landscape in real-time. Social Mention monitors
100+ social media properties directly including: Twitter, Facebook, FriendFeed, YouTube, Digg, Google etc.
BUSINESS CASES, WHENSOCIAL MONITORING IS USEFUL
91
Our competitor is launching a new product and we would like to know what people think about it.
Using a social monitor tool could give us a high level overview.
WHAT DO WE WANT TO DO?
In order to cover requirements we will create a Social Mention and we will integrate it in our application
layout by using reports capabilities:
92
93
if (ex=='')
{
alert('Merci de saisir au moins un critre de recherche.');
}
//location.href = URL;
var myRef = window.open(URL,'Result','width=1050,height=700,location=no,scrollbars=yes');
myRef.focus();
}
}
</Script>
<Form type=post action="javascript:void(0);">
<table cellspacing="1" cellpadding="1" border="0" style="margin: 5px;">
<tr><td><font class="label"></font> <Input type=text id=ex class="sidebarInputControlFlexWidth">
<tr><td><Input type=submit value="Search !" class="disableButtonTD" OnClick="refresh()"></td></tr>
</table>
</Form>
<Script language="javascript">
function Reload()
{
var ex = document.getElementById('ex').value;
94
<script type="text/javascript">
function refresh()
{
// search phrase (replace this)
var smSearchPhrase = document.getElementById('ex').value;
//alert(smSearchPhrase );
// title (optional)
var smTitle = 'Buzz Vision';
// items per page
var smItemsPerPage = 7;
// show or hide user profile images
var smShowUserImages = true;
// widget font size in pixels
var smFontSize = 11;
// height of the widget
var smWidgetHeight = 500;
// sources (optional, comment out for "all")
//var smSources = ['twitter', 'facebook', 'googleblog', 'identica'];
//document.write(" ");
// initialize
var spy = new simpleSpy(iframe_container_id, smSearchPhrase, smShowUserImages, smFontSize, smTitle,
smSources);
//alert("in");
95
spy.start();
//alert("1");
}
</script>
<script type='text/javascript' language='javascript'
src='http://socialmention.s3.amazonaws.com/buzz_widget/buzz.js' /></script>
CREATE THE LINK IN THE ACTION BAR
Now we need to create the link that will run, on demand, the report that we have created. To do that,
create a global web applet:
<script>
function mypopup()
{
mywindow =
window.open("/OnDemand/user/analytics/saw.dll?Go&Path=%2fshared%2fCompany_AIIAGMNHY_Shared_Folder%2fSystem%2fReports+WebApplet%2fHomepages%2fBuzz&Options=&Action=Pro
mpt", "mywindow", "location=1,status=1,scrollbars=1, width=300,height=600");
mywindow.moveTo(0, 0);
}
</script>
<html>
<div align="left">
<table width="131" border="0">
<tr>
<td width="11"> </td>
<td width="179"><a href="javascript: mypopup()">Check</a></td>
</tr>
</table>
</div>
</html>
96
To understand:
Yellow: report path
Blue: popup opened size
Complexity (1 to 5)
30 Mins
Level 2
80%
INTRODUCTION
Do your contacts always tell you how they feel about your products and your company? Now if your
contacts use social media, you will be able to focus on their inputs to improve your products and service
quality. Lets see this mashup including Twitter feeds.
WHAT DO WE WANT TO DO?
Figure 89: Twitter link created with oracle CRM on demand through a web link
We would like to create web link (or a web applet) helping us to check and retrieve all the twits posted by
a particular contact:
97
Figure 90: Web applet with the link between Oracle CRM On Demand and Twitter
First of all, you need to create a custom field to hold the Twitter user ID, which is used to retrieve the
correct RSS feed from Twitter.
98
Figure 92: Create a web link to make a link between Oracle CRM On Demand and Twitter
99
Figure 94: Web applet used to make a link between Oracle CRM On Demand and Twitter
Complexity (1 to 5)
40 Mins
Level 3
40%
If you are familiar with twitter you probably know that many users send content from other applications or
devices without going to the twitter site itself. Imagine that your company had a twitter account and that
your marketing, call center and/or sales are able to create new feeds for this account using the CRM.
One of the most common usage is to post solutions to customers service requests managed in Oracle
CRM On Demand on twitter account
INTRODUCTION
100
To create automatically a tweet from Oracle CRM On demand we need to create a tweetymail account
by clicking here: http://tweetymail.com/,
The idea is very simple: register your email from which you will send email and authorize the tweet
creation from it.
101
You can specify in your setting to disable sender verification. It is the configuration I had chosen:
102
CREATE WORKFLOW
Email Address
Purpose
tweet@tweetymail.com
post@tweetymail.com
Note: to define emails I use quote before and after email address: my email address
Now we can create a workflow with email notification and specify the following email addresses to create
a tweet (those I use):
103
Complexity (1 to 5)
40 Mins
Level 2
50%
INTRODUCTION
This tip shows how to create a custom button on your CRM application. This button will be available in edit
and read mode. By clicking on the new custom button a the desired custom behavior will be trigged, in our
case, launching linked In profile form for the current contact.
We would like to create a custom button with a custom behavior which brings up current contact
information.
This how to is based on an example realize on "lead" object, you can do the same with any other objet
including personal information
104
// initiate variables
var fname ="";
var lname ="";
// First part: in detail page
//pour acceder a une valeur de champ en edit mode la fonction est .innerHTML
for (var i = 0; i < tdtd.length; i++) {
//parcours la page
if (tdtd[i].innerHTML == "First Name"){
fname = tdtd[i+1].innerHTML;
}
if (tdtd[i].innerHTML == "Last Name"){
lname = tdtd[i+1].innerHTML;
}
function addCustomPickListButton2()
{
105
}
// second part : in edit pages
// Go searching the element equal to td+1
//To access a field value in edit mode function is .value
if(fname == "" && document.getElementById('LeadCreateEditForm.First Name') != null )
fname = document.getElementById('LeadCreateEditForm.First Name').value;
if(lname == "" && document.getElementById('LeadCreateEditForm.Last Name') != null )
lname = document.getElementById('LeadCreateEditForm.Last Name').value;
//third party: create button and reference to behavior
for (var i = 0; i < tdtd.length; i++) {
// Scan page
// Button location is defined close to "Linked In"label
if (tdtd[i].innerHTML == "Linked In" || tdtd[i].innerHTML == '<span
class="fl">Linked In</span>' ){ // page de detail ou page edit
// reference to the button behavior
tdtd[i+1].innerHTML="<input type=\"button\" value=\"Click here\"
onclick=\"linkedIn('http://www.linkedin.com/pub/dir/"+fname+"/"+lname+"')\" style=\"color:#050; font:
bold 84%'trebuchet ms',helvetica,sans-serif; background-color: #fed; \" >";
}
}
}
Complexity (1 to 5)
40 Mins
Level 3
400%
INTRODUCTION
What is Yammer? (From Wikipedia): Yammer is an enterprise social network service that was launched in
September 2008. Unlike Twitter, which is used for broadcasting messages to the public, Yammer is used
for private communication within organizations or between organizational members and pre-designated
groups, making it an example of enterprise social software. Yammer originally launched as an enterprise
microblogging service and has evolved to become a fully-fledged enterprise social network.
</script>
106
Access to a Yammer network is determined by a user's Internet domain, so only those with appropriate
email addresses may join their respective networks.
Shortly: Collaborative work and social CRM embedded in Oracle CRM On Demand
BUSINESS CASES, WHEN YAMMER CONSOLE IS USEFUL
Imagine that your company is using Yammer as internal tool. Thanks to this integration you will be able to
share content, comments () from your CRM application and you also be able to get feeds coming from
your company network, and all of this without need to change the interface.
WHAT DO WE WANT TO DO?
We would like to access to Yammer in order to read feeds and to be able to write messages from Oracle
CRM Dn Demand:
To create this mashup we will use a very useful website: itduzzit (https://www.itduzzit.com).
ITDUZZIT
USER ACCOUNT SETTING
First of all, we need to open an account on this website.
To create a bridge with yammer you will need to set up the connection and the authorization between
ITDuzzit and Yammer:
107
After this step you can navigate into the Duzzit library to find widgets shared by his creator to the
community:
108
109
You need to repeat the previous step in order to get the creating Yammer message widget code:
110
post?widgetId=10349&widgetWidth=410&widgetHeight=auto&widgetShowTitle=0&widgetShowDesc=0&
widgetShowForm=1"></script></div></div>
EMBED WIDGETS INTO ORACLE CRM ON DEMAND
To embed widgets into Oracle CRM on Demand we need to create two web applets.
We have decided to create both in the application homepage, then we have to use two global web
applets. You just need to paste code that you copied previously:
Note: in our case we have decided to manually fill in the group name and message content because this
widget will be displayed in the homepage. It would be possible to let Oracle CRM On Demand fill in fields
automatically to send messages, this is interesting when we decide to embed the widget into a detail web
applet. In that case, we will need to paste this code:
<div style="background-color:#ffffff;width:410px;"><div style="border:1px solid #dedede;"><script
type="text/javascript" src="http://www.itduzzit.com/duzz/widget/yammerpost?widgetId=10349&widgetWidth=410&widgetHeight=auto&widgetShowTitle=1&widgetShowDesc=0&
widgetShowForm=1&Message=message&Group=Group"></script></div></div>
111
To understand:
Message: the content of the Yammer message.
Group: the group to where the message will be sent
Note: Oracle CRM On Demand field content will be defined with the following format:
%%%field_name%%%
Complexity (1 to 5)
30 Mins
Level 2
80%
INTRODUCTION
We have seen how it is possible to create mashup to integrate information coming from LinkedIn. How
about doing the same integration Xing for a contacts context?
WHAT DO WE WANT TO DO?
We would like to embed Xing with a direct link with contact details.
In this example, the link is done directly on the contact details page:
112
Figure 111: Web applet created to link Xing with Oracle CRM On Demand
Complexity (1 to 5)
20 Mins
Level 1
60%
INTRODUCTION
We will see how it is possible to link two applications in the cloud: a shoutbox application and your
preferred CRM!
113
Figure 112: On the left you can find the ShoutBox embedded into Oracle CRM On Demand
You will need to use a Shoutbox provider in the Cloud. We have chosen ShoutMix who provide a basic
(Free) and a premium (payed) offer:
114
115
Figure 115: web applet to define the Shoutbox in the action bar
To understand:
Yellow: Shoutbox ID defined in previous step
Result:
116
Now we will create a web applet in a custom tab for the administrators usage:
117
Note: you can also use this integration on your company website
Yellow: ShoutBox ID
Result:
118
WEB INTEGRATION
Emails, SMS, MMS, VoIP, micro websites the number of channels to send and get information from
customers, as well as the number of tools to process this valuable information are exploding and the trend
shows it will not stop soon. We think that the most intelligent thing to do then, is to find intelligent ways
to integrate your companys Oracle CRM On Demand application to the other technologies available in the
net.
If you believe that applications like Skype, Google mail, Google Talk, Google Maps, Google Documents and
Google search engine are great, guest what... we think the same so we just imagined some ways to
integrate this applications (and some others) on Oracle CRM On Demand, as always, we did it to optimize
the customer relationship management, save time normally spent in operational transactions and so, set
free companies from the heaviness of changing from one tool to another in their daily work. As a
wonderful result, people are working more often on the market trends, the customer profile and needs,
letting details aside, being treated in the simplest possible way.
119
Complexity (1 to 5)
10 Mins
Level 1.5
80%
INTRODUCTION
Collaborative work is in everyones mouths. In an integrated world, ease of interaction constitutes a big
challenge for organizations wanting to simplify operations.
Skype is a software application that allows users to make voice and video calls and chats over the
Internet. Calls to other users within the Skype service are free, while calls to both traditional landline
telephones and mobile phones can be made for a fee using a debit-based user account system. Skype has
also become popular for its additional features which include instant messaging, file transfer, and video
conferencing. Skype has 663 million registered users as of 2010. The network is operated by Skype Limited,
which has its headquarters in Luxembourg. Most of the development team and 44% of the overall
employees of Skype are situated in the offices of Tallinn and Tartu, Estonia.
Unlike other VoIP services, Skype is a peer-to-peer system rather than a clientserver system, and makes
use of background processing on computers running Skype software; the original name proposed Sky
peer-to-peer reflects this. (wipikedia)
This How to we is showing you how take advantage from this great tool into your Oracle CRM on
demand and open your CRM to the world of IP voice.
BUSINESS CASES, WHEN SKYPE INTEGRATED IN YOUR CRM IS USEFUL
Just imagine that internal support is possible by exchanging some data details in direct communication
through voice or messaging shorter delays to answer and real wok teams. Would you try it? Well, we did
and it works great!
We would like to create a link that allows to the user to click and Skype the targeted contact.
120
Figure 119: Skype that appears from a web link in Oracle CRM On Demand
121
Time to result
Complexity (1 to 5)
40 Mins
Level 2
80%
INTRODUCTION
Answering customers questions in real time helps to accelerate buying decisions and improves the
support customer experience. How to enable this function without paying more licenses?
122
My company communicates with many of its contacts through Skype messaging system to resolve their
questions and help them to make informed decisions. My support teams as well can exchange information
about our company products and clients in order to make shorter the time to answer
Figure 123: Global web applet to embedded Skype into your action bar
We have to create a global web applet embedded into the action bar:
123
" border="0">
<tr>
<td width="3%"> </td>
<td width="97%"> </td>
</tr>
<tr>
<td> </td>
<td><a href="skype:mathieuemanuelli?call"><img
src="http://download.skype.com/share/skypebuttons/buttons/call_blue_transparent_70x23.png"
style="border: none;" width="70" height="23" alt="Skype Me!" /></a></td>
</tr>
<tr>
<td> </td>
<td><a href="skype:mathieuemanuelli?sendfile"><img
src="http://download.skype.com/share/skypebuttons/buttons/sendfile_blue_transparent_98x23.png"
style="border: none;" width="98" height="23" alt="Send me a file" /></a></td>
</tr>
</table>
</div>
To understand:
Yellow: Skype user alias
Note: You need to modify the configuration on your Skype profile in order to allow your status to be shown
on the web, so people can contact you.
124
Complexity (1 to 5)
50 Mins
Level 2
80%
INTRODUCTION
Listen to the customers voices and adapting your strategy consequently is very important for most of the
companies. The simplest way to do this, is to directly ask for information at the source. Integrating surveys
and its results allow to all the CRM users to manage a real interaction and so, a real customer relationship.
For this how to, we will be using Wufoo which is a tool that strives to be the easiest way to collect
information over the Internet. This web application is a HTML form builder and helps his users to create
contact forms, online surveys, and invitations so you can collect the data, registrations and online
payments you need without writing a single line of code. We will realize a simple integration between
Wufoo and Oracle CRM on Demand.
BUSINESS CASES, WHEN WUFOO IS USEFUL
My call center operators need to send a satisfaction survey by email after having the customers on the
phone. Wufoo will help me to send surveys and measure the results in a very simple way.
WHAT DO WE WANT TO DO?
We would like to:
Create a survey
Create a link into OCOD to send the survey to the customer
Create a report embedded into a widget to monitor answer evolution
125
Figure 126: Sending the survey to the customer (using a web link)
126
Once your account is created you can start the survey or form creation.
In our example we have built our survey from the Wufoo form gallery.
To do that:
1. Click on from tab
2. Click on New frombutton
3. Click on the link Wufoo form gallery
Then, select the form template and add it to Wufoo form, that means forms related to your account
127
When youll get back to your account homepage the selected form has been added:
128
In our example we will use a mailto embedded into a service request layout. Then we select Via Email
option and copy the code.
In our example the link generated is:
mailto:mathieu.emanuelli@businessdecision.com?subject=Check out my form!&body=Please take one
minute to fill in this form !%0A%0Ahttp://businessdecision.wufoo.com/forms/customer-satisfactionsurvey/
We can also embed the form into a detail web applet. In that case we select Embed Form Code and copy
the expected statement:
129
Figure 132: To embed the form into a web applet we can copy JavaScript or iFrame code
Here we have adapted the code by inserting an Oracle CRM On Demand variable:
To start, we will create a web link with the first code we get:
130
Note: Dont forget to add the custom web link to your layout related information
131
Select the view that you want to embed and copy-paste the code:
Now we need to create a report and a widget that we will embed into Oracle CRM On Demand.
We will not see how we create report into Wufoo, we are pretty sure you will find out ;)
So, once the report is created, we will follow the same steps as we did for the survey to get the code. From
the reports section, click on Widgets:
132
Figure 138: Paste the widget code into a homepage web applet
Once the code paste, lets get back to Oracle CRM On Demand and copy this code into a service homepage
web applet:
133
Complexity (1 to 5)
70 Mins
Level 2
60%
INTRODUCTION
This How to aims to increase integration capabilities in Oracle CRM On Demand, always keeping in mind
that an integrated landscape must be adopted by all the companies wanting to preserve their dynamism
and get easily connected to clients.
Gmail is Google's free web-based email service. Gmail says its email service offers better spam protection,
lots of free mail storage (over 7400 megabytes free at last check) and access via mobile phones.
BUSINESS CASES, WHEN GMAIL IS USEFUL
Google is recruiting more and more clients who want to use its corporate offer since it is flexible and easily
to adapt. As a consequence, more and more customers have the expectation of send professional emails
based on Gmail messaging system using some contact information interesting?
134
The code to adapt including all the fields that you want to integrate is the following:
135
https://mail.google.com/mail/?view=cm&fs=1&tf=1&cmid=8&to=%%%Email_Address%%%&su=does it
work&body=ceci est un test
Complexity (1 to 5)
50 Mins
Level 3
60%
INTRODUCTION
As a complement for the previous how to this one will show you how you can send emails from your
CRM using either Outlook or Gmail as messaging system.
BUSINESS CASES, WHEN BOTH MESSAGING SYSTEMS INTEGRATION IS USEFUL
Sending emails with simple links is a common requirement from customers. Hereafter, you will learn how
to enable users to do it from Gmail or Microsoft Outlook with Oracle CRM On Demand.
Create a layout with Gmail and Microsoft Outlook in the sample layout:
136
Figure 143: Link between Oracle CRM On Demand, Gmail or outlook keeping in Oracle CRM On Demand content
Recipient email address mapped with lead email address or contact email address
Email subject
Email body
If you decide to use activity object as we did in this example, you will have to create the recipient email
address that corresponds to recipient email address thanks to a join field value.
For instance, if you would like to send emails to lead using lead email address you will use the following
syntax in a custom field:
JoinFieldValue('<Lead>',[<LeadId>],'<LeadEmail>')
CREATE A REPORT
The report has to be saved as a shared analysis to let us the capability to open it into OCOD from every
users session.
HIGH LEVEL OVERVIEW
Here is the construction of the report:
You can adapt this code for contact email address if needed.
137
Figure 144: Report created to create a link between Oracle CRM On Demand and Gmail or outlook
It is a simple report but both important items are highlight on the screenshot.
"Is Prompted": we will open this report thanks to a weblink into the activity layout, we are using this
function for the report to retrieve only the current activity information.
CREATE GMAIL LINK
Figure 145: Formula created to build the link between Oracle CRM On Demand and Gmail keeping in Oracle CRM On Demand content
This field has to be defined as a "HTML" column (set up in column properties > Data Format):
Gmail Link: this link will allow us to link the report to Gmail Messaging system:
138
Figure 146: Define the column as "html" to insert the formula to link OCOD with Gmail
Gmail Link: this link will allow us to create the bridge between the report and Microsoft Outlook
Messaging system:
139
Figure 147: Formula created to build the link between Oracle CRM On Demand and Microsoft Outlook
Figure 148: Define the column as "html" to insert the formula to link OCOD with Microsoft Outlook
This field has to be defined as a "HTML" column (set up in column properties > Data Format):
140
'<a
href="mailto:'||Activity.TEXT_0||'?subject='||Activity.Subject||'&body='||Activity.Description||'">Send
by Outlook</a>'
We concatenate several parts of the final link. Parts of this link are dynamic (based on column result) abd
static (based on URL that calls Gmail).
Activity.TEXT_0 : Field lead Email we have created to catch the email address of our lead
Activity.Subject: Activity subject, that will be the email object
Activity.Description: will be the email body
ADD NARRATIVE
Now, you need to add a narrative view:
Figure 149: Narrative preview to link OCOD with Gmail or Microsoft Outlook
Figure 150: Code in narrative view to link OCOD with Gmail or Microsoft Outlook
141
Figure 151: Web link that will run the report where you created the the link between Oracle CRM On demand and Gmail
142
Complexity (1 to 5)
10 Mins
Level 1.5
100%
INTRODUCTION
This is the cloud computing age, services are often proposed in the web for little money or even for free in
many cases. Integrate in Oracle CRM On Demand this kind of services is worthy for organizations wanting
to save integration and development time, while using powerful tools.
Google Docs is a free, Web-based word processor, spreadsheet, slide show, form, and data storage service.
It allows users to create and edit documents online while collaborating in real-time with other users.
Google Maps is a web mapping service application that powers many map-based services. It offers street
maps, a route planner for traveling by foot, car, or public transport and an urban business locator for
numerous countries around the world.
Google Picasa is an application that helps users to organize, to edit, and to share their photos.
This how to will show you how to integrate these three applications provided by Google and Oracle CRM
On Demand using mashups.
BUSINESS CASES, WHEN GOOGLE TOOLS ARE USEFUL
Imagine that your company use Google documents to store templates or to let employees share
documents versions, your marketing department use Picasa like a media library and your sales
department use very often Goggle maps and itinerary to prepare visits with customer. Each of our
companys department would like to find all the applications in Oracle CRM On Demand, using it as a
portal in addition of a CRM.
WHAT WE WOULD LIKE TO DO?
We would like to see in our application functionalities that Goggle offers in the cloud through different
services such as:
Google document
Picasa to download pictures
Google Map to search a direction
143
Google documents
144
Picasa
To understand:
Yellow: Alias to connect to your google account
Get Direction
145
Note: to be able to run these widgets into Oracle CRM On Demand you will need to connect to your Google
account.
Complexity (1 to 5)
20 Mins
Level 1.5
90%
Real-time communication on a light platform makes easier daily operations and helps to optimize the
collaborative work. Today many companies are using Gmail as a messaging system, how to use it without
need to change the application and interface? Lets see
BUSINESS CASES, WHEN GOOGLE TALK INTEGRATION IS USEFUL
Imagine that many of your CRM users are using Gmail and its chat in order to collaborate. By using Google
Talk integrated into Oracle CRM On Demand, you can propose a portal oriented integration, where your
team always find the right working tool.
WHAT DO WE WANT TO DO?
INTRODUCTION
146
We want to embed google talk as a part of the action bar in Oracle CRM On Demand.
If you are a Google Talk user, you may be aware that there is a link that allows you to sign into your Google
account and chat with your contacts without the GTalk setup installation.
We are about to use this cool feature in Oracle CRM On Demand to help Service Reps to chat with
customers to resolve their queries
Notice that this feature may also be available for other messengers (yahoo, rediffmail, windows live), but
lets talk about Google for now.
HOW CAN WE DO?
NAVIGATE TO ADMIN>APPLICATION CUSTOMIZATION>GLOBAL WEB APPLETS.
Figure 157: Web applet created to embed GTalk into Oracle CRM on Demand
The code:
URL: http://talkgadget.google.com/talkgadget/popout?
Create a New Web applet and Fill in as shown hereafter. You may also choose to have this on the
Homepage according to your requirement.
147
ADD THE CUSTOM WEB APPLET TO YOUR ACTION BAR FOR THE MY SETUP>PERSONAL
LAYOUT>ACTION BAR LAYOUT GLOBAL LINK.
You should now see the Custom Web applet on your Action Bar.
Note: you need to have a Gmail account and need to be logged in.
Complexity (1 to 5)
20 Mins
Level 2
80%
INTRODUCTION
Geolocation, another great feature developed thanks to the applications available in the internet. Send
some parameters, get the exact location and if you want, make a calculation in order to know how far you
are from your destination.
BUSINESS CASES, WHEN GEOLOCATION IS USEFUL
Imagine you are a sales representative trying to find the best itinerary to visit high potential clients
without any (or almost) time lost. Simple coordinates does not tell you what to do but how about adding a
graphic interface to those simple numbers and names?
WHAT WE WANT TO DO?
We are centering our example on a simple case where you would like to see on the records form the
country which owns it. How can you do? Well, you only need to associate each user to a country and then,
use JoinFieldValue to bring up this information:
We would like to embed Google Map in a web applet:
148
149
<iframe
src="http://maps.google.fr/maps?q=%%%Personal_ADDR_Address1%%%,+%%%PERSONAL_LIST_ZIP%%%,
+%%%Personal_CITY_City%%%,+%%%Personal_COUNTRY_Country%%%" frameborder="no"
WIDTH="100%" HEIGHT=500></iframe>
Please notice that you can enrich this how to as much as you want by including more variable which will
allow you to make a more accurate localization.
Complexity (1 to 5)
40 Mins
Level 2
80%
INTRODUCTION
Technology keeps reinventing the way companies communicates with its clients. Now not one but at least
5 channels are conventionally evoked when it comes to launch a marketing campaign, SMS is one of them.
Lets see what exactly this is and how can you generate direct messages for your customers and/or
prospects.
Short Message Service (SMS) is the text communication service component of phone, web, or mobile
communication systems, using standardized communications protocols that allow the exchange of short
text messages between fixed line or mobile phone devices.
SMS text messaging is the most widely used data application in the world, with 2.4 billion active users, or
74% of all mobile phone subscribers. The term SMS is used as a synonym for all types of short text
messaging as well as the user activity itself in many parts of the world.
SMS is considered in Marketing as a communication channel and is usually connected to many mobile
devices. Lets see how is could be connected with CRM On Demand
BUSINESS CASES, WHEN SMS ARE USEFUL
Imagine that you want to send automatically a SMS inviting people on your data base to an event coming
up, and all that using your Oracle CRM On Demand.
WHAT DO WE WANT TO DO?
We would like to send personalized SMS related to an event created on Oracle CRM On demand.
150
Into the account console, you can change the senders alias:
151
SET UP USERS
With Esendex we can define different users to use the same SMS quota defined by the company. This
could be very useful in the case where a company wants to let the capability to many users to send SMS:
152
WORKFLOW CREATION
We need to create 2 workflows:
1. First to authorize the connection with the SMS provider (because we cannot configure SMTP, we
have to identify ourselves in a different way)
2. Second to send your message
You can define a condition to let this functionality to a specific user. You can also add another workflow
that will update a checkbox indicating that a SMS has been already sent to the recipient so you do not
need to resend the message.
Note1: in the screenshot we defined a workflow as example based on the activity object and trigger
When modified record saved.
Note2: you can decide to send a mass SMS by designing a condition workflow that will run when a
checkbox is checked and check your checkbox through a mass update.
153
In the first workflow we have to send an email to the SMS provider with the following information:
Note1: email addresses will not change, then we have to select Specific Email address and we need to fill
in the field with the address between quotes like email address.
Note2: In case where many users have been defined the sender email address in our SMS provider, we
could set up in the from field the current application user email address
This workflow will specify the message content that we would like to change. You can write a static
message content or a dynamic message based on application fields. Do not forget to specify the email
address on the right format : phone_number@esendex.net
154
To understand
Yellow: this field represents the recipient phone number. Is this example, the field is a custom field that
has been created and that is based on a JoinFieldValue
REPORTING
By using a SMS provider you could have an access to sending statistic such as.
155
We can as well embed this page into Oracle CRM on Demand by using web applet or custom web tab (do
not forget to log in in order to have access to the data)
###
How can I send voice SMS from the application (using email)?
Time to result
Complexity (1 to 5)
30 Mins
Level 2
80%
Voice SMS is relatively recent channel very useful to contact customers and prospects in real-time (or
almost) allowing companies to make available information for them without disturbing their quotidian
activities.
As you know, mobile phone communication has rapidly evolved from direct, real-time voice interaction to
a suite of non-voice and indirect means of wireless communication, including Short Message Service
(SMS), Multimedia Message Service (MMS) and Instant Messaging (IM). However, many people are not
comfortable with these methods and prefer to use their handsets only for direct, spoken communication.
A new feature, Voice SMS, fills the gap between voice and indirect/non-voice communication by
combining todays newest indirect interaction with the advantages of speech.
Its similar to SMS and MMS in that it involves one-way communication. Its similar to voicemail in that a
voice message is sent for someone to hear when they want to access it, but its different in that its an
intentional voice message.
INTRODUCTION
156
With Esendex we can define different users to use the same SMS quota defined by the company. This
could be very useful in the case where a company wants to let the capability to many users to send SMS:
phone_number@voice.esendex.net
157
WORKFLOW CREATION
We have to create a workflow executing 2 actions:
1. The First one to authorize the connection with the SMS provider (because we cannot configure
SMTP, we need to identify ourselves in a different way)
2. The second one to send the message
Note1: in the screenshot we defined a workflow as example based on the activity object and trigger When
modified record saved.
Note2: notice that you could decide to send a mass SMS communication by designing a workflow s
condition that will run when a checkbox is checked and check your checkbox through a mass update.
FIRST PART, WORKFLOW DETAIL
We need to send an email to the SMS provider with the following information:
-
You can specify as well, a condition to enable this functionality to specific user and depending on the need,
add another action to your workflow that will update a checkbox indicating that a SMS has already been
sent to the recipient.
158
Note1: email addresses will not change, then we have to select Specific Email address and we need to fill
in the field with the address between quotes as follows: email address.
Note2: In case where many users have been defined the sender email address in our SMS provider, we can
set up in the from field the current application user email address
SECOND PART, WORKFLOW DETAIL
This second part of the workflow will specify the message content that we would like to send. You can
write up static message content or a dynamic message based on the field in the application. Do not forget
to specify the email address on the right format: phone_number@esendex.net
159
To understand
Yellow: this field represents the recipient phone number. In this example, the field is a custom field that
has been created and that is based on a JoinFieldValue function
REPORTING
160
You can also integrate this page in your campaigns detail layout on Oracle CRM on Demand by using web
applet or in the general layout using the custom web tabs.
How can I send SMS from the application (using http request)?
Time to result
Complexity (1 to 5)
40 Mins
Level 2.5
60%
Imagine that you want to send SMS from Oracle CRM on Demand. This is a dream for many Oracle CRM On
Demand users and administrators. Many SMS providers make available to their customers the capability to
send SMS through http request. Lets see how.
161
Go on the SMS provider website and open an account, then, create the http request based on the
following example:
http://www.smsbull.com/membres/smsdistant.php?numero=%%%Main_Phone_Number%%%&message=
%%%Description%%%&email=mathieu.emanuelli@businessdecision.com&pass=pssd
To understand:
162
Note: you can integrate this web link into a narrative report and track when a send is launch (by clicking on
the link)
163
EXCLUSIVE !
Chapter: EXCLUSIVE !
These tips and tricks have been planned for volume 2 but during Oracle Open World we decided to let it
available for you and always for free!
164
Complexity (1 to 5)
30 Mins
Level 2
10%
Chapter: EXCLUSIVE !
165
Complexity (1 to 5)
60 Mins
Level 3
80%
Chapter: EXCLUSIVE !
166
Note: As this report will be filtered for one account (embedded in a webapplet), you can apply a filter on
this report to see the final result in the report layout:
Chapter: EXCLUSIVE !
167
Yellow: URL to get the contact layout detail in OCOD with @2 that match with the ContactId column in the
report
Blue: Text that will be displayed in the report layout
Chapter: EXCLUSIVE !
To understand:
168
You can now embed your report filtering it with the Account Id. Do not forget to remove the title.
Complexity (1 to 5)
70 Mins
Level 2
100%
HOW DO WE DO?
WORK ON THE PICTURE
Chapter: EXCLUSIVE !
We would like to create prompts based on a picture. The best example of usage is the expectation to
analyze territory efficiency.
169
Chapter: EXCLUSIVE !
170
The code that interests us is the one between <Map> and < /Map> tags:
Chapter: EXCLUSIVE !
171
Chapter: EXCLUSIVE !
172
Chapter: EXCLUSIVE !
173
174
Chapter: EXCLUSIVE !
This book is free and represents the first volume we achieved. We have many other tips to share with you
such as:
Then, dont hesitate to give us your feedback on this book and dont hesitate to be a part of our electronic
social Life ! :