Pages

Wednesday, December 31, 2014

Salesforce: Opportunity Age and Stage Duration

Few months back, we discussed Last Activity date fields, which only available in  Report, List View, and API (including Formula Field, Workflow and Validation Rule) for Account, Contact, Opportunity and Lead object.

This blog will cover 2 more fields : Age and Stage Duration. These fields only available in Standard Opportunity report type, but not using custom opportunity report type.

Age
For open opportunity, the number of days since the opportunity Created Date until Today.

For closed opportunity, the number of days between opportunity Created Date until Close Date (not when it closed). This include Closed Won and Closed Lost opportunities.


Stage Duration
The is number of days of opportunity from the date when opportunity change to current Stage until Today. The number of days still counting even for closed opportunity. You can monitor Last Modified date in Stage History of opportunity related list .


Reference:


Thursday, December 25, 2014

Salesforce: Subscribe Report

Coming to Spring '15, Salesforce introduce ability for user to Subscribe for reports they care about most. This is not the same with Schedule report for future run, which enables you to email reports at specified times (without specifying conditions).

But here, you subscribe to reports and receive notifications daily, if conditions that you specify are met. You do not need additional permission to subscribe report, but your admin able to disable this feature for the whole organization.

To subscribe to a report, user define set of conditions to trigger:
  • When: every time conditions are met OR only the first time
  • Conditions: aggregate of field in the report, which is record count or a summarize field, then define the operator and value
  • Schedule frequency: weekday, daily, weekly and time
  • Actions:
    • Salesforce1 Notification
    • Post to Chatter Feed, 
    • Email Notification
    • Execute a Custom Action
Use Case: user would like to get notification to Salesforce1, email, and also Chatter feed once Closed Won opportunity for the month has reach $50,000

1. Create Report
Make sure the report has the right filter, right Close Date time frame and Amount field summarize.


2. Subscribe 
Click Subscribe button,enter the condition, frequency, actions and activate it.



3. Test and Save
Rather than wait until the time it trigger, you can test it straight away by click "Save & Run Now" button. So here is the result:

Salesforce1 Notification
Open your Salesforce1 mobile app, look for the notification icon, notice a new alert from report you subscribed.



If you click the notification, it will bring you to the report.



Chatter Feed
If you select Post to Chatter Feed, the same alert will go to your Chatter feed as well, click the link to open the report in your Salesforce1 mobile app or from web browser.



Email Notification

For Custom Action, notifications can trigger a custom Apex class. The custom Apex class must implement the NotificationAction interface. 

This feature will be available by default for all user able to run the report, but system admin able to turn off this feature for the whole organization wide, navigate to Setup | Customize | Reports & Dashboards | Report Notifications


Monitor:
To monitor users subscribe for report notification, admin can navigate to Setup | Jobs | Scheduled Jobs, look for Type = "Reporting Notification"


Limitation:
  • Up to five conditions per report
  • One user can subscribe to notifications for up to five reports

Reference:


Sunday, December 21, 2014

Adding Quota in Salesforce.com Collaborative Forecast

This would be another blog on Collaborative Forecast, see adding Opportunity Split and Configuring Collaborative Forecast blog earlier.

What is Quota?
  • Revenue target or sales goal within a time frame
  • To keep track of performance against plan
  • Keeps revenue goals in sight
  • Can be expressed as dollar amounts, units or product or both.
Back to Universal Container scenario, each sales rep should have quota they have to achieve as part of their performance. Here is the role hierarchy:


Each user have their own quota, include Sales Manager and Country Manager.
Each user also owned opportunity, the opportunity number of Sales Rep will roll-up to their Sales Manager, and Sales Manager number will roll-up to the Country Manager. So, all number will roll-up to the user in top hierarchy.

1. Enable Quota
Navigate to Setup | Customize | Forecasts | Settings, enable Show Quotas and click Save button.



