Sunday, 16 August 2015

Salesforce Certified Service Cloud Consultant Experience

Added one more certification in my list, its one of the known logic based certification, I was nervous when I was giving the certification, you need to have in depth knowledge of Sevice cloud implementation in Salesforce, its all about how a consultant can implement Service cloud at its best in Salesforce.
click here to know more about certification. There are 60 questions on the exam and you need a 68% to pass. Here is the study guide summer'15

I personally recomment these blogs as well

Jeff Douglas Blog (One of my favourites)
How to Study for the Salesforce Service Cloud Consultant Exam

Here is a list of key points to look into before appearing in exam :

1. Knowledge-base technology
2. Email to Case
3. Live Agent
4. Social Contact Centers
5. Milestone & Entitlements
6. Communities
7. Articles
8. Cases (360 degree knowledge)
9. Search Results
10. Service Contract


Other then above you should have Call center knowledge, how to collaborate in between agents and why a consultant should recomment a call center for knowledge and article. Here is a tip sheet that can help.

As I shared a video in Sales Cloud Certification blog, here is the another that will help you in Service Cloud Certification, other then these if you have partner portal access then please do watch Service cloud related videos in it.



You can also go through the flashcard available on cram.com for practice.

If you are done with all these then for sure you are gonna do well in the exam, all the very best.
Thanks

Thursday, 13 August 2015

Get Current Geolocation in Salesforce using Geolocation API

Recently was trying to fetch the current location of mine in salesforce, most of the time people use google api's for it, but just dig in a bit and found something way too easy and way too awesome to use, the best part is you can utilize the javascript code without referring any further libraries.

Here I got the example of using geolocation API, this document is the specification defines an API that provides scripted access to geographical location information associated with the hosting device.

here is the sample code that they shared


So to implement this thing I want to check weather it work on normally on Salesforce or not, So I created a detail button on Account to check the code. I created a geolocation type field on Account object, and created a detail button on it adn added it to the layout.

Here is the detail page button "Check-in" and "Geolocation" field, just click on check-in button you will the current geolocation, to know more about the geolocation field click here


Here is the code of the check-in detail button, please put Behavior as Execute JavaScript of the detail button.

1:  {  
2:    !requireScript("/soap/ajax/26.0/connection.js")  
3:  }  
4:  navigator.geolocation.getCurrentPosition(function(position) {  
5:    var longitude = position.coords.longitude;  
6:    var latitude = position.coords.latitude;  
7:    var account = new sforce.SObject("Account");  
8:    account.id = '{!Account.Id}';  
9:    account.Geolocation__Latitude__s = latitude;  
11:   account.Geolocation__Longitude__s = longitude;  
12:   var result = sforce.connection.update([account]);  
13:   if (result[0].getBoolean("success")) {  
14:        alert('Account updated successfully');  
15:        window.location.reload();  
16:   } else {  
17:       alert('Error : ' + result);  
18:   }  
19: });  

Just try above code, it works like charm. Happy to answer any query.
Hope this will help someone.

Happy coding!!

Tuesday, 11 August 2015

Bootstrap Datepicker for Salesforce1, Google Chrome and Firefox mozilla

Was working on something and got a change for implemtation which should work with Google chrome, Salesforce1 and firefox mozilla as well, with chrome it starts working normally without any modifications, but not in firefox mozilla, I have added comments in the code where I am referring libraries to make datepicker to work in Mozilla.

this is how bootstrap datepicker looks in chrome


This is how it looks in Firefox mozilla


And now in datepicker Salesforce1


Here is the code of the above datepicker

1:  <apex:page showHeader="false" sidebar="false" docType="html-5.0" standardStylesheets="false" applyBodyTag="false" applyHtmlTag="false">  
2:      <html lang="en">  
3:        <head>  
4:          <meta charset="utf-8"></meta>  
5:          <meta name="viewport" content="width=device-width, initial-scale=1"></meta>  
6:          <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"></link>  
7:          <!-- script for mozilla without these datepicker will work in chrome but not in mozilla-->  
8:          <script src="https://cdn.jsdelivr.net/webshim/1.14.5/polyfiller.js"></script>  
9:          <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>  
10:          <script type="text/javascript">  
11:            webshims.setOptions('forms-ext', {types: 'date'});  
12:            webshims.polyfill('forms forms-ext');  
13:          </script>  
14:        </head>  
15:        <body>  
16:          <div class="panel-body">  
17:            <div class="form-group" ng-hide="hideformobile">  
18:              <div class="col-xs-12 form-group input-append datepicker">  
19:                <label>Datepicker</label>  
20:                <input type="date" id="mydate" size="16" class="form-control"></input>  
21:              </div>  
22:            </div>  
23:          </div>  
24:        </body>  
25:      </html>   
26:    </apex:page>  

