Vous êtes sur la page 1sur 190

Tips & Tricks for

Oracle CRM On Demand


Volume 1 including exclusive tips
First book providing for free tips and tricks to improve your Oracle CRM On Demand application

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

WHY THIS PROJECT?

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.

WHO ARE WE?

Author: Mr. Mathieu Emanuelli

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)

Co-Autor: Mr. Joann Alejandro Bravo

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

GENERAL CONFIGURATION .................................................................................................................... 1


How to define parent and child relationship for any object? ...................................................................... 2
How to join activity & service request with context transfert? ................................................................... 8
How can I create a link to a document in the action bar or homepage? ................................................... 12
How to copy or set up a new record? ........................................................................................................ 14
How to concatenate with a workflow? ...................................................................................................... 17
How to calculate duration on a field using a default value or a workflow?............................................... 18
How to transform lower in upper case?..................................................................................................... 19
How can i create a simple custom look-up?............................................................................................... 21
How can i create a custom button that runs a custom look up from Edit and Detail page? ..................... 26
How can I create a custom look up that fill in many fields in Oracle CRM On Demand? .......................... 28
How to prevent the sales stage modification after the opportunity closed? ............................................ 39
How to monitor some variables evolution? ............................................................................................... 41
How can to create a custom button? ......................................................................................................... 43
How to avoid weekend selection for date type fields? .............................................................................. 47
How to make caps mandatory for field content? ...................................................................................... 56
How can I create an I-Frame in homepage?............................................................................................... 58
How can i create an i-frame with action bar content?............................................................................... 62
How can I rename the button Log A Call in activity related information? ............................................. 64
How can I create an information bubble on 1 or many fields? .............................................................. 67
How can I create a document including CRM merged fields and print it?................................................. 74
How to see the primary account for a campaign recipient? ...................................................................... 81

SOCIAL NETWORKS AND CRM SOCIAL CRM ................................................................................... 83

How can i analyze my products in social network?.................................................................................... 84


How can i measure my contact profile influence in the social networks? ................................................. 86
How can i monitor social network content from OCOD? ........................................................................... 91
How to add Twitter feeds overview? ......................................................................................................... 97
How can i tweet automatically from OCOD? ........................................................................................... 100
How can i create a button with LinkedIn link in Oracle CRM On Demand? ............................................. 104
How to embed Yammer console into Oracle CRM On Demand?............................................................. 106
How to make a mashup with Xing? .......................................................................................................... 112
How can I create a shoutbox for my users community? ......................................................................... 113

WEB INTEGRATION ................................................................................................................................ 119

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

EXCLUSIVE ! ............................................................................................................................................. 164

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.

Chapter: GENERAL CONFIGURATION

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.

How to define parent and child relationship for any object?


Time to result

Complexity (1 to 5)

Gap with out of the box cap

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

BUSINESS CASES, WHEN ARTIFICIAL HIERARCHICAL RELATIONSHIP IS USEFUL


Marketing programs, commercial action plans
Think about a company trying to define a marketing program containing multiple campaigns aiming
different markets (for example one market by country)

Figure 1: Parent campaign and child campaigns associated

WHAT DO WE WANT TO DO?


We would like to create a record related section providing a way to easily create a child record (related to
the current record). Our example is based on activity objects but, of course, you can adapt this example.
Something like this:

Chapter: GENERAL CONFIGURATION

And what about a company wanting to execute an action plan composed of a sequence actions what
to do?

Figure 2: Create a related record from custom related information

HOW CAN WE DO?


We need to follow these steps in order to obtain our functionality:

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

CREATE A CUSTOM FIELD TO STOCK THE RELATED ACTIVITY ID

Figure 3: Create the Related custom field

Chapter: GENERAL CONFIGURATION

We have created a new field for the object Activity, called Related Activity ID and we have added it to
the page layouts:

Figure 5: Custom field displayed on the layout

CREATE THE WEB APPLET


Next step, create a new web applet Related Tasks for both Appointments and Tasks and add it to the
page layouts:

Chapter: GENERAL CONFIGURATION

Figure 4: Related custom field in page layout

Figure 6: New web applet "Related Task"

The code is the following:

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

Chapter: GENERAL CONFIGURATION

<script type="text/javascript" id="customJavaScript">


var Div_id = document.getElementById("customJavaScript").parentNode.id;
var endIndex = Div_id.indexOf("Div");
if(endIndex>0) {
var Title_id = Div_id.substring(0, endIndex) + "_Title";
var Title_obj = document.getElementById(Title_id);
var newTD = document.createElement('td');
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\">&#160;New Related
Task&#160;</div>";
Title_obj.parentNode.insertBefore(newTD, Title_obj.nextSibling );
}
</script>

Appointments:
Appointment Standard
Visit
Once you add the web applet to the layout it appears like this:

Figure 7: Button created in the custom related information

Using this button you can create

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

Figure 8: Report embedded showing the related record

But how is this contextual section alimented and updated? Start going to the reporting tool and building a
report which looks like this:

Chapter: GENERAL CONFIGURATION

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:

Figure 9: column selected to create the report embedded

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

Figure 10: Web applet with the whole code

Then, whole code is:


<script type="text/javascript" id="customJavaScript">
var Div_id = document.getElementById("customJavaScript").parentNode.id;
var endIndex = Div_id.indexOf("Div");
if(endIndex>0) {
var Title_id = Div_id.substring(0, endIndex) + "_Title";
var Title_obj = document.getElementById(Title_id);
var newTD = document.createElement('td');

Chapter: GENERAL CONFIGURATION

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\">&#160;New Related
Task&#160;</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

How to join activity & service request with context transfert?


Time to result

Complexity (1 to 5)

Gap with out of the box cap

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.

WHAT DO WE WANT TO DO?


Simple to say: insert a button on the related information section of the object task to create a new service
request (traitement) and pass the contact information from the task to the service request.

Chapter: GENERAL CONFIGURATION

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?

Figure 11: Expected result, a new related information including a button

HOW CAN WE DO?


Follow the following steps to achieve the expected result:

FIND A SIMILAR PAGE AND COPY URL

Figure 12: Button New for a service request

The following screenshot illustrates the page launched after the click:

Chapter: GENERAL CONFIGURATION

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

Figure 13: Layout launched after the click

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)

CREATION OF A WEB APPLET


The web applet which contains the button is created. As the button should be propose as a related section
on the object task, the web applet has to be configured from the task configuration:

Chapter: GENERAL CONFIGURATION

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:

Blue: URL that we have created before


Yellow: display name of the custom button

Add this web applet to the layout and thats it, now, you can create service request whenever you want
from the activities layout.

Chapter: GENERAL CONFIGURATION

<script type="text/javascript" id="customJavaScript">


var Div_id = document.getElementById("customJavaScript").parentNode.id;
var endIndex = Div_id.indexOf("Div");
if(endIndex>0) {
var Title_id = Div_id.substring(0, endIndex) + "_Title";
var Title_obj = document.getElementById(Title_id);
var newTD = document.createElement('td');
newTD.innerHTML = "<div onclick=\"doNavigate('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=',false, this, null);\" onmouseover=\"toggleNavButton(this);\"
onmouseout=\"toggleNavButton(this);\" onkeypress=\"onButtonPress(this);\"
class=\"buttonChildTitleBarTD\" id=\"OpenActivitiesTB31607487*1\">&#160;Nouveau
traitement&#160;</div>";
Title_obj.parentNode.insertBefore(newTD, Title_obj.nextSibling );
}
</script>

11

How can I create a link to a document in the action bar or


homepage?
Time to result

Complexity (1 to 5)

Gap with out of the box cap

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.

BUSINESS CASES, ALL THE BUSINESS TOOLS IN THE SAME PLACE


Knowledge data base or Dynamic catalogues
Some companies use many tools to manage the Customer Relationship, although, they do not want to
logout from the CRM to use it. When clients ask questions regarding products, the answers can be
available in a knowledge data base and/or in a dynamic catalogue should users leave the CRM
application to have access? Not anymore!
Imagine that you want to propose the access to different applications, documents or any other web tool
from any screen in the application what can you do?
WHAT DO WE WANT TO DO?

Figure 15: Link created in the action bar

Or

Figure 16: Many links in the action bar

Chapter: GENERAL CONFIGURATION

We would like to have one or many links show in the action bar

12

HOW CAN WE DO?


Follow the following steps:
CREATE THE GLOBAL WEB APPLET
To create a link in html, we use tags <a> and </a> and put the content between. Content can be image.
The tag <a> can have 3 attributes:

href : indicates link address


target : defines the links target

Figure 17: Global web applet created to embed a web applet in the action bar

The code in this example is the following:


<a href="http://www.helponmyproject.com" target="_blank">Help me !</a>

Figure 18: Global web applet created to embed a web applet (more complex) in the action bar

Chapter: GENERAL CONFIGURATION

We could imagine a more complex code, defining a table including several links:

13

The code in this case would see like:


<div align="left">
<table width="131" border="0">
<tr>
<td width="11">&nbsp;</td>
<td width="179"><a href="www.helponmyproject.com" target="_blank">Help me ! </a></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><a href="www.google.com" target="_blank">Google</a></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><a href="www.linkedin.com" target="_blank">LinkedIn </a></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><a href="www.facebook.com" target="_blank">Facebook</a></td>
</tr>
</table>
</div>
To understand:

Yellow: URL address


Blue: target
Red: Name of the link that will be displayed

ADD THE CUSTOM GLOBAL WEB APPLET TO AN ACTION BAR LAYOUT


You can define a new action bar layout or you can add quickly this global web applet by clicking on My Set
up link.

How to copy or set up a new record?


Time to result

Complexity (1 to 5)

Gap with out of the box cap

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?

Chapter: GENERAL CONFIGURATION

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?

WHAT DO WE WANT TO DO?


We would like to copy or initialize a record keeping many pre-populated fields from the original one
Since the release 17 users can copy a record but this functionality does not exist on every object. In
addition, copy a record is a standard function not allowing any customization
HOW CAN WE DO?
Create a web link that will contain all the information concerning the new record. You can either copy field
by field the content or decide to copy only some fields and assign fixed values to others:

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):

Chapter: GENERAL CONFIGURATION

Figure 19: Web link created to copy a record

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

Chapter: GENERAL CONFIGURATION

The code used is the following:

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.

How to concatenate with a workflow?


Time to result

Complexity (1 to 5)

Gap with out of the box cap

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>]

Chapter: GENERAL CONFIGURATION

So you can now define a default value and a workflow to update the field, hereafter the concatenation for
the field opportunity name

17

Figure 21: Example of a concatenate formula at a field definition level

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.

How to calculate duration on a field using a default value or a


workflow?
Time to result

Complexity (1 to 5)

Gap with out of the box cap

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?

WHAT DO WE WANT TO DO?


My customer wanted the application to fill in automatically the ending date of warranty based on the
purchasing date.
HOW CAN WE DO?

Chapter: GENERAL CONFIGURATION

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

How to transform lower in upper case?


Time to result

Complexity (1 to 5)

Gap with out of the box cap

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

Chapter: GENERAL CONFIGURATION

BUSINESS CASES, KEEPING YOUR DATA ON STANDARD FORMAT

19

