Thursday, August 30, 2012

Customizable Forecasting:

Customizable Forecasting:
Customizable forecasting is a powerful tool when your organization to use forecasting the value of upcoming deals.Forecasting allows you to analyze deals in your pipeline,Report on and analyze business,Budget and plan for the future,Track your performance against your goal.A Quota helps you in tracking performance against plan,allows you to attain the organization's revenue goals,can be articulated in dollars,product units,  or both.A Pipeline consists of various maturity stages of an opportunity.Opportunities are more at the beginning of sales process and keep reducing towards the closing stage.Sales process can be visualized by the funnel effect.A forecast is a revenue projection,aggregates opportunities into summary,like quota can be articulated in dollars ,product units or both.

The next step is enable your custom fiscal year like this

You can insert your 53rd week by selecting 52nd week check box and click on insert in case if you select 4-4-5 Fiscal year.You can preview before you proceed by changing customer quarter names,number by quarter.

You should take care profile level user permissions like override forecasts,edit personal quota,view all forecasts.

You can customize your own stage values and assign to forecast like this

Each of your sales stages must map to 1 of the 5 forecast categories provided by salesforce.These categories are then used to aggregate the forecast summaries

You can add optional fields like Expected Revenue ,Quantity in your opportunity page layout and products related list.Useful reports can be found under forecast report folder.


Forecast history make comparisons within the history table,run custom reports to compare and analyze.
Finally if users have permission to customize quotas than they can found under related of list user detail page like this.

Tuesday, August 28, 2012

Data Loader Schedule:

Data Loader Schedule:
This is a simple data loader scheduling just follow the steps and schedule using your windows schedule.

Saturday, August 25, 2012

Interesting Formulas III:

Interesting Formulas III:
A formula is an algorithm  that derives its value from other fields,expressions or values.
Formulas are used in Custom fields,Default field values,Validation rules,Filter criteria,Field updates,Custom summary formulas,Custom buttons and links ,Visualforce pages.One of cool formula is image ,it is easy to identify on list views or reports.For example
Review Status:
IMAGE( CASE( Status__c , "Sent","/img/samples/flag_green.gif", "Received","/img/samples/flag_yellow.gif","Accepted","/img/samples/light_green.gif","Declined","/img/samples/flag_red.gif","/s.gif") , "Review Status" )