Felt like posting it, as datepicker can take time to implement as it took mine, it works awesome on Salesforce1.

Thanks Happy coding!!

Sunday, 26 July 2015

Salesforce Sales Cloud Consultant Certification Experience

Hi all, few days ago cleared my Salesforce Sales cloud consultant certification, I would definitely say that this certification have enormous amount of scenario based questions, it was absolutely not easy exam, I prepared allot then also I was afraid, but if you just go through the content and get in-
depth knowledge of the process of Sales cloud platform then nothing can stop you.

The Salesforce.com Certified Sales Cloud Consultant is able to successfully design and implement Sales Cloud solutions that meet customer business requirements, are maintainable and scalable, and contribute to long-term customer success.
These below links are recommended by Salesforce before appearing in exam + read this post Mr. awesome "Bob Buzzard" for Salesforce Certified Sales Cloud Consultant


Documentation, Tip Sheets and User Guides can also be accessed through Help & Training. Documentation is also available in PDF format here: PDF

Sales cloud is a non technical but more about the experience in designing solutions that optimize the Sales Cloud functionalities. This exam is about how a consultant will help their customer to implement Salesforce. I personally recommend to watch this video, this video its amazingly great and will help you ramp up on the Sales cloud functionalities. This is a Dreamforce video



Key points that are listed in high percentage area in the Study Guide

1. Design of end-to-end sales process from lead to opportunity to quote to close to order.
2. Capabilities and use cases for territory management.
3. Use cases and design considerations when implementing Orders.
4. Appropriate uses cases for Account and Opportunity Teams and the effect on sales roles, visibility, access, and reporting.
5. Determine the relationships between sales stages, forecast and pipeline.
6. Chatter enables collaboration in the sales process.
7. Capabilities and use cases of work.com pertinent to sales productivity.


Hope it helps, all the best for the exam!!

Saturday, 18 July 2015

Salesforce - "Summer of #Trailhead" Bangalore meetup Experience

Hi all, I am here again to share some amazing experience of Salesforce meetup "Summer of Trailhead", its all about trailhead practice and awesome experience that trailhead gives to a learner of Salesforce, its an amazing place to learn and explore new things. I have already posted my Trailhead experience on my Salesforce #trailhead : Place to Learn, Explore & Play post.

Thanks to all the Salesforce geeks to join us on the meetup, thanks to Salesforce for sending us awesome goodies, I feel proud when I got some of those, along with goodies we got amazing trailhead stickers and books and the amazing t-shirts.


There was hands on for those who are new with trailhead, people took few badges as well, it was amazing when a bunch of people are trailing and tweeting about trailhead, take a look at one of my tweets



It was an amazing experience while helping and learning with new geeks of salesforce, salesforce is now a relation between two humans. Thats what I saw in the summer of trailhead meetup.

I cannot thank enough for the amazing book that I won at trivia of the meetup "Advanced Apex Programming" written by Dan Appleman I will finish this one asap, then will definitely post some new learning from the book.


Once again after #lightning meetup felt awesome to meet salesforce plumbers and newbies.
Thanks Salesforce and everyone.

Keep trailing!!

Friday, 19 June 2015

Paging using AngularJS and Bootstrap in Salesforce


AngularJS is a toolset for building the framework most suited to your application development. It is fully extensible and works well with other libraries. Every feature can be modified or replaced to suit your unique development workflow and feature needs.
Want to know more and learn about angularJS Click here this is a re-post of the blog written by Vivek Deepak

Here is the page how its looks, the awesome thing about this page is angular the functionality in too much less coding, that what I just loved about AngularJS
Take a look at this


Here is the small controller class using remote Action to fetch the account records.

1:  global class BlogOneController {  
2:    @RemoteAction  
3:    global static List<Account> getAllAccounts() {    
4:      return [SELECT Id,Name,BillingStreet,BillingCity,BillingState FROM Account];  
5:    }  
6:  }  

Here is the code of the page using AngularJS to show the data on the page, using AngularJS and Bootstrap