Figure 23: Field in automatically in upper case

HOW CAN WE DO?


We will create a global web applet embedded into the action bar:

The code in this applet is:


<script>
function uppercaseInput()
{
var INPUT_ID = 'LeadCreateEditForm.Company Name';

var elem = document.getElementById(INPUT_ID);


if( elem != null )
{
elem.style.textTransform = 'uppercase';
try {

Chapter: GENERAL CONFIGURATION

Figure 24: Web Global applet to host the JavaScript

20

elem.addEventListener('keyup',function (e) { this.value=this.value.toUpperCase();


}, true);
} catch(e){
elem.attachEvent('onkeyup', function (e) { this.value=this.value.toUpperCase(); });
}
}
}
setTimeout ( "uppercaseInput()", 2000 );
</script>

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?

How can i create a simple custom look-up?


Time to result

Complexity (1 to 5)

Gap with out of the box cap

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: )

Chapter: GENERAL CONFIGURATION

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:

Figure 25: Simple custom look catching one field content

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

Chapter: GENERAL CONFIGURATION

HOW CAN WE DO?

22

Figure 26: View selection code

4. Find and keep in your notepad the field ID


Note: To find out the field ID with IE you need to right click, select view source and search thanks to the
field display name.
CONFIGURE THE REPORT COLUMNS
Our example is based on a report related to the products table. The value that we would like to fill in is
the product name.
To create a report with a custom look up behavior:
1. Create the report including the column that you would like to display
2. Add the column containing the value that you would like to send into the target field
3. Set up this column as follows:
a. Select Column properties

Figure 27: Click on Column Properties

b. Select Data format tab and insert the following code:


"http://"@[html]"<a target=_top href=""javascript:void(null)""
onclick=\"Callback('"@"');\">Select</a>"

Yellow: name of the link that will appear in the place of the value

Chapter: GENERAL CONFIGURATION

To understand:

23

Figure 28: Insert the code in Data Format Tab

4.

After the execution of the previous steps your report will contain two columns as shown:

Figure 29: Report built overview

CREATE THE REPORT NARRATIVE VIEW

<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>

Chapter: GENERAL CONFIGURATION

We have to create a narrative view using with the following code:

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

Figure 30: Create a web link with the report path

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

Chapter: GENERAL CONFIGURATION

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

How can i create a custom button that runs a custom look up


from Edit and Detail page?
Time to result

Complexity (1 to 5)

Gap with out of the box cap

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:

Figure 31: Button created to run the custom look up

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 = "&nbsp;Edit&nbsp;";
var tdtd = document.getElementsByTagName("td");
for (var i = 0; i < tdtd.length; i++) {

Chapter: GENERAL CONFIGURATION

// First step: Open report and switch page in edit Mode

26

// Simul clic sur Bouton Edit


if (tdtd[i].innerHTML == editButton){
if(target =="Service" )
doNamedInvoke('ServiceRequestEditNav', tdtd[i]);
break ;
}
}
window.open(str);
} // End Function
</script>
<script>
// Second step: Parse page et define location for the button
function addCustomPickListButton()
{
var currentPage = document.getElementById('ocTitleFieldLabel');

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

Chapter: GENERAL CONFIGURATION

if (tdtd[i].innerHTML == "Select product" || tdtd[i].innerHTML == 'Select product' ){


tdtd[i+1].innerHTML="<input type=button value=Open onclick=\"openLink('"+target+"')\" > ";
}
}
}
}
setTimeout ( "addCustomPickListButton()", 1000 ); // To be sure the Action Bar is loaded
</script>

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:

Figure 32: 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.

How can I create a custom look up that fill in many fields in


Oracle CRM On Demand?
Time to result

Complexity (1 to 5)

Gap with out of the box cap

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

Chapter: GENERAL CONFIGURATION

INTRODUCTION

28

WHAT DO WE WANT TO DO?


We would like to create a custom report that could fill in 2 fields in the application:
OCOD with the link to the custom look up:

Figure 33: Link to the custom lookup

HOW CAN WE DO?


Let us follow the following steps:
IN ORACLE CRM
CREATE CUSTOM FIELDS

Figure 34: Fields that have been filled in

FIND THE SYSTEM NAME OF THE CUSTOM FIELDS


We need then to find the system name of the custom fields we have created previously:

Chapter: GENERAL CONFIGURATION

Fields that will receive information should be text fields and should not be defined as Read only:

29

Figure 35: Right click and select view Source

Figure 36: Edit page source and search the system name thanks to fields display name

Keep these system names by copying in your favorite text editor:

Chapter: GENERAL CONFIGURATION

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

Figure 37: Copy system name

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:

Figure 38: Columns selected to create our report

Chapter: GENERAL CONFIGURATION

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

CREATE THE LINK TO FEED THE APPLICATION FROM THE REPORT


We will create a column that will display a link with the name Slectionner une commande (select an
order.

Use a custom format for the column

Chapter: GENERAL CONFIGURATION

We will use a custom format for all data displayed on this column based on JavaScript function (Callback):

32

Figure 40: Custom format used

The code is the following:


"http://"@[html]"<a target=_top href=""javascript:void(null)"" onclick=\"Callback('"@"');\">Slectionner
une commande</a>"

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:

Chapter: GENERAL CONFIGURATION

Define fx in the column

33

Figure 41: Fx definition

The formula used is:


CONCAT(Opportunity."Opportunity ID", CONCAT('?', Opportunity.Name))

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:

Chapter: GENERAL CONFIGURATION

Add a narrative view

34

Figure 42: Add a narrative view

Paste the code:


<html>
<script type="text/javascript">
function Callback(Line)
{
var Line = Line;
// Le parameter Line permet de rcuprer les valeurs contenu dans la colonne Slectionner dfinies plus
haut ( soit (CONCAT(Opportunity."Opportunity ID", CONCAT('?', Opportunity.Name)))

Chapter: GENERAL CONFIGURATION

Figure 43: Code to paste in the narrative view

35

var position = Line.indexOf('?');


// Index Of est une fonction Javascript permettant de renvoyer la position du parameter (?) dans la chaine
Line. La variable position permet de dfinir la poistion du ?
var MyCommandeID = Line.substring(0, position);
// Commande ID est compris entre 0 et la variable position (?)
var MyCommandeName = Line.substring(position+1);
// Commande name est situ la position ? +1
// Get SR form from parent page
var theform = window.top.opener.document.getElementById("ServiceRequestEditForm");
for (n=0;n<theform.elements.length;n++) {
if (theform.elements[n].name == "ServiceRequestEditForm.Indexed Short Text 0")
{
theform.elements[n].innerText=MyCommandeName;
theform.elements[n].value=MyCommandeName;
}
if (theform.elements[n].name == "ServiceRequestEditForm.ZText_30")
{
theform.elements[n].innerText=MyCommandeID;
theform.elements[n].value=MyCommandeID;
}
}
window.close();
}
</script>
</html>

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;

Chapter: GENERAL CONFIGURATION

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:

CREATE A WEB LINK FIELD


Get back to oracle CRM On Demand and create a web link that will run the prompted report

Chapter: GENERAL CONFIGURATION

Figure 44: Copy the report path

37

Figure 46: Detail on the formula used

Note: You have to specify Open in a new window


In our example, the URL is the following:

Chapter: GENERAL CONFIGURATION

Figure 45: Create the custom web link

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

How to prevent the sales stage modification after the


opportunity closed?
Time to result

Complexity (1 to 5)

Gap with out of the box cap

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:

PRE('')'Closed/Won' AND PRE('')'Closed/Lost'

Chapter: GENERAL CONFIGURATION

HOW CAN WE DO?

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:

(PRE('')'Closed/Won' AND PRE('')'Closed/Lost') OR (UserValue('')='Administrator')

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.)

Chapter: GENERAL CONFIGURATION

Figure 47: Validation message after applying workflow to restrict opportunity status changes

40

How to monitor some variables evolution?


Time to result

Complexity (1 to 5)

Gap with out of the box cap

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

WHAT DO WE WANT TO DO?


We want to follow up the changes realized on a group of fields and the dates of these changes. Then, we
would like to follow up those fields in a report showing evolution and identifying need for action.
HOW CAN WE DO?
We are going to need some pivots fields to stock evolution information, then a report concerning those
fields will alert us about actions required.
STEP 1: PIVOT FIELDS

Chapter: GENERAL CONFIGURATION

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:

Figure 49: Workflow defined to monitor some variables evolution

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.

Figure 50: Workflow definition to monitor some variables evolution

Chapter: GENERAL CONFIGURATION

Concerning the workflow activities, set the field values as follows:

42

Figure 51: Date to monitor some variables evolution

STEP 3: CREATE AND BUILD YOUR REPORT


Now that your records are correctly populated, create your report and make it available for all managers
wanting to monitor opportunities sales stage evolution.

Figure: Example of report created to monitor some variables evolution

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)

Gap with out of the box cap

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

Chapter: GENERAL CONFIGURATION

How can to create a custom button?

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:

Figure 52: Example of custom buttons created

HOW CAN WE DO?


CREATE THE JAVASCRIPT
We need to create a code, as follows:
type="text/javascript" id="customJavaScript">