2. Set User Quota
Until Winter '15 release, there are no manual to load or set quota to user manually from Salesforce website, You have two option:
  1. Use Data Loader to load quota to all users, see the details and step-by-step here Load Quota Data for Forecasts
  2. Install an app from AppExchange called Edit Quotas, this is a free app developed by Salesforce Labs, although it is an app salesforce from salesforce labs, but it still consider as external app, meaning no support from Salesforce support.
You need to select a Forecast Type for each quota (if you have more than 1 forecast type). 
The data loaded in Salesforce to Forecasting Quota object, you can use any API to check and confirm it loaded successfully.

3. Forecasts with Quota
Now, it's time to confirm if it works. Click Forecasts tab, you should see a new column Quota at the left before all 4 columns for Forecast Category value.


When you click the period, as user in top role hierarchy, you will see all opportunity number will roll-up to the Forecast Category included opportunity owned by the user itself, it showed as "My Opportunities" after all direct user in the Period. 

Each user will have their own quota and it is not related to the quota owned by other user in the role hierarchy.

Notice at the top right area, you will see new link Display Options, you can enable to show Quota % Attainment.

Once you select Show Quota % Attainment, it will show percentage of amount for each user compare to the quota for each Forecast Category.



When you drill down to your sub-ordinate, it will show the same thing for people under that sub-ordinate.


Reference

Saturday, December 20, 2014

Adding Opportunity Split in Salesforce.com Collaborative Forecast

In previous blog, we discuss basic setup to implement Collaborative Forecast in Salesforce.com. Next, we will continue with adding Opportunity Split into the forecast. Opportunity Split allowing team members share sales credit for an opportunity.

1. Add Forecast Type
Remember that we can only have maximum of 4 forecast type. To enable forecast by Opportunity Split, navigate to Setup | Customize | Forecasts | Settings. Click + Add another forecast type link and select Opportunity Revenue Splits.


Select column you want to display in the list of related opportunities. Suggest to add following fields Opportunity Name, Account Name, Forecast Amount, Amount, Split, Owner Full Name, Close Date, Stage and Forecast Category.


Click OK button to continue, Opportunity Revenue Splits will be shown in Forecasts Settings page. Remember to click Save when done, otherwise new forecast type added will be lost.

2. Add Opportunity Splits
In the opportunity page layout, make sure Opportunity Splits and Opportunity Team is visible. The opportunity owner is automatically included in the opportunity team and initially assigned 100% of the split types that must total that amount. Before adding a user into Opportunity Splits, that user must be added in Opportunity Team.

For Split on Opportunity Amount, each split assignment for this split type must total 100%. Enter the member name, adjust percentage of the owner, amount will be auto calculated.


3. Forecasts with Opportunity Split
Now, it's time to confirm if it works. Click Forecasts tab, you should see a new value Revenue Splits in the dropdown of forecast type, click this forecast type.


When you select a period, it will show all opportunities with close date on that month owned by you and or people under your team. Notice in Split column, opportunity with split will show 100 %, while the one without split shown with ---


If you click the split value, in this case 100%, it will show you the split details.


When you click the user name, opportunity information will be refresh and it will show exact Split percentage. If you see here Forecast Amount is Split percentage multiply by Amount, it doesn't effect with the Probability.




Friday, December 19, 2014

Configuring Salesforce.com Collaborative Forecast

What is Forecast?
  • Revenue projection or aggregates of individual opportunities
  • Can be expressed in dollar amounts, unit of products, or both
  • Individual forecast roll up into the forecast for entire sales organization

Background: Universal Container would like to implement Forecast based on opportunity Amount, Expected Revenue, Margin and Expected Margin. Margin and Expected Margin is custom currency field in opportunity.