1:  <apex:page showHeader="false" sidebar="false" docType="html-5.0" standardStylesheets="false" applyBodyTag="false" applyHtmlTag="false" controller="BlogOneController" >  
2:  <html ng-app="SampleApp" lang="en">  
3:    <apex:stylesheet value="{!URLFOR($Resource.bootstrap,'/boostrapStyle/css/bootstrap.css')}"/>  
4:    <apex:stylesheet value="{!URLFOR($Resource.bootstrap,'/boostrapStyle/css/ng-table.min.css')}"/>  
5:    <head>  
6:    <!-- Add CSS Files HERE -->     
7:    <script type="text/javascript">  
8:    var myapp = angular.module('SampleApp',['ui.bootstrap','mgcrea.ngStrap','ngTable']);  
9:      myapp.factory('FETCH_ACCOUNTS', ['$q','$log', function($q,$log){  
10:    var handleReq = function(remoteCall) {  
11:      var defer = $q.defer();  
12:        remoteCall(  
13:         function(result, event) {  
14:          if(event.status) {  
15:           defer.resolve(result);  
16:          }  
17:          else {  
18:           $log.error(event.message);  
19:           defer.reject(event.message);  
20:          }  
21:         },  
22:         {escape:false, buffer: false}  
23:        );  
24:        return defer.promise;  
25:       }  
26:    return {  
27:        getAllCustomers: function() {  
28:          return handleReq(BlogOneController.getAllAccounts);  
29:        }  
30:      }  
31:  }]);  
32:  myapp.controller('MainController',['$q','$log','$scope','FETCH_ACCOUNTS','ngTableParams',function($q,$log,$scope,FETCH_ACCOUNTS,ngTableParams){  
33:        $scope.loadingH = true;  
34:        var data = [];  
35:        var promise = FETCH_ACCOUNTS.getAllCustomers();  
36:        $scope.account_list = [];  
37:        promise.then(function(response){  
38:          data = response;  
39:              $scope.accountRecords.reload();  
40:          $scope.loadingH = false;      
41:        },function(error){  
42:          $log.error('ERROR' + JSON.stringify(error));  
43:          $scope.loadingH = false;  
44:        });  
45:        $scope.accountRecords = new ngTableParams({  
46:                 page: 1,      // show first page  
47:                 count: 5  
48:                           // count per page  
49:              }, {  
50:                 counts:[],  
51:                 total: data.length, // length of data  
52:                 getData: function($defer, params) {  
53:               params.total(data.length);  
54:                 $defer.resolve(data.slice((params.page() - 1) * params.count(), params.page() * params.count()));  
55:              }  
56:            });  
57:      }]);  
58:    </script>  
59:    </head>  
60:    <body ng-controller="MainController" >  
61:    <div class="panel panel-primary">  
62:       <div class="panel-heading">  
63:        <h3 class="panel-title">Account Information</h3>  
64:       </div>  
65:       <div class="panel-body">  
66:          <table ng-table="accountRecords" class="table table-striped table-hover">  
67:           <thead>  
68:            <tr>  
69:             <th>#</th>  
70:             <th>Account Name</th>  
71:             <th>Street</th>  
72:             <th>State</th>  
73:            </tr>  
74:           </thead>  
75:           <tbody>  
76:            <tr ng-repeat="account in $data">  
77:             <td>{{$index+1}}</td>  
78:             <td>{{account.Name}}</td>  
79:             <td>{{account.BillingStreet}}</td>  
80:             <td>{{account.BillingCity}}</td>  
81:            </tr>  
82:           </tbody>  
83:          </table>    
84:       </div>  
85:      </div>  
86:      <apex:includeScript value="{!URLFOR($Resource.bootstraptpls, 'bootrapangular/angular.min.js')}"/>  
87:    <apex:includeScript value="{!URLFOR($Resource.bootstraptpls, 'bootrapangular/angular-strap.min.js')}"/>  
88:    <apex:includeScript value="{!URLFOR($Resource.bootstraptpls, 'bootrapangular/angular-strap.tpl.min.js')}"/>  
89:    <apex:includeScript value="{!URLFOR($Resource.bootstraptpls, 'bootrapangular/ng-table.min.js')}"/>  
90:    <apex:includeScript value="{!URLFOR($Resource.bootstraptpls, 'bootrapangular/ui-bootstrap-tpls-0.11.0.js')}"/>  
91:  <!-- Add JS Files HERE -->  
92:  </body>  
93:  </html>  
94:  </apex:page>  