window.open (addr); //pour un popup. Pour ouvrir dans la page courante: window.location
}
function addCustomPickListButton2()
{

var tdtd = document.getElementsByTagName("td");


// initialisation des variables
var fname ="";
var lname ="";
// premiere partie: affecte valeur dans les pages de detail
//pour acceder a une valeur de champ en edit mode la fonction est .innerHTML

Chapter: GENERAL CONFIGURATION

// comportement du bouton
function linkedIn(addr){

44

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;
}
}
// deuxieme partie: affecte valeur dans les pages edit
// va chercher l'element egal a td+1 (valeur du champs)
//pour acceder a une valeur de champ en edit mode la fonction est .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;
//Troisieme partie: creer le bouton et reference a son comportement
for (var i = 0; i < tdtd.length; i++) { // parcours la page
// On place le bouton a cote du texte "Linked In"
if (tdtd[i].innerHTML == "Linked In" || tdtd[i].innerHTML == '="fl">Linked In' ){ // page de detail ou page
edit
// reference au comportement du bouton
tdtd[i+1].innerHTML="";
}
}
}
setTimeout ( "addCustomPickListButton2()", 1000 ); // To be sure the Action Bar is loaded
</script>

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()
{

Chapter: GENERAL CONFIGURATION

CREATE THE LINK FOR THE BUTTON TO FOLLOW

45

LOOKING FOR "TD" ELEMENTS


Specify that you are looking for td elements
var tdtd = document.getElementsByTagName("td");

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 ="";

PARSE THE CURRENT PAGE


This will parse every page where the application is
for (var i = 0; i < tdtd.length; i++) {

SEARCH ELEMENTS IN EDIT PAGES


To find elements that we are looking for in an edit page, the function is ".innerHTML"

if (tdtd[i].innerHTML == "First Name"){


fname = tdtd[i+1].innerHTML;
}
if (tdtd[i].innerHTML == "Last Name"){
lname = tdtd[i+1].innerHTML;
}
}

SEARCH ELEMENTS IN DETAILS PAGES


To find elements that we are looking for in an edit page, the function is ".value"
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

Chapter: GENERAL CONFIGURATION

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

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;
Of course, you have to adapt the page name depending object where you want to put the custom button
SELECT THE PLACE WHERE WE WOULD LIKE TO PUT THE CUSTOM BUTTOM
We will parse de page and find the display name "Linked In" in the current page to place the button right
after.
Once again in the edit page specify ".innerHTML" and in detail page ".value"
if (tdtd[i].innerHTML == "Linked In" || tdtd[i].innerHTML == 'Linked In' ){

SPECIFY BEHAVIOR ON THE BUTTON


if (tdtd[i].innerHTML == "Linked In" || tdtd[i].innerHTML == 'Linked In' ){

PUT THE CODE IN A CUSTOM WEB APPLET

Figure: Global Web applet created to create a custom button

And don't forget to add this web applet to the action bar for users...

How to avoid weekend selection for date type fields?


Time to result

Complexity (1 to 5)

Gap with out of the box cap

50 Mins

Level 4

20%

Chapter: GENERAL CONFIGURATION

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

Chapter: GENERAL CONFIGURATION

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

Chapter: GENERAL CONFIGURATION

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

HOW CAN WE DO?


Simple: a workflow calculating our final date AND a Javascript that we will embed into a Global Web applet
in the action bar.
DEFINE WORKFLOW

Chapter: GENERAL CONFIGURATION

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 workflow formula is the following:


IIf(Left([<stPickup_CP_ITAG>],2)='06' OR '07' OR '11' OR '13' OR '15' OR '17 'OR '24' OR '26' OR '29' OR '30'
OR '34' OR '46' OR '64' OR '66' OR '73' OR '83' OR '84' OR '85' OR '98', [<A_ITAG>]-2,
IIf(Left([<stPickup_CP_ITAG>],2)='04'OR '05', [<A_ITAG>]-3, IIf(Left([<stPickup_CP_ITAG>],2)='20',
[<A_ITAG>]-5, [<A_ITAG>]-1)))
To understand:
[<stPickup_CP_ITAG>]: zip code
[<A_ITAG>]: Original date
DEFINE THE SCRIPT
The script will do following action:

Parse correct layout and get elements


Trigger the workflow rule (calculation)
If result is a week end, then alert the user
And finally add the next working day (correct date)

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;
}
///////////////////////////////////////////////////////////////////////////////

Chapter: GENERAL CONFIGURATION

var start = v.indexOf("/", 0 );

51

// Define day depending date


function getDay( d )
{
var weekday = new Array(7);
weekday[0]="Sunday";
weekday[1]="Monday";
weekday[2]="Tuesday";
weekday[3]="Wednesday";
weekday[4]="Thursday";
weekday[5]="Friday";
weekday[6]="Saturday";
//alert("Today is " + weekday[d.getDay()] );
return weekday[d.getDay()];
}
// alerte definition if result is a week end
function isWeekendDay( d)
{

var weekday = new Array(7);


weekday[0]="Sunday";
weekday[1]="Monday";
weekday[2]="Tuesday";
weekday[3]="Wednesday";
weekday[4]="Thursday";
weekday[5]="Friday";
weekday[6]="Saturday";
//alert("Today is " + weekday[d.getDay()] );
if( weekday[d.getDay()] == "Saturday" || weekday[d.getDay()] == "Sunday" )
return true;
return false;
}

// Parse page
function GetElement( id )
{
if( document.getElementById(id) )
{
return document.getElementById(id);
}
else
{
//alert("Not found Element by id : "+ id);
return false;
}
}

Chapter: GENERAL CONFIGURATION

////////////////////////////////////////////////////////////////////////////

52

function checkDates()
{
// Get needed input values
var type = GetElement('ServiceRequestEditForm.SR Type').value;
var pick = GetElement('ServiceRequestEditForm.Indexed Pick 4').value;

// We will Add 1 day if date is a Sunday and 2 days if date is a saturday


if( isWeekendDay (date) )
{
if(getDay(date) == "Sunday"){
// Add one day
oldDate.setDate ( oldDate.getDate() + 1 )
} else {
// Add two day
oldDate.setDate ( oldDate.getDate() + 2 )
}
// format new Date
var nDate = oldDate.getDate() + "/" + (oldDate.getMonth() + 1) + "/" +
oldDate.getFullYear();
// Message defined if date is a week end
alert("Date Dpart pickup est un Weekend.\nNouvelle date pickup : " + nDate);
// Change the date input value
GetElement('ServiceRequestEditForm.ZDate_25').value = nDate;
//return true;
}
}
////////////////////////////////////////////////////////////////////////////////////////////
// We do the substraction with date.getdate() and getBackDayNumber (codePLivraison) and apply
behavior. The substraction is done on the shipment and pickup date to let the workflow being applied.
if ( type == "Assistance Service FR" && pick =="Dcision pickup" && codePLivraison != "" )
{
var dd = GetElement('ServiceRequestEditForm.ZDate_26').value;
var date = getDateFromOcodStringDate ( dd );

Chapter: GENERAL CONFIGURATION

// Keep field shipment zip code and pickup zip code


var codePLivraison = GetElement('ServiceRequestEditForm.ZText_39').value;
var codePPickup = GetElement('ServiceRequestEditForm.ZText_36').value;
var result;
// Check expected condition
if ( type == "Assistance Service FR" && pick =="Dcision pickup" && codePPickup != "" )
{
var dd = GetElement('ServiceRequestEditForm.ZDate_25').value;
// format String date to Date
var date = getDateFromOcodStringDate ( dd );
var oldDate = getDateFromOcodStringDate ( dd );
// Get the number of days to back from zip code
date.setDate ( date.getDate() - getBackDayNumber (codePPickup) );

53

var oldDate = getDateFromOcodStringDate ( dd );


date.setDate ( date.getDate() - getBackDayNumber (codePLivraison) );
if( isWeekendDay (date) )
{
if(getDay(date) == "Sunday"){
oldDate.setDate ( oldDate.getDate() + 1 )
} else {
oldDate.setDate ( oldDate.getDate() + 2 )
}
var nDate = oldDate.getDate() + "/" + (oldDate.getMonth() + 1) + "/" +
oldDate.getFullYear();
// Message defined if date is a week end
alert("Date Dpart Livraison est un Weekend.\nNouvelle date Livraison: " +
nDate);
GetElement('ServiceRequestEditForm.ZDate_26').value = nDate;
//return true;
}
}
return true;
}
//////////////////////////////////////////////////////////////////////////////////

function getBackDayNumber( codeP )


{
var code = codeP.substr(0, 2);
if( code == "06" || code =="07" || code =="11" || code =="13" || code =="15" || code =="17" ||
code =="24" || code =="26" || code =="29" || code =="30" || code =="34" || code =="46" || code =="64"
|| code =="66" || code =="73" || code =="83" || code =="84" || code =="85" || code =="98")
return 2;
if ( code =="04" || code =="05")
return 3;
if ( code =="20" )
return 5;
return 1;
}
//////////////////////////////////////////////////////////////////////////////////////////
// Detect the form where the script has to run
function detectAddForm()
{
// Wait two seconds after changing the value type in the picklist because we are using a dynamic layout

Chapter: GENERAL CONFIGURATION

// getBackDayNumber calculation: Define number depending postal code

54

// Check SR Type attribute if exist


if
( GetElement('ServiceRequestEditForm.SR Type') )
{
var elem = GetElement('ServiceRequestEditForm.SR Type');
try{
// Re-add the same method on this attribute every time the user choose different
type, because when change SR Type the page is reloading and we lost Javascript Event
// addEventListener: all browsers except IE before version 9
elem.addEventListener('change',function (e) { setTimeout ( "detectAddForm()",
2000 ); }, true);
} catch(e){
// attachEvent: IE before version 9
elem.attachEvent('onchange', function (e) { setTimeout ( "detectAddForm()", 2000
); });
}
}
var e = document;

}
}
i++ ;
}
}
// Run the script 2 seconds after action bar loaded
//detectAddForm();
setTimeout ( "detectAddForm()", 2000 );