Number of days case open:
IF(IsClosed,null,now()-closeddate)
Lost Opportunities must include reason lost:
AND(ISPICKVAL(Stage,"Closed Lost"),ISBLANK(Reason_Lost__c)
Closed Amount Cannot be changed:
AND(IsClosed,ISCHANGED(Amount))
Report Case Status:
CASE( Status , "New"," Open","On Hold", "Open","Researching","Open","Escalated to Management","Escalated","Escalated to Tier 2","Escalated","Closed")
Candidate Summary:
Candidate__r.First_Name__c &" "& Candidate__r.Last_Name__c &BR()& Candidate__r.Phone__c &BR()& TEXT(Candidate__r.Education__c )&BR()
Growth Percentage for closed opportunities :
(AMOUNT:SUM-PREVGROUPVAL(AMOUNT:SUM, CLOSE_MONTH))/PREVGROUPVAL(AMOUNT:SUM, CLOSE_MONTH)
Vlookup Usage:
AND(VLOOKUP($ObjectType.Zip_Code__c.Fields.State__c, $ObjectType.Zip_Code__c.Fields.Name, LEFT( Zip_Postal_Code__c ,5) ) <> State_Province__c, NOT(Batch_Load_Item__c) )





SFC TO SFC:

SFC TO SFC:
Salesforce to Salesforce allows customers to share   leads, opportunities, accounts,contacts ,activities, products,opportunity products and custom objects with other customers on the salesforce platform and receive near real time updates on shared information.Connections tab allows you manages connection and
manages connection templates.Further connection templates allow you to define object and field publishing rules,make the configuration feature easy and scalable.Users with manage connections  permissions selected on their profile may send and accept invitations.

The first is enable salesforce to salesforce setting by setup-->customize-->salesforce to salesforce-->settings enable it then immediately you can see connections tab.First you can create a new template and customize your objects and fields that you wish to publish.Next create a new connection by selecting a contact and template it sends an email to contact once you save connection.

once you accepted you can see subscribe/unsubscribe option to map objects and their fields with sender salesforce publisher objects and their fields.

It is time to forward data from publisher to subscriber

if you didn't select auto accept check box then user has to manually accept by like this

Wednesday, August 22, 2012

Standard Object Sharing Automation:

Standard Object Sharing Automation:
This example shows how to sharing opportunity without sharing by manually.First step is always your class make sure this is a standard object sharing parameters are different from custom object .For example for custom objects we can access parentid to access the previous level of access on ObjectName__Share where as for standard object (In this example it is opportunity) OpportunityId from OpportunityShare.
We can't add a rowcause for standard objects we can give accesslevel using OpportunityAccessLevel either read or edit depends on your condition.In this example we are sharing our record to manager when the opportunity stage Qualification and type New Customer.

public with sharing class OpportunitySharingClass {         public static void deleteOpportunitySharingByRowCause(Map<ID,ID> objectIdToNewUserIdMap,
String rowCauseToFind){         List<OpportunityShare> deleteShares = new List<OpportunityShare>();         for (OpportunityShare posShare :
[SELECT UserOrGroupId, RowCause, OpportunityId, Id, OpportunityAccessLevel                                             FROM OpportunityShare                                             WHERE OpportunityId IN :objectIdToNewUserIdMap.keySet()                                              AND RowCause = :rowCauseToFind]){       
  if (ObjectIdToNewUserIdMap.get(posShare.OpportunityId) != posShare.UserOrGroupId)
{                 deleteShares.add(posShare);             }         }      
if (!deleteShares.isEmpty()) {             delete deleteShares;         }               } }
and the trigger looks like this

trigger OpportunitySharingTrigger on Opportunity (after insert, after update) {                          Map<ID,ID> posIdToNewMgrIdMap = new Map<ID,ID>();                  List<sObject> sharesToInsert = new List<sObject>();           for (Opportunity position:Trigger.new){          
  if (Trigger.isUpdate){                         if(position.Manager__c != Trigger.oldMap.get(position.Id).Manager__c){                 posIdToNewMgrIdMap.put(position.Id,position.Manager__c);             }                    }        
     if (Trigger.isInsert               || position.StageName!= Trigger.oldMap.get(position.Id).StageName              || position.Type!= Trigger.oldMap.get(position.Id).Type              || position.Manager__c != Trigger.oldMap.get(position.Id).Manager__c) {        
 OpportunityShare positionShare = new OpportunityShare(OpportunityId = position.Id                                                  , userOrGroupId = position.Manager__c                                                  );             if ((position.StageName == 'Qualification') && (position.Type=='New Customer')){                 positionShare.OpportunityAccessLevel = 'Edit';                                                      } else {                 positionShare.OpportunityAccessLevel = 'Read';            }            sharesToInsert.add(positionShare);         }     }     if (posIdToNewMgrIdMap!=null && posIdToNewMgrIdMap.size() > 0 ) {         OpportunitySharingClass.deleteOpportunitySharingByRowCause
(posIdToNewMgrIdMap, 'Manager__c');           }          Database.insert(sharesToInsert);   
     }

Monday, August 20, 2012

Analytic Snapshot:

Analytic Snapshot:
Reports display data at a given time.Analytic snapshots capture and store data at scheduled intervals(e.g.,every Friday).Steps considered shown below

Once you created source report and target object with custom fields of similar data types on report fields then create analytic snap shot from setup-->administration setup-->data management-->analytic snapshot-->new enter the details and map the fields like this

Finally schedule snapshot by scheduled analytic snapshot option.
Build a report based on the historical data using target object report and  analyze historical trends each week like this.

Reports For Counting:

Reports For Counting:
Standard summary report show every row in database.Reports for counting show only unique rows.
Create a formula field on which object you want to count for example you want to count on opportunities create a formula field number of opportunities return type number make sure decimal places to 0 and enter 1 in the formula editor section.Next step create a report add this field and summarize it as shown below.

You can observe total number of accounts ,total number of opportunities and total number opportunities per each account.Further you can create custom summary formula to calculate record ratios.To achieve this you need to create formula field on account like you did on opportunity.Next create a custom summary formula on your report double click on add formula from your field panel it opens custom summary formula window.

Report capability can be improved by bucketing.

Create a formula field as of your condition to display in report.For example
IF(amount>2000000,"Highly Qulaified",IF(amount>1000000&&amount<2000000,"Qualified"),"Under Qualified").Summarize your report with this custom formula field and observe on your dashboard


Sunday, August 19, 2012

Web to lead or Web to case:

Web to lead or Web to case:
Salesforce automation has several features workflows ,web to lead or web to case.This post regarding web to lead or web to case process.The basic steps are

We need custom fields to map and data types should be match.But some exception data types are

next step creating queue so that assignment rules can be applied once  lead or case created.
further you need to create assignment rules with your own criteria.for example

Finally creating auto response rules for submission action like this

It's time to enable web to lead make sure user has send email and modify all data permissions


save in .html on your desktop to test it or you can include in your website to test.

Saturday, August 18, 2012

Reports & Dashboard Basics:

Reports & Dashboard Basics:
Reports are lists or summaries that allow you to aggregate and analyze your data in different ways.
Users with run reports permission and access to the specific folder containing the report can run it.
An administrator can set folder access or create  new folders.Report folders can be public,private or
accessible to selected users.In a report users can only see the records and fields that their security settings allowing them to see.In this example you can see different level of filter conditions such as summarized information ,time frame and status values as shown below

Tabular report a simple list of reports used for mailing list and activity reports.
Summary reports records sorted into groups with sub totals.A sample summary report shown below

Matrix report summarizes data in a grid against horizontal and vertical criteria,Provides totals for both rows and columns.Sample Matrix report shown below

Grouping a report by date field select group dates by from the group menu to specify the grouping time frame

Using special date values in custom report filters

Represents charts gives more idea for a report
Bar charts :Each bar represents a data from a grouping .Use horizontal to compare many groups.Use vertical to compare fewer groups or when grouping by a date field
Line charts:Each point represents data from a grouping.Use when grouping by a date field.Great for displaying changes over time.
Pie/Donut charts:Each wedge represents data from a grouping.Size of wedge determined by a summary field.
Use to compare shares of the grand total.Use the donut chart to display the grand total.
Funnel charts:Each segment represents data from a grouping.The size of segment is determined by the summary field of each grouping.Use funnel charts to compare the summarized values of grouping.
Scatter charts:Plot two summary fields against each other .Visualize the correlation between values in a group.Enable the report builder upgrade to use scatter chart.
Multiple Grouping also available to compare various charts
Side-by-side bar:Use this type of chart for multiple groupings.Each source is represent by a set of bars.
Stacked bar:Use this bar graph to display the proportions between values.It displays a single bar for each primary value,with secondary values shown on the same bar.
Stacked 100% bar:Use this for proportions between values in each grouping.All bars are the same overall length.
Grouped line:Each bar represents an ordered set of data.Missing values are displayed as gaps.
Now is the time for little bit about dashboards

Dashboard components:Provide a high level view of reports.Can take the form of tables,charts,gauges and
metrics.
Tables:A table component displays data in column form.Displays grouping or summary field of the report.Can display more than two column.
Charts:A chart component displays data graphically.Is based on the report data.Shows the field that the report is summarized on.
Gauges:A gauge component displays a single data value drawn from the grand total of a report.Helps show a progress towards a goal.Can be followed to get notification when a break point is reached.
Metrics:A metric component displays a single data value from the grand total of a report.Uses conditional highlighting.
Enable Dashboard component snapshot is a cool feature

The running user determines what data users see.Dynamic dashboard is a cool feature.
Dashboard filters can have up to 3 filters each .Must be based on date,date/time ,currency,picklist,lookup or text fields.Users can view different subsets of data on the same dashboard.Users can post chatter snapshots of dashboard components.Scheduled or emailed filtered dashboards display unfiltered data.Users cannot add filters to dashboards with visulaforce or s-control components.
Drilling Down from a dashboard use dashboard as a starting point.Finally Extra features in reports are


Enhanced List View Profile & Permission Sets:

Enhanced List View Profile & Permission Sets:
To utilize Enhanced list view properties first enable by setup-->customize-->user interface-->enable enhanced profile list views.Enhanced profile list views make it easier to work with multiple profiles at the same time then you can mass update profile permissions. list views and compare settings permissions for multiple profiles.load up to 200 profiles in a single list view .Beside profile settings permission sets allow administrators to grant additional permissions to specific users.you can create up to 1000 permission sets for entire organization and assign multiple permissions to a user.Permission sets can be added to related list on user detail page so total access for a user determined by

Note permission sets only grant permissions not deny them
This example shows account object permissions setup-->manage users-->profiles-->create new view

once you selected account objective list view you can change permission by double click on fields read,create,edit or delete also you can select multiple profiles by checking the check box and apply to all profile permission check box like this

next about permission sets setup-->manage users-->permission sets-->new

make sure user license on permission sets is salesforce.

Finally go to user detail page related list add the permission set you created in previous step