For the Angular and Boostrap files please click here

Happy coding!!



Wednesday, 10 June 2015

Improved SAQL in Spring'15

The SAQL language is a real-time query language that enables ad hoc analysis of data that’s stored in dataset
SAQL is influenced by the Pig Latin programming language, but their implementations differ and they aren’t compatible.
SAQL is procedural, which means that you describe what you want to get from your query. Then, the query engine decides how to serve it efficiently. SAQLis compositional. Every statement has a result, and you can chain statements together.
Salesforce Analytics Query language (SAQL)
We already know about SOQL and SOSL. This is new Query language for Analytics cloud to enable ad hoc analysis of data stored in dataset. This is still in pilot.
 IDENTIFIERS Identifiers are case-sensitive. They can be unquoted or quoted. Unquoted identifiers can’t be one of the reserved words and must start with a letter (A to Z or a to z) or an underscore. Subsequent characters can be letters, numbers, or underscores. Unquoted identifiers can’t contain spaces. Quoted identifiers are wrapped in single quotes (') and can contain any character that a string can contain. 





Happy Coding!!
Cheers


Friday, 24 April 2015

Salesforce #trailhead : Place to Learn, Explore & Play

A game that will teach you Salesforce while playing



When I saw and started working on trailhead for the first time, I loved it so much that at the same time I end up getting 8 badges, one of my friend is a salesforce learner, I just pinged him trailhead link and tell him to start now he is salesforce certified Developer because he cleared most of the issues in trailhead practice.


Few things I loved about trailhead...

Its amazingly developed for the learners, that they will start loving Salesforce.
Whatever the new things updated in Salesforce in these recent release are out there on #Trailhead to practice.
Awesome explaining
Trailhead has broken down the Salesforce 1 platform into various sections known as “modules” and these are further divided into units so that one can learn those sections step-wise. Anyone who is new to Salesforce or wants to learn more about Salesforce can use the Trailhead. One can select the module as per his background (developer or administrator). Trailhead is also a great resource for anyone studying to take a Salesforce Certification exam.

Write now out there trailhead have these modules, go grab the badges now now now..


My favourite one is Process Automation, lightning , flow everything is there to learn



I got the CATTER also, I can make you jealous because it was on Trailhead for limited time period now its not on trailhead


If you are new to Salesforce, looking to enhance your Salesforce skill set, or just looking to brush up on your Salesforce knowledge, then I’d highly suggest hiking over to Salesforce’s Trailhead and trying it out: #trailhead

Hopefully this post has gotten you excited about trying Trailhead for yourself. Go earn those points and badges! Please also help us spread the word and make Trailhead a verb. So the next time someone asks you, “What is the best way to learn Salesforce?”, you’ll have the best answer, “Trailhead it”.

Happy trails!

Saturday, 18 April 2015

Replicating one Salesforce org to another + Mass Deployment + Best Practice + Salesforce

Recently I was trying to replicate one Salesforce Sandbox org to Developer edition org, Sandbox was fully developed, sandbox had many components + dependecies, you cannot just deploy everything in one shot, So you need to make a checklist before the deployment for the components you are going to deploy.

Start checking in the components in order of below list

  • Check Appexchange apps installed.
  • Standard Object Modifications i.e Custom Fields or Field History Tracking or Assignment Rules (Suggestion is to use IDE for this).
  • Custom Objects i.e Custom Object and Custom Settings ( Here you can face issue if you have formula fields which is using related objects field values like CustomObject__r.Phone__c in the formula field )
  • Remote Site Settings, Static Resources, Roles Custom Button and Custom Links etc
  • Now Trigger, Apex Classes, Test classes and Visualforce Components and Visualforce pages.


I am using ANT and IDE, if you are using ANT please specify the profiles each and every time in your package.xml file.

In writing its looks too less but it would be too much at the time of deployment, While deploying keep this in mind that we are not using change sets, now your only hope is ANT and IDE.
for ANT users while deploying specific Standard objects custom Fields and that is 50 in count and pasting the custom fields name in package file, that is seriously annoying process I feel. So according to the list we should deploy all the Standard and Custom object fully using IDE, below is the process of deployment using IDE, after that there is an ANT package file snippet that you can use to deploy everything from one org to another org.

Process of fetching all the components in the IDE for the deployment (Specificaly fetching Standard Objects custom Fields).

i. Go to IDE open you Project

ii. Right click on the Project and click on Force.com followed by Add/Remove Metadata Components.


iii. Now click on Add/remove button highlighted below


you will get this notification message click ok



iv. Now select those components that you want to add the metadata in your IDE, like I have select Standard Object and the fields.





v. After selecting the components, you can see the selected componenets then click Apply


vi. Now you have added the components in your IDE.


vii. Right click on the object and select FORCE.COM and Deploy to Server


viii. Pass you credential of the dev org.


ix. Click NEXT


X. Click NEXT and you are done now



I have shown the above process to deploy standard Objects fields and then Custom object in sequence without wasting you time in the creation of the of the package.xml file.

Now just put the below code format in your package.xml file keeping in mind the deployement is done of the dependent components according to list in the starting I mentioned.

1:       <types>  
2:      <members>*</members>  
3:      <name>ApexClass</name>  
4:    </types>  
5:    <types>  
6:      <members>*</members>  
7:      <name>ApexComponent</name>  
8:    </types>  
9:    <types>  
10:      <members>*</members>  
11:      <name>ApexPage</name>  
12:    </types>  
13:    <types>  
14:      <members>*</members>  
15:      <name>ApexTrigger</name>  
16:    </types>  
17:    <types>  
18:      <members>Lead.104</members>  
19:      <name>AssignmentRule</name>  
20:    </types>  

NOTE : Put star(*) when you want to deploy all the components.

The above process will surely help you, when you are mass deploying
Please go to these links for more information and expertise in ANT TOOL

Installing the Force.com Migration Tool
Force.com Migration Tool Guide
Using the Force.com Migration Tool

I am a great fan of ANT tool, and anybody will also become when we will use ANT AT ITS BEST.

Enjoy the force !!!

Friday, 3 April 2015

Duplicate Management Salesforce Spring ’15

Duplicate Management feature released in Spring'15 is one of easy and useful feature that salesforce release in Spring'15, same as like "Process Builder", recently I tried to implement it and this feature is doing almost all the things that we want and was doing using Apex triggers.

I thought to post it as people will get to more about this new features, and will start implementing it rather then using Apex triggers. I have added snapshots as well as it will be more helpful in explaining. for more description go for Spring 15 release note

Now here we go,

1. GO TO : YOUR NAME => Setup => Data.com Administration => Duplicate Management



2. Click on "Matching Rules" click on "New Rule" and Select an Object from the picklist , I have selected Account


3. Provide the name of the rule and select the field on which you want to check the duplicacy and select one of the selected value "Exact" or "Fuzzy"

Exact will match the exact match.
Fuzzy will check for the containing match as well.

Your rule should look something like this, then click on "Activate", you will receive an email on the activation of the rule.




4. Now create a "Duplicate Rule", option is write in below of Matching rule, click "New Rule" and select the object from the select list, I have selected Account object



5. Now add the values in the option showing in below snapshot



You rule should look something like this



6. You are done now, create an Account with name "TEST" and again create an Account with "test", it will show alert on creation on duplicate name




Salesfirce Duplicate Management have many features you can right trigger it have two objects as well "Duplicate Record Sets" and related child object is "Duplicate Record Items" where you can the related duplicate records, you can modify the page layouts as well.

Soon will post Duplicate Management's Trigger using at its best.
Enjoy Salesforce..!!!

Wednesday, 1 April 2015

Mass Update feature on List view of Salesforce

Want to update all the record showing in the list view ?
It is so easy and awesome to do using standard Salesforce functionality.
No need to install and app from Appexchange for that as salesforce already have this but the thing is its a hidden and non popular functionality. People were installing apps to mass Update the records in the list view, but here is the standard way of doing it. f

Please go through the steps.

1. Enable Enhanced list view and Inline editing on the user interface as shown in snapshot
for more details about user interface "Customizing User Interface Settings"

Setup | Customize | User Interface

a. Enable Enhanced Lists
b. Enable Inline Editing



2. Go to any objects list view


3. Click on the top checkbox to select all the records



4. Double click on the field value which you want to edit, here I have clicked on the checkbox, then this pop up will show.



5. Provide the value to the field and select weather you want to update all or the single record.



6. TADAAAA.... all field values have been updated.


You are done now, I posted this because it was there even though I was not using it, but now everybody should.