Chapter: GENERAL CONFIGURATION

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 == "&nbsp;Enregistrer&nbsp;" || e[i].innerHTML ==
"&nbsp;Enregistrer &amp; Nouvelle Traitement&nbsp;" )
{
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:

ServiceRequestEditForm.ZText_39: Pick up zip code


ServiceRequestEditForm.ZText_36: shipment zip code
Assistance Service FR: picklist value that defines dynamic layout
Dccision pickup: value of the "type" field

Adapt and paste the code in a global web applet associated to the Action Bar and you will be done!!!

How to make caps mandatory for field content?


Time to result

Complexity (1 to 5)

Gap with out of the box cap

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.

Chapter: GENERAL CONFIGURATION

INTRODUCTION

56

WHAT DO WE WANT TO DO?


Just to push users to use ONLY a predefined set of characters when filling in a particular field.
HOW CAN WE DO?
STEP1: CREATE THE WORKFLOW EXPRESSION
We need to use the Field validation capabilities. You need to add a field validation formula, which will
define the allowed characters for the field. In this case, capital letters, numbers and some other symbols.
Use the following expression:

Figure 54: Syntaxe dfinie dans la validation du champ

(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

Chapter: GENERAL CONFIGURATION

FINDNONEOF FUNCTION EXPLANATION:

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

How can I create an I-Frame in homepage?


Time to result

Complexity (1 to 5)

Gap with out of the box cap

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.

WHAT DO WE WANT TO DO?

Figure 55: I Frame in Homepage. Illustration from a customer

Or

Chapter: GENERAL CONFIGURATION

Your CRM could have this more attractive than the standard look:

58

maybe this one:

Figure 56: I Frame in Homepage. Illustration from a customer

CREATE A GLOBAL WEB APPLET

<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">

Chapter: GENERAL CONFIGURATION

Insert this code:

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">

Chapter: GENERAL CONFIGURATION

</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.

Chapter: GENERAL CONFIGURATION

This code has to be pasted in a global web applet as follows:

61

Figure: Global web applet to paste the I frame code

How can i create an i-frame with action bar content?


Time to result

Complexity (1 to 5)

Gap with out of the box cap

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.

WHAT DO WE WANT TO DO?

Chapter: GENERAL CONFIGURATION

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

Figure 57: Scroll bar in the action bar

HOW CAN WE DO?

Figure 58: Web applet to create scroll bar

The code inserted is the following one:


</style><div align="left">
<table width="131" border="0">
</table>

Chapter: GENERAL CONFIGURATION

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

How can I rename the button Log A Call in activity related


information?
Time to result

Complexity (1 to 5)

Gap with out of the box cap

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:

Figure 59: Out of the box "Log a Call" label

Chapter: GENERAL CONFIGURATION

Before:

64

After:

Figure 60: Label "Log a Call" after applying modification code

HOW CAN WE DO?

Chapter: GENERAL CONFIGURATION

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

Figure 62: Web Applet embedded to modify "Log A Call" label

Code to paste:
<script type="text/javascript">
var td = document.getElementsByTagName("td");
for (var i = 0; i < td.length; i++) {

Chapter: GENERAL CONFIGURATION

Put this web applet on the concerned layout:

66

if (td[i].innerHTML == "&nbsp;Log A Call&nbsp;"){


//alert (td[i].innerHTML);
td[i].innerHTML = "&nbsp;Send Email&nbsp;";
}

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>

To understand the code:

Yellow: the old value


red: le new value
Blue: name of the related info if you want to remove it
Green: ID of the related information you want to remove

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:

Green: ID of the related information you want to remove

How can I create an information bubble on 1 or many fields?

Chapter: GENERAL CONFIGURATION

// Code is for the <environment>. This part is to hide the related information title

67

Time to result

Complexity (1 to 5)

Gap with out of the box cap

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?

Figure 63: Information Bubble with text

Or on an image:

Chapter: GENERAL CONFIGURATION

We would like to create a mouse over functionality based on the field display name:

68

Figure 64: Information Bubble on image

HOW CAN WE DO?


STEP1: CREATE A WEB APPLET

Figure 65: Web applet hosted the code

STEP2: PASTE THE CODE FOR THE BUBBLE WITH ?


Paste the following code.
<div id="dek" style="POSITION:absolute;VISIBILITY:hidden;Z-INDEX:200;"></div>
<script>

Chapter: GENERAL CONFIGURATION

In our example, the bubble will appear only on the detail page (not edit mode), lets use the leads

69

Xoffset=00; // modify these values to ...


Yoffset= 20; // change the popup position.
var old,skn,iex=(document.all),yyy=-1000;
var ns4 = document.layers;
var ns6 = document.getElementById ;
var ie4 = document.all;
skn = document.getElementById("dek").style;
skn.visibility="visible";
skn.display="none";
document.onmousemove=get_mouse;
function popup(msg,bak){
if (!bak) bak = "#EBEAF3";
var content = "<div style='font-size:10px;color:none;border-style:solid;border-width:1px;
BORDER-COLOR:#8F99EF; PADDING:3px; SPACING:0; "+
"Background-COLOR:"+bak+";' align=left>"+msg+"</div>";
yyy = Yoffset;
if (skn) {
skn.visibility="visible";
skn.display="block";
}
if(ns4){
skn.document.write(content);
skn.document.close();
skn.visibility="visible";
}
if(ns6){
document.getElementById("dek").innerHTML=content;
skn.display='';
}
if(ie4){

}
}
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;
}

Chapter: GENERAL CONFIGURATION

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

STEP2 (BIS): PASTE CODE FOR BUBBLE WITH AN IMAGE

Chapter: GENERAL CONFIGURATION

setTimeout ( "set_Info_Bulle()", 1000 ); // To be sure the Action Bar is loaded

71

Paste the following code an in yellow modify the image URL

<div id="dek" style="POSITION:absolute;VISIBILITY:hidden;Z-INDEX:200;"></div>


<script>
Xoffset=00; // modify these values to ...
Yoffset= 20; // change the popup position.
var old,skn,iex=(document.all),yyy=-1000;
var ns4 = document.layers;
var ns6 = document.getElementById ;
var ie4 = document.all;
skn = document.getElementById("dek").style;
skn.visibility="visible";
skn.display="none";
document.onmousemove=get_mouse;
function popup(msg,bak){
if (!bak) bak = "#EBEAF3";
var content = "<div style='font-size:10px;color:none;border-style:solid;border-width:1px;
BORDER-COLOR:#8F99EF; PADDING:3px; SPACING:0; "+
"Background-COLOR:"+bak+";' align=left>"+msg+"</div>";
yyy = Yoffset;
if (skn) {
skn.visibility="visible";
skn.display="block";
}
if(ns4){
skn.document.write(content);
skn.document.close();
skn.visibility="visible";

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;

Chapter: GENERAL CONFIGURATION

}
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

Chapter: GENERAL CONFIGURATION

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><img src=\"
OnDemand/1.12.0.1220.0.03/base/icons/assoc_images/zoom.png\"/></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();
}
}
}

73

Green: field display name to change


Red: Message you would like to show
Blue: Picture path. The picture is hosted into your Oracle CRM On demand environment.
Note: This code has to be applied on related information for an specific object. This development doesnt
take into account multilingual configuration.
Developers that apply this code need to be aware of the image URL (if they want to use an image)

How can I create a document including CRM merged fields and


print it?
Time to result

Complexity (1 to 5)

Gap with out of the box cap

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

WHAT DO WE WANT TO DO?


Generate, merge and print many documents at once including Oracle CRM On Demand contextual
information

Chapter: GENERAL CONFIGURATION

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

Figure 66: Oracle CRM On Demand to mass merge

HOW CAN WE DO?


CREATE A NARRATIVE REPORT
Go to the reports creation module and:

Figure 67: Narrative view

Note: take care not to specify any number in the field lines to display in your narrative view

<body>

<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</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>

Chapter: GENERAL CONFIGURATION

We will use add a page break at the end of the code:

75

</script>
</div></td>

Chapter: GENERAL CONFIGURATION

<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&egrave;ve, le @12

76

To understand:
Yellow: page break code separating documents

CREATE A WEBLINK TO LAUNCH THE REPORT

Chapter: GENERAL CONFIGURATION

</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">&nbsp;</p>
<p align="left">Vous venez de cr&eacute;er une nouvelle entreprise &agrave; Gen&egrave;ve et nous
tenons &agrave; vous en f&eacute;liciter.</p>
<p align="left"><br>
CONTENT.<br>
En souhaitant avoir prochainement l'occasion de vous &ecirc;tre utile, nous vous pr&eacute;sentons,
@1 @2 nos sentiments les meilleurs.</p>
<p align="left">&nbsp;</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">&nbsp;</td>
</tr>
</table>
<table width="866" border="0">
<tr>
<td width="306">&nbsp;</td>
<td width="550"><font size="2">Annexes mentionn&eacute;es </td>
</tr>
</table>
<p>&nbsp;</p>
<p style="page-break-after: always"></p>
</body>

77

We will create a web link to be able to launch the report.

Figure 68: Web link created

Insert the following code:


https://secureausomxXXX.crmondemand.com/OnDemand/user/analytics/saw.dll?Go&Path=%2fshared%2fCompany_AL
CA-D7I6T_Shared_Folder%2fSystem%2fCourrier+Template%2fLettre+de+Prospection
&Format=mht&Action=Download

Yellow: report path where XXX represents the POD


Blue: These two options allow users to open the report in html
Note: do not forget to add this new field on your layout

GENERATE THE DOCUMENTS: FOLLOW THE FOLLOWING PROCESS


Now you are ready to test the link.
1. Click on the link and open an Internet Explorer new window

Chapter: GENERAL CONFIGURATION

To understand:

78

Figure 69: Click on the link

Figure 70: Right click and select Print Preview

Chapter: GENERAL CONFIGURATION

2. Right click on your window and select Print Preview

79

3. Specify your settings in Preview mode

Figure 72: Settings

Chapter: GENERAL CONFIGURATION

Figure 71: Preview mode

80

How to see the primary account for a campaign recipient?


Time to result

Complexity (1 to 5)

Gap with out of the box cap

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?

Figure 73: Primary account in recipient related information

HOW CAN WE DO?


Since we cannot create new fields for this related section, we will need to use a preexistent field
(Description in this example) to show the primary account name

Figure 74: Change description field to "Read Only"

Chapter: GENERAL CONFIGURATION

STEP 1: DEFINE THE FIELD AS READ ONLY

81

STEP 2: CREATE THE SYNTAX TO RETRIEVE THE VALUE


Lets use a double JoinFieldValue to fetch the information as follow:

Figure 75: Workflow syntax at the first expression level

The syntax to use is:


JoinFieldValue('<Account>', JoinFieldValue('<Contact>', [<ContactId>], '<AccountId>'),'<AccountName>')
STEP 3: CHECK POST VALUE DEFAULT CHECKBOX

Figure 76: Check "Post Value default" to Yes

Note: that this field will be also filled in when you import recipient from Segmentation Wizard!

Chapter: GENERAL CONFIGURATION

Do not forget to check this functionality to be sure that this rule will run at the records creation:

82

SOCIAL NETWORKS AND CRM SOCIAL CRM

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.

Chapter: SOCIAL NETWORKS AND CRM SOCIAL CRM

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

How can i analyze my products in social network?


Time to result

Complexity (1 to 5)

Gap with out of the box cap

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?

Figure 77: Integrate social monitoring with Oracle CRM On Demand

HOW CAN WE DO?


In our example we would like to analyze what is said about our product. Then we will create a web applet
that embed the measuring platform and display it in the product layout :

Chapter: SOCIAL NETWORKS AND CRM SOCIAL CRM

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

The code to integrate is the following:


<iframe src="http://socialmention.com/search?q=%%%Name%%%&t=all&btnG=Search"
frameborder="no" WIDTH="100%" HEIGHT=500></iframe>

Yellow: variable coming from Oracle CRM On Demand


The result is the following:

Chapter: SOCIAL NETWORKS AND CRM SOCIAL CRM

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)

Gap with out of the box cap

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

Chapter: SOCIAL NETWORKS AND CRM SOCIAL CRM

How can i measure my contact profile influence in the social


networks?

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.

WHAT DO WE WANT TO DO?

Figure 80: Social Network Contact scoring embedded into Oracle CRM On Demand

HOW CAN WE DO?


First of all you need to sign up for an account into the social network monitoring platform.

Chapter: SOCIAL NETWORKS AND CRM SOCIAL CRM

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:

Figure 81: Field create in Oracle CRM On Demand

The field integration name we will use is the following: %%%stTwitter_ID%%%


WEB APPLET CREATION

Figure 82: Web applet to create

Chapter: SOCIAL NETWORKS AND CRM SOCIAL CRM

Once this setup accomplished, we will create a web applet:

88

<body>
<div align="center">
<table width="100%" border="0">
<tr>
<td width="440" valign="top">&nbsp;
<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>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</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>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td width="4%">&nbsp;</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>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</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

Chapter: SOCIAL NETWORKS AND CRM SOCIAL CRM

The code is the following:

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>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</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>&nbsp;</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">&nbsp;
<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:

Chapter: SOCIAL NETWORKS AND CRM SOCIAL CRM

Yellow: Oracle CRM On Demand field name used for twitter alias

90

How can i monitor social network content from OCOD?


Time to result

Complexity (1 to 5)

Gap with out of the box cap

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

Chapter: SOCIAL NETWORKS AND CRM SOCIAL CRM

Figure 83: Result of social network measurement tool

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?

Figure 84: Search module created in report

HOW CAN WE DO?


CREATE THE REPORT
We will create an application in a report based on 2 narrative views

Chapter: SOCIAL NETWORKS AND CRM SOCIAL CRM

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

FIRST NARRATIVE VIEW


The first narrative view will create a prompt in order to receive a term which we want to monitor.
Hereafter the detail of the first narrative view:

Chapter: SOCIAL NETWORKS AND CRM SOCIAL CRM

Figure 85: Narrative views created

93

Figure 86: First narrative view

The code is the following:

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>

Chapter: SOCIAL NETWORKS AND CRM SOCIAL CRM

