Transcript
Developing Applications for the Service Cloud
Developers
Gautam Vasudev: salesforce.comScott Sanders : Stone Cobra
Session Objectives
Develop requirements typical of a customer service
organization to Service Cloud functionality
Discover new functionality in the Service Cloud like
Entitlements and Service Cloud Console that enable
goals of the customer service organization
Session Outline
Entitlement Management and Entitlement Processes – Setting up a First
Response Milestone
Variations on ownership changes: The Get Next Case and Get Next Lead
button
The Service Cloud Console Integration Toolkit: Developing with the
Service Cloud Console
30 Minutes
Stone Cobra Service Cloud Console Integration
15 Minutes
Q&A
15 Minutes
Safe HarborSafe harbor statement under the Private Securities Litigation Reform Act of 1995: This presentation may contain forward-looking statements that involve risks, uncertainties, and assumptions. If any such uncertainties materialize or if any of the assumptions proves incorrect, the results of salesforce.com, inc. could differ materially from the results expressed or implied by the forward-looking statements we make. All statements other than statements of historical fact could be deemed forward-looking, including any projections of subscriber growth, earnings, revenues, or other financial items and any statements regarding strategies or plans of management for future operations, statements of belief, any statements concerning new, planned, or upgraded services or technology developments and customer contracts or use of our services.
The risks and uncertainties referred to above include – but are not limited to – risks associated with developing and delivering new functionality for our service, our new business model, our past operating losses, possible fluctuations in our operating results and rate of growth, interruptions or delays in our Web hosting, breach of our security measures, the outcome of intellectual property and other litigation, risks associated with possible mergers and acquisitions, the immature market in which we operate, our relatively limited operating history, our ability to expand, retain, and motivate our employees and manage our growth, new releases of our service and successful customer deployment, our limited history reselling non-salesforce.com products, and utilization and selling to larger enterprise customers. Further information on potential factors that could affect the financial results of salesforce.com, inc. is included in our annual report on Form 10-K for the most recent fiscal year ended January 31, 2010. This documents and others are available on the SEC Filings section of the Investor Information section of our Web site.
Any unreleased services or features referenced in this or other press releases or public statements are not currently available and may not be delivered on time or at all. Customers who purchase our services should make the purchase decisions based upon features that are currently available. Salesforce.com, inc. assumes no obligation and does not intend to update these forward-looking statements.
Entitlements & Service Contracts – An Introduction
Define service levels for support products and
programs
Manage customers’ entitlements & service contracts
Verify customers are eligible for support
Enforce detailed service levels with time-dependent,
automated processes
A First Response Milestone
Represents how quickly your support organization must
respond to a customer case
Often defined as the elapsed time from when a case is
opened until a member of the support organization
starts diagnosing the problem
Usually marked by notifying the customer that their
issue is being addressed either via email, a comment
on the case or both
Case Comment First Response Milestone
Objective – Set up first response milestone with triggers
Demo, Code , milestoneUtils
Auto-completion of First Response Milestone: Code Snippet
1 trigger completeFirstResponseCaseComment on CaseComment (after insert) {
2 if (UserInfo.getUserType() == 'Standard'){
3 DateTime completionDate = System.now();
4 List<Id> caseIds = new List<Id>();
5 for (CaseComment cc : Trigger.new){
6 if(cc.IsPublished == true) // Only public comments qualify
7 caseIds.add(cc.ParentId);
8 }
9 if (caseIds.isEmpty() == false){
10 List<Case> caseList = [Select c.Id, c.ContactId, c.Contact.Email, c.OwnerId, c.Status, c.EntitlementId, c.SlaStartDate, c.SlaExitDate
11 From Case c Where c.Id IN :caseIds];
12 if (caseList.isEmpty() == false){
13 List<Id> updateCases = new List<Id>();
14 for (Case caseObj:caseList) {
15 if ((caseObj.Status == 'In Progress')&&
16 (caseObj.EntitlementId != null)&&
17 (caseObj.SlaStartDate <= completionDate)&&
18 (caseObj.SlaStartDate != null)&&
19 (caseObj.SlaExitDate == null))
20 updateCases.add(caseObj.Id);
21 }
22 if(updateCases.isEmpty() == false)
23 milestoneUtils.completeMilestone(updateCases, 'First Response', completionDate);
24 }
25 …
No Cherry Picking – The Get Next Case Button
Call centers sometimes want to prevent agents from
cherry-picking cases and leads from queues those
agents belong to
Easily done in salesforce.com by –– Looking up the queues that the agent is a member of
– Finding the next open case or lead assigned to one of those
queues
– Assigning the case or lead to agent
Get Next Case and Get Next Lead button
Objective – Create a “Get Next” button to assign cases/
leads to agents
Demo, Code, Get Next Case Button
Get Next Case – Code Snippet1 webService static Id retrieveNextCase(String userId){
2 …
3 //First find out which queues this user is a member of
4 List<Id> listGroupIds = getQueuesForUser(userId);
5 if(listGroupIds.size()>0){
6 //Find an open case that is assigned to one of those queues
7 Case caseObj = [select c.Id,c.OwnerId from Case c where
8 c.IsClosed=false
9 and c.OwnerId in :listGroupIds
10 limit 1
11 for update];
12 if (caseObj!=null) {
13 //If we found one, assign it to the current user
14 caseObj.OwnerId = userId;
15 update caseObj;
16 return caseObj.Id;
17 }
18 }
19 return null;
20 }
Service Cloud Console
Many customers have high transaction volume
environments
Agents are not always able to wrap up a case
Agents require contextual information
Fewer clicks make better user experience
Easier navigation makes learning easier
Developing with the Service Cloud Console
Objective – Use Service Cloud Console Integration
Toolkit to open tabs within the Service Cloud Console
Demo, Code
Service Cloud Console Integration – Code Snippet
1 <apex:page showHeader="false" sidebar="false" standardController="Bill__c">
2 <apex:includeScript value="/support/console/20.0/integration.js"/>
3 <script type="text/javascript">
4 <!-- Set the title of the current tab -->
5 function setTitle() {
6 sforce.console.setTabTitle('Bill 09/2010');
7 }
8 function goToBalances() {
9 <!-- Open a subtab under a given primary tab -->
10 var loadScreen =
11 function loadScreen(result) {
12 sforce.console.openSubtab(result.id,'/apex/OracleBilling3',true,'Balances');
13 }
14 sforce.console.getEnclosingPrimaryTabId(loadScreen);
15 }
16 </script>
17 <img src="{!$Resource.OracleBilling1}" usemap="#bill" border="0" onload="setTitle()"/>
18 <map name="bill">
19 <area shape="rect" coords="571,431,742,459" href="javascript:goToBalances()"/>
20 </map>
21 </apex:page>
Scott Sanders
Stone Cobra
Service Cloud Console – Benefits
First Javascript API built specifically for partners
Improved performance– Fewer objects in a transaction
– Smaller page size, faster response time, fewer re-loads
Richer user experience– No longer limited to ‘just a related list’
– Need a VF component on the page in edit mode?
– Better way to show sibling or child relationships
Better Salesforce citizen– No need to take over an entire page to add a feature
Service Cloud Console – Best Practices
Smaller pages– Focused features improve UX, code maintenance
– Prevents duplicating existing work (no need to override the
case page)
Discipline for componentization– Code level – think re-use
– Package level – do one thing well
Prepare for the Service Cloud Console– Test pages in both modes
– API defense (checking for one mode if necessary)
Service Cloud Console – Tips & Gotchas
Pre-load console tabs on case open– Zero height VF component can open multiple subtabs
automatically via JS API
Think user experience, not data model– Task completion is the goal, not just listing fields
Javascript Debugging can be challenging– If you run into problems, open the page outside the console
VF Page Editor doesn’t show in console mode– Use Eclipse to do quick VF editing
Q&A
Questions
Best Practices
Useful Links– Developing With The Service Cloud-
http://wiki.developerforce.com/index.php/DevelopingWithServiceAndSupport
– Service Cloud Console Integration Toolkit Developer's
Guide -
http://www.salesforce.com/us/developer/docs/api_console/index.htm
Q&A
Questions
Useful Links– Developing With The Service Cloud
– Salesforce CRM Customer Service Product Blog
– Service Cloud Console Integration Toolkit Developer's Guide
Thank you!
D I S C O V E R
Visit the Developer Training and Support Booth in Force.com Zone
Discover
Developer
Learning Paths
Developer training, certification and support resources
S U C C E S SFind us in the Partner Demo Area of
Force.com Zone 2nd Floor Moscone West
that help you achieve
Learn about Developer
Certifications
How Could Dreamforce Be Better? Tell Us!
Log in to the Dreamforce app to submit
surveys for the sessions you attendedUse the
Dreamforce Mobile app to submit
surveysEvery session survey you submit is
a chance to win an iPod nano!
OR
top related