Solution: to implement Collaboration Forecast, the old Customizable Forecast (before Winter '12 release) do not support to forecast by custom field. For complete different between Customizable Forecasts with Collaborative Forecasts, see reference below.

1. Key Fields
There are five fields in opportunity are important for forecast:
  • Amount - when you select Opportunity Revenue as Forecast Type, this value rolls up into forecast aggregates
  • Expected Revenue - this value calculate Probability multiply by Amount, you can use this value as a Forecast Type 
  • Forecast Category - populated by default by sales stage, admin can hide this field from opportunity page layout to disable user possibility to change forecast category. This aggregate summaries of amount into forecast
  • Probability - represent the likelihood of the opportunity will be close, by default admin set the probability for each stage, but user able to overwrite it
  • Stage - identify where an opportunity in the sales pipeline

2. Setup Opportunity Split
Even Universal Container do not have requirement for Opportunity Split, but to enable custom currency field for you need ti enable Opportunity Split.

Note: the custom field need to be currency field, not number and not even formula with return currency.

Opportunity Split lets team members share sales credit for an opportunity. Multiple team members working on an opportunity can roll their individual sales credits into quota and pipeline reports for the entire team.

To setup Opportunity Split, navigate to Setup | Customize | Opportunities | Opportunity Splits | Settings

If you do not see Opportunity Splits menu, you need to enable Opportunity Teams, from Setup | Customize | Opportunities | Opportunity Teams | Settings


Click Set up Opportunity Splits button. By default, it will activate Revenue and Overlay. For our case, since we do not need Overlay, just disable it. Click + Add a new split type to add Expected Revenue, Margin and Expected Margin, tick all for 100%. Click Save button and make sure all Split type is Active

   
3. Enable Forecast
Navigate to Setup | Customize | Forecasts | Settings - click Enable Forecasts


Click Add a Forecast Type link, for Amount, select Opportunities, click OK to continue then click link + Add another forecast type
- Expected Revenue, select Expected Revenue from dropdown value
- Margin, select Margin from dropdown value
- Expected Margin, select Expected Margin from dropdown value
If you do not see any of them, make sure they are added in Opportunity Split. Click Save button to save.

4. Forecasts Tab
If user get error message or Introducing Forecasts page when click this tab, make sure Allow Forecasting is enabled for the user in the user detail.
If user do not see Forecast tab, even after click + tab at the right, check user profile and make sure Forecast in Standard Tab Settings is not Tab Hidden.

When you click forecast tab, it will show forecast based on your forecast setting in "Configure the default forecast display". Column show here is based on Forecast Category values defined, except Omitted.

When you click forecast for a month, it will show all opportunities with Close Date for the month at bottom panel. Each forecast type may have different column of the opportunity information. To modify column shown in this table, go to Forecast Setting and click the Forecast Type. See last screenshot above.


Notice that you can change forecast type in forecast page use dropdown value, when you select new type, all values in the forecast and opportunity table layout will be updated as Forecast Type selected.



* In Customizable Forecasts, the forecast categories can reflect aggregate information; for example, Pipeline contains amounts for all open opportunities (excluding omitted), see this blog. In Collaborative Forecasts, the forecast categories only display information for that specific category; for example, Best Case only reflects amounts in the Best Case category.


Reference:



Thursday, December 11, 2014

Salesforce: Report Time Frame

In Salesforce, when we run a report, there is a Time Frame option predefined and available for us to use, see below list. But it will not have ALL date range as we want.


Fiscal Year
Current FY
Previous FY
Previous 2 FY
2 FY Ago
Next FY
Current and Previous FY
Current and Previous 2 FY
Current and Next FY

Fiscal Quarter
Current FQ
Current and Next FQ
Current and Previous FQ
Next FQ
Previous FQ
Current and Next 3 FQ

Calendar Year
Current CY
Previous CY
Previous 2 CY
2 CY Ago
Next CY
Current and Previous CY
Current and Previous 2 CY
Current and Next CY

Calendar Quarter
Current CQ
Current and Next CQ
Current and Previous CQ
Next CQ
Previous CQ
Current and Next 3 CQ

Calendar Month
Last Month
This Month
Next Month
Current and Previous Month
Current and Next Month

Calendar Week
Last Week
This Week
Next Week

Day
Yesterday
Today
Tomorrow
Last 7 Days
Last 30 Days
Last 60 Days
Last 90 Days
Last 120 Days
Next 7 Days
Next 30 Days
Next 60 Days
Next 90 Days
Next 120 Days

When you implement Custom Fiscal Year, you will get additional option:
Fiscal Period
Last FP
This FP
Next FP
Current and Previous FP
Current and Next FP

Fiscal Week
Last FW
This FW
Next FW


Use Case 1: get all opportunities with Close Date = Last 3 months, example: now = 11 Dec 2014.
So, we would like to show all opportunities close date from 1 Sep 2014 – 30 Nov 2014.
With above available Time Frame option, we do not have option to filter by Last 3 Months.

Solution:
In the Time Frame, leave it Custom and set both From and To = blank
Add a filter Close Date equals LAST 3 MONTHS
See this blog for sample of using Relative Date Value


Use Case 2: get all opportunities with Close Date = Year-to-date (YTD), as of Wikipedia, YTD = Year-to-date is a period, starting from the beginning of the current year, and continuing up to the present day.  
With above available Time Frame option, we do not have option to filter by YTD.

Solution:
In the Time Frame, leave it Custom and set both From and To = blank
Add a custom formula field in Opportunity with return type = Chekcbox, applied this formula YEAR(Today()) = YEAR(CloseDate) && Today() >= CloseDate
Example the field name is YTD, use this field as report filter YTD equals True



Monday, December 1, 2014

Salesforce: Opportunity in Campaign

Last year we wrote a blog what happened when we convert a Lead to Account and Opportunity and how it reflect in Campaign Influence & Primary Campaign Source in Opportunity.

You will notice that Primary Campaign Source field in Opportunity is always the same with selected Primary Campaign Source in Campaign Influence. But, only one campaign can tick as Primary Campaign Source in Opportunity.


From above screenshot, you notice two campaigns related in Opportunity Opty Hello, but My One is the one marked as Primary Campaign Source.

Now, if we go to Campaign and look for both campaigns above. There is Opportunity related list in the Campaign. But only in campaign selected as Primary Campaign Source (for this case My One) , the Opportunity will be displayed. For the other campaign You Two, although it is listed in the Opportunity page layout, it will be not shown in Campaign, because it is not Primary Campaign Source.

This is out of the box Salesforce functionality and no way to modify it, unless you totally do not want to use Campaign Influence & Primary Campaign Source, you can create junction object to relate Campaign and Opportunity.



Sunday, November 30, 2014

Salesforce: Opportunity Close Date changed to Today's Date

Salesforce users may experience when they close won an opportunity, the close date change to today, but that is not what the user want. What is happening? Is admin or developer write some code on this?

Let us analyse the behaviour. It is not a customization, but out of the box of Salesforce functionality, and we cannot turn it off with a checkbox tick.
  • If Opportunity Stage is not Closed Won and has Close Date in the future; when user change the Stage to Closed Won, the Close Date will automatically change to today's date
  • If Opportunity Stage is not Closed Won and has Close Date in the future; when user change the Stage to Closed Won and also change the Close Date to some other date (future or past), the Close Date will not change
  • If Opportunity Stage is not Closed Won and has Close Date NOT in the future; when user change the Stage to Closed Won, the Close Date will not change
For this scenario (item 1 above), we can use Workflow + Field Update to stop this auto Close Date change behaviour to Today's date.

Workflow:
Rule Criteria
ISCHANGED(StageName) &&
IsWon = True &&
CloseDate = TODAY() &&
PRIORVALUE(CloseDate) > TODAY()

** you cannot use Evaluation Criteria = created, and any time it’s edited to subsequently meet criteria, because ISCHANGED function is not valid with this criteria.


Field Update:
Field to Update Opportunity: Close Date
Formula Value PRIORVALUE(CloseDate)


But, since the Close Date has changed to TODAY, then we change it back to the Original Close Date, when we look at the field history, notice they are two transaction on Close Date.


Another issue with this workflow, if user have open Opportunity with Close Date in the future, when user change the Stage to Closed Won and also change Close Date to Today at the same time, system will change it back to the original Close Date, because it match rule criteria in Workflow.





Saturday, November 29, 2014

Salesforce: Opportunity Close Date on Lead Convert

When you convert a Lead into Account, Contact and Opportunity. Opportunity Close Date cannot be set from the Lead conversion field mapping.
  • If you are not using custom fiscal years, the Close Date of the newly created opportunity is automatically set to the last day of the current fiscal quarter.
  • If you are using custom fiscal years, the Close Date is the last day of the current fiscal period
  • If you are using custom fiscal years and a fiscal year has not been defined for the current date, the Close Date is the end of the current calendar quarter.

Use Case 1: set Opportunity Close Date = 90 days from Lead conversion date

Solution:
1. Create a Formula Field in Lead
  • Field Label = Now
  • Formula Return Type = Date/Time
  • Formula = NOW()
2. Create a Date/Time Field in Opportunity
  • Field Label = When Converted
  • Field Type = Date/Time
3. Map Field in Lead Conversion
  • Lead Now = Opportunity When Converted
4. Create Workflow in Opportunity
  • Object = Opportunity
  • Evaluate the rule when a record is "Created"
  • Rule Criteria - Opportunity: When Converted not equal to null 
5. Create Field Update Action in Opportunity for Workflow (4)
  • Object = Opportunity
  • Field to Update - Opportunity: Close Date
  • Formula Value = Today() + 90

Use Case 2set Opportunity Close Date to the first day of the next fiscal quarter.

Solution: Follow step 1-4 above:

5. Create Field Update Action in Opportunity for Workflow (4)
  • Object = Opportunity
  • Field to Update - Opportunity: Close Date
  • Formula Value = CloseDate + 1


ReferenceLead Conversion Mapping




Wednesday, November 12, 2014

Salesforce: Manage Task Notifications

In Winter '15 release, Salesforce introduce a change in Task notification to let user manage their own email notification. This is enabled by default.

Before Winter '15 release, when user create a Task, there is a checkbox Send Notification Email, if Task is assigned by other user, user who receive Task assigned do not have control to get the email notification or not.

Before Winter '15:


After Winter '15:
notice Send Notification Email is no longer exist

Admin able to deactivate this feature by navigate to:
- Setup | Customize | Activities | Activity Settings
- Deselect Enable User Control over Task Assignment Notifications
- Submit
Deactivate this restore like before Winter '15 release.

When this feature enabled, user can control Task email notification from:
- My Settings | Calendar & Reminders | Reminders & Alerts 
- In Events and Tasks section, look for option Email me when someone assigns me a task
This option is enabled by default, uncheck this will stop user to get any email when task assigned to the user.


Known issue:
"Enable Activity Reminders" in Setup | Customize | Activities | Activity Settings, must be enable, otherwise user will not see "Reminders & Alerts" under Calendar & Reminders, so cannot set option for "Email me when someone assigns me a task"


Reference:
Why I do not see the "Email me when someone assigns me a task" option under my Settings?


Salesforce.com Password reset Failure

For user forget their Salesforce login credential, user should be able to click Forgot your password? in login screen  to receive a new password via email. In many cases, admin do not need to involve at all.

Once click the forgot link and enter username, Salesforce will send email associated with user name with security question. User must answer a previously defined security question before they can reset their password and log in. If user has not defined a security question, or fails to answer the security question correctly, the password is not reset.

Once user answer the security correctly, user will get an email with a link in the email to reset password, this link will expire after 24 hours and it will active only for once, meaning user click the link then ignore it, and later user click the link again, it has been expired.

There is a maximum of five requests to change a password in a twenty-four hour period, while administrator can reset a password as often as needed.

Depend on your org password policy or profile password policy, if maximum invalid login attempts is not set to No Limit, user account will be locked after few times trial with invalid password, number of trial allowed depend on setting in maximum invalid login attempts before it locked. Resetting locked-out users’ password automatically unlocks their accounts as well.

For some reason, when administrator reset user password, we have user get email with subject: Salesforce.com password reset failure and content as below:

Dear User Name,

Your administrator has reset your password. However, your password cannot be reset at this time.

If you have any questions, please contact the salesforce.com administrator for your company.

Thank you,
salesforce.com

Root cause analysis: after hours of testing and finding, above issue happened when admin reset user password, but the user just change his password within 24 hours, or just set his password for the 1st time within 24 hours, and Require a minimum 1 day password lifetime is enabled in Password Policies setting. If this option is selected, passwords can’t be changed more than once in a 24 hour period.


Reference:

Saturday, November 8, 2014

Query User Record Access in Salesforce

Few months back, I wrote a blog to determine user record Access in Salesforce, that blog is good for admin to debug if a user not able to access or edit record. While this blog will explain how to check user accessibility to a record using query.

Use case for this functionality, such as: for a visualforce page, when user do not have edit access, Edit button will be automatically removed from the page, when user do not have read access, link to open the record automatically removed.

From API version 24, Salesforce introduce a new object called UserRecordAccess. This object represents a user’s access to a set of records. It is also only for query, not for create / delete / update / upsert. The query method also a little special compare to other standard object, you have to follow specific rule to query it:
  1. RecordId - must be selected in for query result
  2. RecordId - must be in query criteria, for RecordId you can use "=" for single record OR use "IN" to query multiple records
  3. UserId - must be in query criteria, but NOT in query result
  4. Id - you cannot query this field
  5. MaxAccessLevel value: None, Read, Edit, Delete, Transfer, All
Sample query:
SELECT RecordId, MaxAccessLevel, HasAllAccess, HasDeleteAccess, HasEditAccess, HasReadAccess, HasTransferAccess FROM UserRecordAccess where UserId = '00550000000rlrX' and RecordId IN ('0015000000TaWdI','0065000000N1CMz')

Query result:
So, one query is only for one user for up to 200 record id.

From API version 30.0 and later, UserRecordAccess is a foreign key on the records. You can’t filter by provide the UserId or RecordId fields when using this object as a lookup or foreign key.

Sample Query:
SELECT Id, Name, UserRecordAccess.HasReadAccess, UserRecordAccess.HasTransferAccess,
UserRecordAccess.MaxAccessLevel FROM Opportunity

Above query will return all Opportunity with record access for each record based on the running user. 

You can add normal filter criteria applied when you query Opportunity, sample:
SELECT Id, Name, UserRecordAccess.HasReadAccess, UserRecordAccess.HasTransferAccess,
UserRecordAccess.MaxAccessLevel FROM Opportunity WHERE Id = '0065000000N1CMz'


Known Issue: When accessing UserRecordAccess as foreign key of records, unexpected results are given. This issue does not occur when accessing to UserRecordAccess directly. Here is the detail
https://success.salesforce.com/issues_view?id=a1p30000000T4NxAAK, if you would like to be notified when issue solved, click 'This Issue Affects Me' link.


ReferenceUserRecordAccess



Sunday, November 2, 2014

Salesforce: Content Architecture

Before discussing Content in Salesforce, it is good to have a look for a few objects related to Content:



ContentWorkspace

This object label as Library in user interface with key prefix 058, it represent a public library in Salesforce CRM Content.This object is available in versions 17.0 and later. This object does not apply to personal libraries.

You cannot use API to create record in this object.

SOQL sample: SELECT Id,Name,Description,TagModel FROM ContentWorkspace


ContentVersion

This object known File in user interface with key prefix 068, it represents a specific version of a document in Salesforce Content or file in Chatter.The maximum number of versions that can be
published in a 24-hour period is 36,000. This object is available in versions 17.0 and later for Salesforce CRM Content and versions 20.0 and later for Chatter files.

This is the object you need to point to if would like to mass load document into Public Library. You can use API to mass load documents.

Sample of CSV file to mass load document:

 Title,Description,VersionData,PathOnClient,FirstPublishLocationId,TagsCsv  
 this is 301 file,"This is a test file, use for bulk upload",d:\temp\301.txt,d:\temp\301.txt,05850000000GwZBAA0,exam  

Few field need to note from this object:

FileType, when you upload document, Salesforce will determine the file type: CSV, EXCEL, LINK, PDF, PNG, TEXT, WORD, ZIP, UNKNOWN
If filetype is Link, then ContentUrl field will contain URL, this is when you add a Website link to the Library.

FirstPublishLocationId, this field refer to where the first time document publish to, it may be an object, user or a Library (which is ContentWorkspace).

ContentDocumentId & VersionId, when you load a document to ContentVersion, Salesforce will automatically create a record in ContentDocument. But, when you upload a new version of document, new record for ContentVersion will be create, but not for ContentDocument


SOQL sample: SELECT Id,ContentDocumentId,VersionNumber,Title,ContentLocation,ContentSize,ContentUrl,Description,FeaturedContentBoost,FeaturedContentDate,FileExtension,FileType,FirstPublishLocationId,IsLatest,IsMajorVersion,Language,Origin,PathOnClient,PublishStatus,ReasonForChange,TagCsv FROM ContentVersion ORDER BY ContentDocumentId,VersionNumber


ContentDocument

This object also label as File in user interface with key prefix 069, it represents a document that has been uploaded to a library in Salesforce CRM Content or a file in Chatter. This object is available in API versions 17.0 or version 21.0 and later for Chatter files. The maximum number of documents that can be published is 2,000,000.

You cannot manually create record for this object, it is control by ContentVersion.

Field to note from this object:
ParentId, Id of the library that owns the document. This record will be created automatically when you load a document or via the API for the first time. This field is available in API version 24.0 and later when Salesforce CRM Content is enabled.

For Content Document / Files in a Library, you will notice the icon when open the File


SOQL sample: SELECT Id,LatestPublishedVersionId,ParentId,Description,FileExtension,FileType,PublishStatus,Title FROM ContentDocument order by ParentId


ContentDistribution

This object is known as Content Delivery in user interface with key prefix 05D, it represents information about sharing a document. This object is available in API version 32.0 and later.

You can mass create records using API to this object.

SQOL sample: SELECT ContentDocumentId,ContentVersionId,DistributionPublicUrl,ExpiryDate,FirstViewDate,Id,IsDeleted,LastViewDate,Name,Password,RelatedRecordId,ViewCount FROM ContentDistribution


Reference:


Salesforce: Forecasting Roll-Up

This blog is refer to Collaborative Forecast, not the older Customizable Forecast, although in setup menu, it just called as Forecast only.

For org created before Winter '12 release, you need to reach Salesforce support to enable Collaborative Forecasts. To start using forecast, you have to enable all users will use forecast in user detail called Allow Forecasting, then define Forecast Hierarchy, choose one or more Forecast Types, and specify other forecast settings, such as Quota, Forecast Category, fields to display in the list of related opportunities and etc.

To enable forecast number roll-up to forecast manager in higher role hierarchy, Allow Forecasting need to be enable in the manager and all subordinate users. For user without Allow Forecasting enable, when user click Forecast tab, user will see Introducing Forecasts page only. When manager click Forecast tab, user without will Allow Forecasting enable will not shown in the Forecast tab. Navigate to user detail page to enable it.



The Forecast Hierarchy is entirely based on the role hierarchy, but you also need to specify which user is the forecast manager for each role. The forecast hierarchy is automatically generated based on your Salesforce role hierarchy. User without Allow Forecasting will not available in the forecast manager selection dropdown value. You can enable user for forecasting from forecast hierarchy, it will automatically tick Allow Forecasting in user detail level.

Only one user can be assigned as Forecast Manager in forecast hierarchy, this user will see all forecasts and adjustments from the manager's subordinates in the hierarchy roll up into his or her Forecast tab. Other user in the same forecast hierarchy will see only their own numbers.

If no user is assigned as Forecast Manager in a Forecast Hierarchy, or no users at all in the role hierarchy, the number will not roll-up in forecast to the user in higher forecast hierarchy.



For user with Allow Forecasting enabled, when they click Forecast tab, it will show 4 or 5 forecast category in the columns:
  • Quota (if you enable Show Quotas in Forecasts Settings)
  • Closed
  • Commit
  • Best Case
  • Pipeline

Omitted will not shown here as it consider has been lost. A forecast category is the category within the sales cycle that an opportunity is assigned to based on its opportunity stage. The standard forecast categories are Pipeline, Best Case, Commit, Omitted, and Closed. You can customize forecast category names for your organization from Setup | Customize | Opportunities | Fields | Forecast Category. But, you cannot add or delete them. Once the value re-label, the new label will be used in Opportunity page layout and in Forecast tab.

You can map Forecast Category value with Opportunity Stages values, so each stage of opportunity will have a direct map with forecast category which will be shown in Forecast tab. You can hide this field page layout, so user not able to manually modify Forecast Category.


Reference:

Sunday, October 19, 2014

Salesforce: Setup Landing Page & Force.com Quick Access Menu

Based on a best practice release by Salesforce on 2010, numbers of Salesforce administrator and business analyst depends on the size of your business, the complexity of your implementation, the volume of user requests, and so on. One common approach for estimating the number of administrators you need is based on the number of users.

Number of users Administration resources:
 001 – 030 users : < 1 full-time administrator  
 031 – 074 users : 1+ full-time administrator  
 075 – 149 users : 1 senior administrator; 1 junior administrator  
 140 – 499 users : 1 business analyst, 2–4 administrators  
 500 – 750 users : 1–2 business analysts, 2–4 administrators  
 > 750 users     : depends on a variety of factors  

For administrators who work a lot on Setup menu, here are 2 simple tips for you to access Setup menu faster (less click), both setting is available in your user detail.

Go to your user detail and activate this option:

1. Make Setup My Default Landing Page
When you enable this option for your user, once login to Salesforce, it will bring you directly to the Setup page rather than Home tab. Imagine if you mostly go to Setup page after login, how many clicks you save for a day, a week, a month... ?

2. Force.com Quick Access Menu
When you have this option enable to your user detail, you will see a small arrow at the right of the page when you click a tab, such as: Account Tab, or in page detail. Menu shown will be different in tab or page layout and also different based on the object.

Click the arrow and you will see the menu:

As admin, this will save you a lot of click as you can go directly to the Fields related to the object with one click, or go to the Object itself in Setup page, Record Type, Validation Rules, Edit Column, Edit Layout, Edit Tab until Import Data.

Note: if you override standard View page with visualforce page, Force.com Quick Access Menu will NOT shown up when you click object tab.



Wednesday, October 8, 2014

Salesforce: Related List in Page Layout

Background: we found out that Page Layouts have the same Last Modified Date by the same person, although we just update one of the Page Layout. The date shown is the latest date perform to update one of the Page Layout for that object.



Analysis
When you edit a page layout, select a Related List with Properties (tool icon) and click the icon. Many of us not aware that Apply column information to other page layouts: at below if you not scroll down.


When you scroll down, you will see all other page layouts available and they are selected by default.


Conclusion: make sure none of this checkbox is selected, otherwise it will effect:
  • Available fields, column order and Sort field asc/desc in other Page Layout selected will be overwritten
  • Last Modified Date and By in other Page Layout selected will be updated.