<Script language="javascript">
function Reload()
{
var ex = document.getElementById('ex').value;

94

SECOND NARRATIVE VIEW


And for the second narrative view:

Figure 87: second narrative view

<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");

Chapter: SOCIAL NETWORKS AND CRM SOCIAL CRM

Code inserted is the following:

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:

Figure 88: 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">&nbsp;</td>
<td width="179"><a href="javascript: mypopup()">Check</a></td>
</tr>
</table>
</div>
</html>

Chapter: SOCIAL NETWORKS AND CRM SOCIAL CRM

And insert the following code:

96

To understand:
Yellow: report path
Blue: popup opened size

How to add Twitter feeds overview?


Time to result

Complexity (1 to 5)

Gap with out of the box cap

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

Chapter: SOCIAL NETWORKS AND CRM SOCIAL CRM

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

HOW CAN WE DO?


CREATE A TWITTER ID FIELD ON THE CONTACT RECORD

Figure 91: field created to fill in Twitter ID

CREATE THE WEBLINK AND ADD IT ON THE LAYOUT


Thanks to the Twitter ID, you can create a we blink including a context parameter:

Chapter: SOCIAL NETWORKS AND CRM SOCIAL CRM

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

The URL to paste is :


http://twitter.com/statuses/user_timeline.rss?id=%%%stTwitter_ID%%%&count=10

Figure 93: Add the field on the layout

CREATE A WEB APPLET INCLUDING TWITTER FEEDS


The web applet to create:

Chapter: SOCIAL NETWORKS AND CRM SOCIAL CRM

You need to add this web link on the layout:

99

Figure 94: Web applet used to make a link between Oracle CRM On Demand and Twitter

Code to paste is the following:


<iframe src=" http://twitter.com/statuses/user_timeline.rss?id=%%%stTwitter_ID%%%&count=10" width
= "100%" height = "450" marginheight = 0 marginwidth = 0 border = 0 style = "borde:none;"> </iframe>
NOTE: The count parameter in the URL indicates how many "Tweets" to return. If you change it from 10,
you should change the height of the web applet accordingly.

How can i tweet automatically from OCOD?


Time to result

Complexity (1 to 5)

Gap with out of the box cap

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

WHAT DO WE WANT TO DO?


We would like to create tweets automatically thanks to Oracle CRM On Demand actions.

Chapter: SOCIAL NETWORKS AND CRM SOCIAL CRM

INTRODUCTION

100

Figure 95: Tweets generated by Oracle CRM On Demand

HOW CAN WE DO?

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.

Chapter: SOCIAL NETWORKS AND CRM SOCIAL CRM

CREATE YOUR TWEETYMAIL ACCOUNT

101

Figure 96: Create your account

Chapter: SOCIAL NETWORKS AND CRM SOCIAL CRM

You can specify in your setting to disable sender verification. It is the configuration I had chosen:

Figure 97: Disable sender verification

102

CREATE WORKFLOW

Email Address

Purpose

tweet@tweetymail.com

Tweet text, pictures, and links

post@tweetymail.com

Post tweets longer than 140 characters

Figure 98: Workflow defined

Note: to define emails I use quote before and after email address: my email address

Chapter: SOCIAL NETWORKS AND CRM SOCIAL CRM

Now we can create a workflow with email notification and specify the following email addresses to create
a tweet (those I use):

103

Figure 99: Tweet generated

How can i create a button with LinkedIn link in Oracle CRM On


Demand?
Time to result

Complexity (1 to 5)

Gap with out of the box cap

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

Chapter: SOCIAL NETWORKS AND CRM SOCIAL CRM

WHAT WE WOULD LIKE TO DO?

104

Figure 100: LinkedIn link with a button

HOW CAN WE DO?


Create a web link and insert the following code in a global web applet.
** In order to explain in detail the code we had chosen to add comment into the code:
<script type="text/javascript" id="customJavaScript">
// Button behavior
function linkedIn(addr){
window.open (addr);

//pour un popup. Pour ouvrir dans la page courante: window.location

var tdtd = document.getElementsByTagName("td");

// 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;
}

Chapter: SOCIAL NETWORKS AND CRM SOCIAL CRM

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; \" >";
}
}
}

setTimeout ( "addCustomPickListButton2()", 1000 ); // To be sure the Action Bar is loaded

How to embed Yammer console into Oracle CRM On Demand?


Time to result

Complexity (1 to 5)

Gap with out of the box cap

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.

Chapter: SOCIAL NETWORKS AND CRM SOCIAL CRM

</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:

Figure 101: Yammer Integration to read and send messages

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:

Figure: select "Connection"

Chapter: SOCIAL NETWORKS AND CRM SOCIAL CRM

HOW CAN WE DO?

107

You need to follow several steps so your connection can be created:

Figure 102: Connection created

GETTING WIDGET CODES

Figure 103: Navigate through Duzzit library

Lets select Yammer category:

Chapter: SOCIAL NETWORKS AND CRM SOCIAL CRM

After this step you can navigate into the Duzzit library to find widgets shared by his creator to the
community:

108

Figure 104: Select yammer category

To get the widget that will let display yammer message:

Getting Yammer message

Figure 105: Select Mini apps to display yammer message

Select the option Get Widget and copy the script:

Chapter: SOCIAL NETWORKS AND CRM SOCIAL CRM

Select the mini apps that interest us:

109

Figure 106: Select Widget and copy the code

The code is the following:


<div style="background-color:#ffffff;width:410px;"><div style="border:1px solid #dedede;"><script
type="text/javascript" src="http://www.itduzzit.com/duzz/widget/yammerwidget?widgetId=12564&widgetWidth=410&widgetHeight=auto&widgetShowTitle=0&widgetShowDesc=0
&widgetShowForm=1"></script></div></div>

Creating Yammer message

Figure 107: Creating Yammer message widget code selection

The code is the following:


<div style="background-color:#ffffff;width:410px;"><div style="border:1px solid #dedede;"><script
type="text/javascript" src="http://www.itduzzit.com/duzz/widget/yammer-

Chapter: SOCIAL NETWORKS AND CRM SOCIAL CRM

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:

Figure 109: Web applet that create Yammer messages

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>

Chapter: SOCIAL NETWORKS AND CRM SOCIAL CRM

Figure 108: Web applet that displayed Yammer messages

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%%%

How to make a mashup with Xing?


Time to result

Complexity (1 to 5)

Gap with out of the box cap

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.

Figure 110: Xing web applet on the contact object

HOW CAN WE DO?


Create detail page web applet based on the desired object:

Chapter: SOCIAL NETWORKS AND CRM SOCIAL CRM

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

Code to paste is the following:


<iframe
src="https://www.xing.com/app/search?op=search&keywords=%%%Last_Name%%%+%%%First_Name%
%%" width = "100%" height = "450" marginheight = 0 marginwidth = 0 border = 0 style = "borde:none;">
</iframe>

How can I create a shoutbox for my users community?


Time to result

Complexity (1 to 5)

Gap with out of the box cap

20 Mins

Level 1

60%

INTRODUCTION

BUSINESS CASES, WHEN SHOUTBOX IS USEFUL


Most of the companies have a website. If it is the case for your company and you are also using Oracle
CRM On Demand as a service management, wouldnt you be interested in a shoutbox that could link your
website with your CRM letting you listen to your clients?
Another common business usage is to let CRM users to have a direct access to a whole support
department. This is very useful for companies which had deployed many Oracle CRM On demand instances
and are wanting to provide a central support service.
WHAT DO WE WANT TO DO?
We would like to create a ShoutBox embedded into Oracle CRM On Demand to create a user community
able to discuss together:

Chapter: SOCIAL NETWORKS AND CRM SOCIAL CRM

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

HOW CAN WE DO?

Chapter: SOCIAL NETWORKS AND CRM SOCIAL CRM

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

Figure 113: Screenshot of ShoutMix settings

IN THE SHOUTBOX PROVIDER

Figure 114: Create user account in ShoutMix website

IN ORACLE CRM ON DEMAND


Once your account is created, you will be able to configure your web applets into Oracle CRM On Demand.
In this example we decided to create a global web applet in the action bar for users and a custom web tab
for the application administrator
WEB APPLET IN THE ACTION BAR

Chapter: SOCIAL NETWORKS AND CRM SOCIAL CRM

First action you need to perform is to create an account:

115

Figure 115: web applet to define the Shoutbox in the action bar

Insert the following code:


<iframe title="mathieuemanuelli" src="http://www.shoutmix.com/?mathieuemanuelli" width="100%"
height="460" frameborder="0" scrolling="auto"><a
href="http://www.shoutmix.com/?mathieuemanuelli">View shoutbox</a></iframe><br /><br /><!-- End
ShoutMix -->

To understand:
Yellow: Shoutbox ID defined in previous step

Chapter: SOCIAL NETWORKS AND CRM SOCIAL CRM

Result:

116

Figure 116: ShoutBox embedded in the action bar

Now we will create a web applet in a custom tab for the administrators usage:

Chapter: SOCIAL NETWORKS AND CRM SOCIAL CRM

WEB APPLET IN A CUSTOM TAB

117

Figure 117: Custom Web Tab created to embed the ShoutBox

We insert the following code:


http://mathieuemanuelli.shoutmix.net/
To understand:

Figure 118: ShoutBox embedded in a custom web tab

Note: you can also use this integration on your company website

Chapter: SOCIAL NETWORKS AND CRM SOCIAL CRM

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.

Chapter: WEB INTEGRATION

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

How can I create a link between Oracle CRM On Demand and


Skype?
Time to result

Complexity (1 to 5)

Gap with out of the box cap

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!

WHAT WE WOULD LIKE TO DO?


Many companies can use the Skype messaging system to communicate with other users or contacts
created in the CRM application.
Chapter: WEB INTEGRATION

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

HOW CAN WE DO?


To create a link that will run Skype you need to:
STEP 1: CREATE A FIELD THAT WILL STOCK THE CONTACT SKYPE ALIAS
We have chosen to create a short text custom field:

Figure 120: Custom field to keep the Skype user alias

Chapter: WEB INTEGRATION

STEP 2: CREATE A WEBLINK LAUNCHING THE APPLICATION

121

Figure 121: Weblink launching skype

The web link contains this value:


callto://%%%stSkype_alias%%%
Callto is the syntax to launch skype.
Note: do not forget to install skype in your local machine before proceeding to the customization

Time to result

Complexity (1 to 5)

Gap with out of the box cap

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?

BUSINESS CASES, WHEN SKYPE CAPABILITIES ARE USEFUL

Chapter: WEB INTEGRATION

How can I use Skype applet for support?

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

WHAT DO WE WANT TO DO?


We would like to embed Skype capabilities into OCOD to be able to integrate a support team using Oracle
CRM On Demand:

Figure 122: Skype in my action bar

HOW CAN WE DO?

Figure 123: Global web applet to embedded Skype into your action bar

The code is the following:


<div align="center">
<table width="100%

Chapter: WEB INTEGRATION

We have to create a global web applet embedded into the action bar:

123

" border="0">
<tr>
<td width="3%">&nbsp;</td>
<td width="97%">&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</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>&nbsp;</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

Figure 124: Skype: Allow your status visible

Chapter: WEB INTEGRATION

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

How can I create satisfaction survey, send it to customer and


measure feedback?
Time to result

Complexity (1 to 5)

Gap with out of the box cap

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

Figure 125: Create a satisfaction survey

Chapter: WEB INTEGRATION

125

Figure 126: Sending the survey to the customer (using a web link)

HOW CAN WE DO?


CREATE A SATISFACTION SURVEY
To create a satisfaction survey I use a great website named wufoo (http:// wufoo.com). On this website
you can create an account for free. During your account creation you will be able to create a subdomain
with the name you wish based on the following format:
http://<name>.wufoo.com/

Chapter: WEB INTEGRATION

Figure 127: Surveys results report embedded in a web applet

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

Figure 128: Wufoo form Gallery

Chapter: WEB INTEGRATION

Then, select the form template and add it to Wufoo form, that means forms related to your account

127

Figure 129: Add a form to your account

Figure 130: Selected form added to your account

Now you can edit the form to personalize it.


Note: you can also define a Theme adding your own company logo and you color coding by selecting
Themes tab.
CREATE LINK INTO OCOD TO SEND THE SURVEY TO THE CUSTOMER

Chapter: WEB INTEGRATION

When youll get back to your account homepage the selected form has been added:

128

GET YOUR FORMS LINK


To create a link in Oracle CRM On Demand we need to get the form path. To get it, click on Code:

Figure 131: To get the form path

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/

Chapter: WEB INTEGRATION

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

CREATE LINK WITH ORACLE CRM ON DEMAND


Create a weblink

Figure 133: Web Link create to send the form path

Here we have adapted the code by inserting an Oracle CRM On Demand variable:

Chapter: WEB INTEGRATION

To start, we will create a web link with the first code we get:

130

mailto:%%%Contact_Email%%%?subject=Check out my form!&body=Please take one minute to fill in this


form !%0A%0Ahttp://businessdecision.wufoo.com/forms/customer-satisfaction-survey/
To understand:
Yellow : Variable from Oracle CRM On Demand
Blue: Form path
Note: Dont forget to add the custom web link to your layout
Create a detail web applet
We create a detail web applet:

Figure 134: Detail web applet content

We can paste the code that we get before:


<iframe height="1999" allowTransparency="true" frameborder="0" scrolling="no"
style="width:100%;border:none" src="http://businessdecision.wufoo.com/embed/m7x3p9/"><a
href="http://businessdecision.wufoo.com/forms/m7x3p9/" title="Customer Satisfaction Survey"
rel="nofollow">Fill out my Wufoo form!</a></iframe>

Chapter: WEB INTEGRATION

Note: Dont forget to add the custom web link to your layout related information

131

Lets check the result with both integrations:

Figure 135: Result view of both integrations

CREATE A REPORT EMBEDDED INTO A WIDGET

Figure 136: Click on Widget in reports created

Select the view that you want to embed and copy-paste the code:

Chapter: WEB INTEGRATION

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 137: Widget code

Figure 138: Paste the widget code into a homepage web applet

See the result:

Chapter: WEB INTEGRATION

Once the code paste, lets get back to Oracle CRM On Demand and copy this code into a service homepage
web applet:

133

Figure 139: Embedded report result on homepage

How can i create a link between Oracle CRM On Demand and


Gmail?
Time to result

Complexity (1 to 5)

Gap with out of the box cap

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?

We would like to be able to launch Gmail with a preconfigured email template:

Chapter: WEB INTEGRATION

WHAT DO WE WANT TO DO?

134

Figure 140: Link between Oracle CRM On Demand and Gmail

HOW CAN WE DO?


STEP1: CREATE A WEBLINK

Figure141: Weblink creation

The code to adapt including all the fields that you want to integrate is the following:

Chapter: WEB INTEGRATION

Create a web link based on the following syntax:

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

STEP2: SHOW THE WEBLINK INTO THE LAYOUT

Figure 142: Gmail link created in Oracle CRM On Demand

How can i send email with Gmail or Microsoft Outlook?


Time to result

Complexity (1 to 5)

Gap with out of the box cap

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.

WHAT DO WE WANT TO DO?


Lets imagine that the email content comes from the activity object. Then, the idea is to create a report in
real Time that replicates activities information.

Chapter: WEB INTEGRATION

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

HOW CAN WE DO?


For the involved report, we need to add a link that opens Gmail or Microsoft Outlook Messaging System
and fill in tags based on the report result (so on activities data).
CREATE FIELDS TO CREATE EMAIL
In our example we would like to link the activity content with the following fields:

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:

Chapter: WEB INTEGRATION

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):

Chapter: WEB INTEGRATION

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

The formula is:


'<a href="https://mail.google.com/mail/?view=cm&fs=1&tf=1&cmid=8&to=' || Activity.TEXT_0 || ' &su='
|| Activity.Subject || '&body=' || Activity.Description || '"onClick="Pop()">Send by Gmail</a>'
We concatenate several parts of the final link. Parts of this link are dynamic (based on column result) and
static (based on URL that calls Gmail).
To understand:

Activity.TEXT_0 : Recipient email


Activity.Subject: Activity subject, that will be the email object
Activity.Description: will be the email body

Gmail Link: this link will allow us to create the bridge between the report and Microsoft Outlook
Messaging system:

Chapter: WEB INTEGRATION

CREATE OUTLOOK LINK

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

The formula is:

Chapter: WEB INTEGRATION

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

Chapter: WEB INTEGRATION

The narrative view syntax is the following:

141

The code is the following:


<div align="center">
<table width="200" border="0">
<tr>
<td><div align="center"><img src="http://www.start64.com/images/news/linux/gmail.gif"
/></div></td>
<td><div align="center"><img src="http://img.labnol.org/di/microsoft_outlook1-50x50.jpg"
/></div></td>
</tr>
</table>
</div>
To understand:
Yellow: URL to see logos
Note: These links have been taken to see pictures of Gmail and Microsoft Outlook logos. You could use
others URL.
STEP 4: CREATE THE LINK BETWEEN THE REPORT AND THE TASK
This weblink will open the report from the activity layout To do that, we have created a new field type
Weblink with the following URL's formula:
https://secure-ausomxdsa.crmondemand.com/OnDemand/user/analytics/saw.dll?Go
&Path=%2fshared%2fCompany_HE3678-1JAZ2_Shared_Folder%2fGmail
&Options=rfd&Action=Navigate&p0=1&p1=eq&p2=Activity."Activity ID"&p3=%%%Id%%%
To understand
Yellow: change with your pod
Blue: report path and webapplet parameters

Figure 151: Web link that will run the report where you created the the link between Oracle CRM On demand and Gmail

Note: Do not forget to add this field on the layout.

Chapter: WEB INTEGRATION

Here after the screenshot of the configuration:

142

How can i embed Google capabilities?


Time to result

Complexity (1 to 5)

Gap with out of the box cap

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

Chapter: WEB INTEGRATION

143

Figure 152: Google applications embedded into Oracle CRM On Demand

HOW CAN WE DO?


We will create global web applets using the following codes:

Figure 153: Web applet to embed Google documents

The code is the following:


<script
src="http://gmodules.com/ig/ifr?url=http://www.google.com/ig/modules/docs.xml&up_numDocuments=
5&up_showLastEdit=1&synd=open&w=320&h=165&title=&lang=en&country=ALL&border=%23ffffff%7C3
px%2C1px+solid+%23999999&output=js"></script>

Chapter: WEB INTEGRATION

Google documents

144

Picasa

Figure 154: Web applet to embed Picasa

Following code to embed:


<script
src="http://www.gmodules.com/ig/ifr?url=http://hosting.gmodules.com/ig/gadgets/file/11194006428576
3051554/picasasmadgadget.xml&amp;up_myuser=mathieu.emanuelli&amp;up_size_fav=32&amp;up_siz
e_alb=64&amp;up_size_pho=48&amp;up_fav_acti=5&amp;up_maxheight=500&amp;synd=open&amp;w=
320&amp;h=300&amp;title=&amp;border=%23ffffff%7C3px%2C1px+solid+%23999999&amp;output=js"><
/script>

To understand:
Yellow: Alias to connect to your google account

Chapter: WEB INTEGRATION

Get Direction

145

Figure 155: Web applet to get direction from Google Map

The code to insert is the following:


<script
src="http://www.gmodules.com/ig/ifr?url=http://igwidgets.com/lig/gw/f/islk/89/slkm/ik/s/1329844/87/c
harles447/google-maps-drivingdirections.xml&amp;up_from=&amp;up_to=&amp;up_country=6&amp;synd=open&amp;w=320&amp;h=
154&amp;title=&amp;lang=fr&amp;country=ALL&amp;border=%23ffffff%7C3px%2C1px+solid+%2399999
9&amp;output=js"></script>

Note: to be able to run these widgets into Oracle CRM On Demand you will need to connect to your Google
account.

How can i embed Google talk into Oracle CRM On Demand?


Time to result

Complexity (1 to 5)

Gap with out of the box cap

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?

Chapter: WEB INTEGRATION

INTRODUCTION

146

We want to embed google talk as a part of the action bar in Oracle CRM On Demand.

Figure 156: GTalk embedded 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?

Chapter: WEB INTEGRATION

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.

Figure 158: Result of GTalk embedded in Oracle CRM on Demand

Note: you need to have a Gmail account and need to be logged in.

How to create Web Applet with Google Maps?


Time to result

Complexity (1 to 5)

Gap with out of the box cap

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:

Chapter: WEB INTEGRATION

Plan your clients visits

148

Figure 159: Google map mash up example

HOW CAN WE DO?

Figure 160: Web applet to realize a Google map Mash up

The code that you need to integrate is:

Chapter: WEB INTEGRATION

Configure web applet as follow:

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.

How can I send SMS from the application (using email)?


Time to result

Complexity (1 to 5)

Gap with out of the box cap

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?

Chapter: WEB INTEGRATION

We would like to send personalized SMS related to an event created on Oracle CRM On demand.

150

Figure 161: Oracle CRM On Demand to send SMS automatically

HOW CAN WE DO?


Using an external provider and some tricks in Oracle CRm On Demand, lets see more details:
Some SMS providers could offer the capability to send SMS where information requested come from an
email content. For this example we use the SMS provider named Ensedex (www.esendex.com).
CREATE AN ACCOUNT ON THE PROVIDERS SITE
First, you need to create an account on the provider website to be able to send SMS
Once this account is created you will find in their website the target domain where you need to send your
email and the email format you have to use as well.
For instance Esendex needs you to use the following format:
phone_number@esendex.net
PREPARE SENDING DETAILS

Chapter: WEB INTEGRATION

Into the account console, you can change the senders alias:

151

Figure 162: New sender's alias defined

SET UP USERS

Figure 163: Adding users who will send SMS

Chapter: WEB INTEGRATION

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

Figure 164: Workflows

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.

Chapter: WEB INTEGRATION

FIRST WORKFLOW DETAIL

153

In the first workflow we have to send an email to the SMS provider with the following information:

User email address (as defined in their website)


Our company account
This email has to be sent in a specific email address: support@esendex.net

Figure 165: Workflow creation to authorize the user account usage

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

Chapter: WEB INTEGRATION

SECOND WORKFLOW DETAIL

154

Figure 166: Example of static and dynamic content

Note: recipient email address is defined with the following syntax:


[<PrimaryContact_phone_number>]||'@esendex.net'

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

Chapter: WEB INTEGRATION

By using a SMS provider you could have an access to sending statistic such as.

155

Figure 167: Reports based on SMS quota used by user

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)

Gap with out of the box cap

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.

Chapter: WEB INTEGRATION

INTRODUCTION

156

BUSINESS CASES, WHEN VOICE SMS IS USEFUL


Every time that you want to say something to your interlocutor without disturbing him, use this mean,
people appreciate you indirectly speaking to them.
I remember the first time I received a voice SMS: it was during the French presidential elections. A well
known candidate had chosen to use this channel to communicate with his potential electors. I found it was
a great idea so we start to think about a way to configure Oracle CRM On Demand to use this channel and
happily, we found it, this is this How Tos topic !
WHAT DO WE WANT TO DO?
We would like to send a personalized voice SMS automatically from Oracle CRM On Demand to our clients
and prospects to invite them to a coming up event.

Figure 168: Oracle CRM On Demand to send Voice SMS automatically

HOW CAN WE DO?


Some SMS providers offer the capability to send SMS where information requested come from an email
content. For this example we use the SMS provider named Esendex (www.esendex.com), we are
absolutely sure you can find many others if you look for.
CREATE AN ACCOUNT
First, you need to create an account on the providers website to be able to send SMS
Once this account created you, will find in they will indicate to you the domain where you need to send
your email and the email format that you have to use as well. For instance Esendex needs you to use the
following format:

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:

Chapter: WEB INTEGRATION

phone_number@voice.esendex.net

157

Figure 169: Adding users who will send SMS

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

Figure 170: Workflows and 2 actions

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:
-

In the first User email address (as defined in their website)

Chapter: WEB INTEGRATION

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

Our company account


This email has to be sent in a specific email address: support@esendex.net

Figure 171: Workflow creation to authorize the user account usage

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

Chapter: WEB INTEGRATION

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

Figure 172: Example of content

Note: recipient email address is defined with the following syntax:


[<PrimaryContact_phone_number>]||'@voice.esendex.net'

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

Chapter: WEB INTEGRATION

By using a SMS provider you can monitor statistics such as:

160

Figure 173: Reports based on SMS quota used by user

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)

Gap with out of the box cap

40 Mins

Level 2.5

60%

BUSINESS CASES, WHEN SENDING SMS BY HTTP IS USEFUL

WHAT DO WE WANT TO DO?


We would like to send personalized SMS based on a template coming from the application

Chapter: WEB INTEGRATION

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

Figure 174: Oracle CRM On Demand to send SMS

HOW CAN WE DO?


Some SMS providers could offer the capability to send SMS thanks to the HTTP protocol. For this example
we use the SMS provider named SMS Bull (www.smsbull.com). As for each provider, we are sure you can
find many others if you navigate for a couple of minutes in the internet.
STEP 1: CREATE A DYNAMIC WEBLINK
Include in the contact layout a weblink that will be later personalized in order to call the http request

Figure 175: Overview of web link created

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:

Yellow elements come from application


Blue elements let the request open the sms provider account

Chapter: WEB INTEGRATION

STEP 2: CREATE THE HTTP REQUEST

162

Figure 176: Web link configuration to send SMS

Chapter: WEB INTEGRATION

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 !

In this chapter we will offer to you new tips and tricks.

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

How can i calculate a gap between 2 dates (Timestampdiff


function)?
Time to result

Complexity (1 to 5)

Gap with out of the box cap

30 Mins

Level 2

10%

WHAT DO WE WANT TO DO?


I would like to calculate a gap between 2 dates in a report.
HOW DO WE DO?
We will use the timestampdiff. Hereafter is an example of the usage in a formula:
TIMESTAMPDIFF(SQL_TSI_MONTH, Campaign."End Date",CURRENT_TIMESTAMP)
To understand:

Figure 177: formula pasted to calculate a gap between two dates

Chapter: EXCLUSIVE !

- TIMESTAMPDIFF is the formula that calculate gap between 2 dates


- SQL_TSI_MONTH expresses the unit uses for the comparison MONTH can be changed by YEAR or DAY
- Campaign."End Date" : column chosen for the example. We can adapt with the column you want
- CURRENT_TIMESTAMP corresponds to the date of today

165

How can I create a graphical tree view?


Time to result

Complexity (1 to 5)

Gap with out of the box cap

60 Mins

Level 3

80%

WHAT DO WE WANT TO DO?


We would like to create a view showing graphically the context of a pivot object. This tree view will be
embedded in a web applet and will be filtered for 1 account.
For this example the pivot object is the account, and we just create a tree view that concern the contacts
related to:

Figure 178: Tree view

HOW COULD WE DO?


To cover this type of needs we will use narrative reports capabilities.
CHOOSE THE SUBJECT AREA
The subject area that we will choose is the one that concerns the pivot objet we would like to create a tree
view. In our case, the object is the account.
CREATE A REPORT
In our report we need to following information:
Account name
Contact name
Contact ID: if you want to create a action link in your tree view
Contact job title

Figure 179: report based on "account pivot object"

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:

Figure 180: Filter apply to restrict result

CREATE NARRATIVE VIEWS


We will now create narrative views showing:
Name of the account and contacts information:

Figure 181: Pivot Object definition

We will create 3 narrative views:


1. First to show account name
2. Second with only text containing the following text: Contacts:
3. Third containing all contact details

Chapter: EXCLUSIVE !

A narrative view will works on the same logic:


You can catch the information you want with this syntax @ and number of the report column
Rows to display will allow you to repeat the result in the case when a result line aggregate many
result lines

167

Figure 182: Narrative views defined in the report layout step

Lets focus on the contact narrative view:

Figure 183: Code to apply hyperlink on results

Adapt the following syntax:


<P ALIGN="LEFT"> <a
href="/OnDemand/user/ContactDetail?OMTGT=ContactDetailForm&OMTHD=ContactDetailNav&OMRET0
=ContactHomePage&OCTYPE=&ContactDetailForm.Id=@2">|_@1</a><br>

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

EMBED THE REPORT

Chapter: EXCLUSIVE !

To understand:

168

You can now embed your report filtering it with the Account Id. Do not forget to remove the title.

How can I prompt a report since an image?


Time to result

Complexity (1 to 5)

Gap with out of the box cap

70 Mins

Level 2

100%

WHAT DO WE WANT TO DO?

Figure 184: result of a report prompted thanks to a picture

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

FIND THE PICTURE


Find a picture that will be used to be the visible layer that will be visible to users. Once the picture found,
we need to copy this picture on a hosted server.
DEFINE POLYGONS IN YOUR PICTURE
Now we will split the picture on polygons that will define the prompt value of our report. To create
polygons we can use software like Dreamweaver or free application such as http://www.imagemaps.com.

Figure 185: Insert Polygon

COPY THE POLYGON CODE

Chapter: EXCLUSIVE !

To do that (example with Dreamweaver usage):


Open the picture in Adobe Dreamweaver
Draw your polygon into the picture

170

The code that interests us is the one between <Map> and < /Map> tags:

Figure 186: Copy the polygon code definition

WORK ON ORACLE CRM ON DEMAND


We will do the mapping between a report we have already created and the picture we have just worked.
On.
WORK ON PICTURE IN OCOD

Chapter: EXCLUSIVE !

On the step 3 in Oracle Answer select image prompt:

171

Figure 187: Step 3 : "invite d'image"

In the window we need to define:


Picture title
Picture path
Polygon code

The html code is based on the following syntax:


<map name="Map">
<area shape="poly" coords="281,107,298,115,304,112,314,121,317,147,308,166,292,169,272,134" href="
" title="Valeur dans la colonne filtrer">
</map>
WORK ON THE MAPPING BETWEEN PICTURE AND REPORT

Chapter: EXCLUSIVE !

Figure 188: define code for a polygon

172

At this step, we just need to create the mapping as following:

Figure 189: Map Polygon with report

The column name can be picked up by clicking on the fx button on report


The column value corresponds to the value on which we would like to apply the report prompt

Chapter: EXCLUSIVE !

173

174

Chapter: EXCLUSIVE !

Figure 1: Parent campaign and child campaigns associated ............................................................................ 2


Figure 2: Create a related record from custom related information ............................................................... 3
Figure 3: Create the Related custom field ........................................................................................................ 3
Figure 4: Related custom field in page layout .................................................................................................. 4
Figure 5: Custom field displayed on the layout ................................................................................................ 4
Figure 6: New web applet "Related Task" ........................................................................................................ 5
Figure 7: Button created in the custom related information ........................................................................... 6
Figure 8: Report embedded showing the related record ................................................................................. 6
Figure 9: column selected to create the report embedded ............................................................................. 7
Figure 10: Web applet with the whole code .................................................................................................... 7
Figure 11: Expected result, a new related information including a button ..................................................... 9
Figure 12: Button New for a service request ................................................................................................ 9
Figure 13: Layout launched after the click ..................................................................................................... 10
Figure 14: Web applet hosting the code to create custom related information with custom behavior button
........................................................................................................................................................................ 11
Figure 15: Link created in the action bar........................................................................................................ 12
Figure 16: Many links in the action bar .......................................................................................................... 12
Figure 17: Global web applet created to embed a web applet in the action bar .......................................... 13
Figure 18: Global web applet created to embed a web applet (more complex) in the action bar................ 13
Figure 19: Web link created to copy a record ................................................................................................ 15
Figure 20: Code to copy a record pasted in the web link definition .............................................................. 16
Figure 21: Example of a concatenate formula at a field definition level ....................................................... 18
Figure 22: Example of syntax pasted in the field to calculate the end date of warranty .............................. 19
Figure 23: Field in automatically in upper case .............................................................................................. 20
Figure 24: Web Global applet to host the JavaScript ..................................................................................... 20
Figure 25: Simple custom look catching one field content ............................................................................ 22
Figure 26: View selection code....................................................................................................................... 23
Figure 27: Click on Column Properties ........................................................................................................... 23
Figure 28: Insert the code in Data Format Tab............................................................................................... 24
Figure 29: Report built overview .................................................................................................................... 24
Figure 30: Create a web link with the report path ......................................................................................... 25
Figure 31: Button created to run the custom look up.................................................................................... 26
Figure 32: Global Web applet displayed in the action bar ............................................................................. 28
Figure 33: Link to the custom lookup ............................................................................................................. 29
Figure 34: Fields that have been filled in ....................................................................................................... 29
Figure 35: Right click and select view Source ................................................................................................. 30
Figure 36: Edit page source and search the system name thanks to fields display name ............................. 30
Figure 37: Copy system name ........................................................................................................................ 31
Figure 38: Columns selected to create our report ......................................................................................... 31
Figure 39: filter to display only opportunities owned by the displayed contact ........................................... 32
Figure 40: Custom format used ...................................................................................................................... 33
Figure 41: Fx definition ................................................................................................................................... 34
Figure 42: Add a narrative view ..................................................................................................................... 35
Figure 43: Code to paste in the narrative view .............................................................................................. 35
Figure 44: Copy the report path ..................................................................................................................... 37
Figure 45: Create the custom web link........................................................................................................... 38

Figure 46: Detail on the formula used............................................................................................................ 38


Figure 47: Validation message after applying workflow to restrict opportunity status changes .................. 40
Figure 48: Example of pivot field used to monitor some variables evolution ............................................... 42
Figure 49: Workflow defined to monitor some variables evolution .............................................................. 42
Figure 50: Workflow definition to monitor some variables evolution ........................................................... 42
Figure 51: Date to monitor some variables evolution ................................................................................... 43
Figure 52: Example of custom buttons created ............................................................................................. 44
Figure 53: Workflow formula to calculate final date depending on the department rule based on the
original date.................................................................................................................................................... 50
Figure 54: Syntaxe dfinie dans la validation du champ ................................................................................ 57
Figure 55: I Frame in Homepage. Illustration from a customer ..................................................................... 58
Figure 56: I Frame in Homepage. Illustration from a customer ..................................................................... 59
Figure 57: Scroll bar in the action bar ............................................................................................................ 63
Figure 58: Web applet to create scroll bar ..................................................................................................... 63
Figure 59: Out of the box "Log a Call" label ................................................................................................... 64
Figure 60: Label "Log a Call" after applying modification code ..................................................................... 65
Figure 61: Code to paste in a web applet to change the "Log a Call" label ................................................... 66
Figure 62: Web Applet embedded to modify "Log A Call" label .................................................................... 66
Figure 63: Information Bubble with text ........................................................................................................ 68
Figure 64: Information Bubble on image ....................................................................................................... 69
Figure 65: Web applet hosted the code ......................................................................................................... 69
Figure 66: Oracle CRM On Demand to mass merge ....................................................................................... 75
Figure 67: Narrative view ............................................................................................................................... 75
Figure 68: Web link created ........................................................................................................................... 78
Figure 69: Click on the link ............................................................................................................................. 79
Figure 70: Right click and select Print Preview ............................................................................................... 79
Figure 71: Preview mode................................................................................................................................ 80
Figure 72: Settings .......................................................................................................................................... 80
Figure 73: Primary account in recipient related information......................................................................... 81
Figure 74: Change description field to "Read Only" ....................................................................................... 81
Figure 75: Workflow syntax at the first expression level ............................................................................... 82
Figure 76: Check "Post Value default" to Yes ............................................................................................... 82
Figure 77: Integrate social monitoring with Oracle CRM On Demand ........................................................... 84
Figure 78: Create a web applet that embed Social Mention platform .......................................................... 85
Figure 79: Result of social network monitoring embedded into Oracle CRM On Demand ........................... 86
Figure 80: Social Network Contact scoring embedded into Oracle CRM On Demand................................... 87
Figure 81: Field create in Oracle CRM On Demand ........................................................................................ 88
Figure 82: Web applet to create .................................................................................................................... 88
Figure 83: Result of social network measurement tool ................................................................................. 91
Figure 84: Search module created in report .................................................................................................. 92
Figure 85: Narrative views created ................................................................................................................ 93
Figure 86: First narrative view ........................................................................................................................ 94
Figure 87: second narrative view ................................................................................................................... 95
Figure 88: Global web applet ......................................................................................................................... 96
Figure 89: Twitter link created with oracle CRM on demand through a web link ......................................... 97
Figure 90: Web applet with the link between Oracle CRM On Demand and Twitter .................................... 98

Figure 91: field created to fill in Twitter ID .................................................................................................... 98


Figure 92: Create a web link to make a link between Oracle CRM On Demand and Twitter ........................ 99
Figure 93: Add the field on the layout............................................................................................................ 99
Figure 94: Web applet used to make a link between Oracle CRM On Demand and Twitter ....................... 100
Figure 95: Tweets generated by Oracle CRM On Demand ........................................................................... 101
Figure 96: Create your account .................................................................................................................... 102
Figure 97: Disable sender verification .......................................................................................................... 102
Figure 98: Workflow defined ........................................................................................................................ 103
Figure 99: Tweet generated ......................................................................................................................... 104
Figure 100: LinkedIn link with a button ........................................................................................................ 105
Figure 101: Yammer Integration to read and send messages...................................................................... 107
Figure 102: Connection created ................................................................................................................... 108
Figure 103: Navigate through Duzzit library................................................................................................. 108
Figure 104: Select yammer category ............................................................................................................ 109
Figure 105: Select Mini apps to display yammer message .......................................................................... 109
Figure 106: Select Widget and copy the code .............................................................................................. 110
Figure 107: Creating Yammer message widget code selection.................................................................... 110
Figure 108: Web applet that displayed Yammer messages ......................................................................... 111
Figure 109: Web applet that create Yammer messages .............................................................................. 111
Figure 110: Xing web applet on the contact object ..................................................................................... 112
Figure 111: Web applet created to link Xing with Oracle CRM On Demand................................................ 113
Figure 112: On the left you can find the ShoutBox embedded into Oracle CRM On Demand .................... 114
Figure 113: Screenshot of ShoutMix settings............................................................................................... 115
Figure 114: Create user account in ShoutMix website ................................................................................ 115
Figure 115: web applet to define the Shoutbox in the action bar ............................................................... 116
Figure 116: ShoutBox embedded in the action bar...................................................................................... 117
Figure 117: Custom Web Tab created to embed the ShoutBox................................................................... 118
Figure 118: ShoutBox embedded in a custom web tab ............................................................................... 118
Figure 119: Skype that appears from a web link in Oracle CRM On Demand.............................................. 121
Figure 120: Custom field to keep the Skype user alias................................................................................. 121
Figure 121: Weblink launching skype ........................................................................................................... 122
Figure 122: Skype in my action bar .............................................................................................................. 123
Figure 123: Global web applet to embedded Skype into your action bar ................................................... 123
Figure 124: Skype: Allow your status visible ................................................................................................ 124
Figure 125: Create a satisfaction survey ...................................................................................................... 125
Figure 126: Sending the survey to the customer (using a web link) ............................................................ 126
Figure 127: Surveys results report embedded in a web applet .................................................................. 126
Figure 128: Wufoo form Gallery ................................................................................................................... 127
Figure 129: Add a form to your account ...................................................................................................... 128
Figure 130: Selected form added to your account ....................................................................................... 128
Figure 131: To get the form path ................................................................................................................. 129
Figure 132: To embed the form into a web applet we can copy JavaScript or iFrame code ....................... 130
Figure 133: Web Link create to send the form path .................................................................................... 130
Figure 134: Detail web applet content ......................................................................................................... 131
Figure 135: Result view of both integrations ............................................................................................... 132
Figure 136: Click on Widget in reports created ............................................................................................ 132

Figure 137: Widget code .............................................................................................................................. 133


Figure 138: Paste the widget code into a homepage web applet................................................................ 133
Figure 139: Embedded report result on homepage ..................................................................................... 134
Figure 140: Link between Oracle CRM On Demand and Gmail.................................................................... 135
Figure141: Weblink creation ........................................................................................................................ 135
Figure 142: Gmail link created in Oracle CRM On Demand ......................................................................... 136
Figure 143: Link between Oracle CRM On Demand, Gmail or outlook keeping in Oracle CRM On Demand
content ......................................................................................................................................................... 137
Figure 144: Report created to create a link between Oracle CRM On Demand and Gmail or outlook ....... 138
Figure 145: Formula created to build the link between Oracle CRM On Demand and Gmail keeping in
Oracle CRM On Demand content ................................................................................................................. 138
Figure 146: Define the column as "html" to insert the formula to link OCOD with Gmail .......................... 139
Figure 147: Formula created to build the link between Oracle CRM On Demand and Microsoft Outlook . 140
Figure 148: Define the column as "html" to insert the formula to link OCOD with Microsoft Outlook ...... 140
Figure 149: Narrative preview to link OCOD with Gmail or Microsoft Outlook........................................... 141
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
Figure 152: Google applications embedded into Oracle CRM On Demand ................................................. 144
Figure 153: Web applet to embed Google documents ................................................................................ 144
Figure 154: Web applet to embed Picasa .................................................................................................... 145
Figure 155: Web applet to get direction from Google Map ......................................................................... 146
Figure 156: GTalk embedded in Oracle CRM on Demand ............................................................................ 147
Figure 157: Web applet created to embed GTalk into Oracle CRM on Demand ......................................... 147
Figure 158: Result of GTalk embedded in Oracle CRM on Demand............................................................. 148
Figure 159: Google map mash up example .................................................................................................. 149
Figure 160: Web applet to realize a Google map Mash up .......................................................................... 149
Figure 161: Oracle CRM On Demand to send SMS automatically................................................................ 151
Figure 162: New sender's alias defined........................................................................................................ 152
Figure 163: Adding users who will send SMS ............................................................................................... 152
Figure 164: Workflows ................................................................................................................................. 153
Figure 165: Workflow creation to authorize the user account usage.......................................................... 154
Figure 166: Example of static and dynamic content .................................................................................... 155
Figure 167: Reports based on SMS quota used by user ............................................................................... 156
Figure 168: Oracle CRM On Demand to send Voice SMS automatically ...................................................... 157
Figure 169: Adding users who will send SMS ............................................................................................... 158
Figure 170: Workflows and 2 actions ........................................................................................................... 158
Figure 171: Workflow creation to authorize the user account usage.......................................................... 159
Figure 172: Example of content ................................................................................................................... 160
Figure 173: Reports based on SMS quota used by user ............................................................................... 161
Figure 174: Oracle CRM On Demand to send SMS....................................................................................... 162
Figure 175: Overview of web link created.................................................................................................... 162
Figure 176: Web link configuration to send SMS ......................................................................................... 163
Figure 177: formula pasted to calculate a gap between two dates ............................................................. 165
Figure 178: Tree view ................................................................................................................................... 166
Figure 179: report based on "account pivot object" .................................................................................... 166

Figure 180: Filter apply to restrict result ...................................................................................................... 167


Figure 181: Pivot Object definition............................................................................................................... 167
Figure 182: Narrative views defined in the report layout step .................................................................... 168
Figure 183: Code to apply hyperlink on results ............................................................................................ 168
Figure 184: result of a report prompted thanks to a picture ....................................................................... 169
Figure 185: Insert Polygon............................................................................................................................ 170
Figure 186: Copy the polygon code definition ............................................................................................. 171
Figure 187: Step 3 : "invite d'image" ............................................................................................................ 172
Figure 188: define code for a polygon ......................................................................................................... 172
Figure 189: Map Polygon with report .......................................................................................................... 173

TO BE CONTINUED, BUT IT DEPENDS ON YOU!

This book is free and represents the first volume we achieved. We have many other tips to share with you
such as:

How to manage bundle product with Oracle CRM On Demand?


How can I create a form that create many records with their association without any external
hosting ?
How can I create widget based on reports?
How can I embed a picture on my lead layout ?
How can I customize more the conversion layout ?
How can I create a tree view (account hierarchy for instance) in customizing the application?

and many others

Then, dont hesitate to give us your feedback on this book and dont hesitate to be a part of our electronic
social Life ! :

Twitter account dedicated to the book: @TTOCOD


Group in linked In : TTOCOD
Facebook: Click here

Mathieu Emanuelli in linkedIn : Mathieu Emanuelli


Joann Alejandra Bravo in LinkedIn: http://fr.linkedin.com/in/joannalejandrobravo

Vous aimerez peut-être aussi