Pages

Monday, September 15, 2014

Salesforce: Enhanced Folder Sharing for Reports and Dashboards

Enhanced Folder Sharing for Reports and Dashboards introduce on Summer '13 release, organization created after the Summer ’13 release will have this feature turn on default. But, if your organization existed before the Summer ’13 release, follow these steps to make folder sharing available to your users.


Enhanced Folder Sharing grants fine-grained access to reports and dashboard folders and offers the following benefits:
    Makes sharing concepts more consistent with User,Role or Group Sharing
    Allows sharing with individual users
    Fine grained access level for each folder share (View, Edit, Manage)
    Symmetric set of profile permissions for both reports and dashboards.


Enhanced Folder Sharing offers 3 access levels for Report and dashboards folders
Viewer:
    View a folder in the folder tree
    View all contents
    Run Report, Refresh Dashboard

Editor:
    Everything from Viewer access plus…
    Edit all contents of a folder
    Add contents to folder
    Delete contents from folder

Manager:
    Everything from Editor access plus…
    Edit folder name
    Edit/delete/remove shares

Enhanced folder sharing offers 5 symmetric profile permissions for reports and dashboards:
    Manage Reports in Public Folders, Manage Dashboards in Public Folders
    View Reports in Public Folders, View Dashboards in Public Folders
    Create Report Folders, Create Dashboard Folders
    Edit My Reports, Edit My Dashboards
    Create and Customize Reports, Create and Customize Dashboards

For more detail of each permissions, please refer to User Permissions for Sharing Reports and Dashboards


For org created before Summer '13, when you enable Folder Sharing:
  • All users in the organization by default get Viewer access to report and dashboard folders that are shared with them.
  • The enhanced folder sharing does not have any impact on My Personal Custom Reports and My Personal Dashboards.
  • For the reports in Unfiled Public Reports, user will be able to create new reports and edit any reports that they created.
  • User will be able to edit any reports that user created.
  • User will only be able to edit other people’s reports if they have Editor or Manager access to the folder.

If you had this permission in ‘old’ sharing
You will get this permission in enhanced folder sharing
Manage Public Reports AND View All Data
Manage Reports In Public Folders
View All Data
View Reports In Public Folders AND View Dashboards In Public Folders
Manage Public Reports
Create Report Folder AND Edit My Reports
Create and Customize Reports
Create and Customize Reports
Manage Dashboards AND View All Data
Manage Dashboards In Public Folders AND Create Dashboard Folders
Manage Dashboards
Edit My Dashboards AND Create and Customize Dashboards

Note:
  • If you see mapping above, Manage Public Reports is translate into Create Report Folder AND Edit My Reports, so Edit My Reports permission is not so simple just to edit report you created, but it will allowed user to edit any reports in any folder user have access as Viewer.
  • All user able to create and Save or Save As report into Unfiled Public Reports
  • User able to edit report created by that user, even user only have Viewer access to the report.

Reference:

Saturday, September 13, 2014

So, it's 10 Years ... !



What is this celebration??? Today mark my journey with Salesforce technology for 10 YEARS !!!


First of all, I would like to give my sincere thanks to my-ex employer Sqware Peg for giving me a chance to taste the beauty, simplicity and powerful of Salesforce.com technology 10 years ago.




Flashback to Sep 2004, I got an interview appointment at 10 AM, since I reach the place too early, walking down to Balmoral Beach at Mosman suburb in New South Wales - Australia landed me as a Salesforce.com MVP today.




Being part of Salesforce.com MVP community is a big milestone on my Salesforce journey, it's an honour, big thanks to Salesforce community. This would be not a blog of my journey with Salesforce, it has been written here.



A song for dedicated for a ten years at Grooveshark


Thursday, August 21, 2014

How to use Salesforce sharing rules with Profiles?

Scenario: we have a group of people need to edit all opportunity, this user is defined by Profile. When we enable Modify All permission in the profile, it will enable Delete permission as well, which is not allowed. User in the profiles scattered around many Roles.

Thinking about to use sharing rules, but as of know Summer '14 release, sharing rules is based on Public Group and Role only. To create a new Public Group and add user to the group manually is not nice solution as admins tend to forget to add / remove user from the group.



To move all users from those Profiles to top role hierarchy is not good option, as it will open access to all other objects.

Found an idea in IdeaExchange - Sharing Settings allow Share With User or Profile

Since all point and click option is not a good option. We found it is easier to use a simple trigger to block user to delete the record.
  • Left Modify All permission enable for the Profile (which also mean Delete permission enabled)
  • Add a trigger to check what is the User Profile
  • If the Profile(s) allowed to delete might change, you can use a Custom Setting to specify the Profiles allowed, and have the trigger read the Custom Setting instead of hard coding.
Here is a snippet of the trigger for Opportunity, where you can enhance with multiple Profiles and Custom Setting

trigger StopDeleteOpportunity on Opportunity (before delete) {
    for (Opportunity opty : System.Trigger.Old) {
        String profileId = userinfo.getProfileId();
        System.Debug('userinfo.getProfileId - ' + profileId);
        String profileName=[Select Id,Name from Profile where Id=:profileId].Name;    
        System.Debug('Profile Name - ' + profileName);

        if (profileName != 'Sales Ops')
        {
            opty.addError('You are not allowed to delete Opportunity',False);
        }
    }
}


Reference:

Monday, August 18, 2014

Salesforce #Cleanup with Field Trip

This would be my 3rd blog of AppExchange product, after: DupeCatcher, Enabler for Excel part 1 and part 2. Over years when consultant comes and go, new admin on-board and leave - many enterprises do not even know what is the purpose of custom objects and custom fields created in their org, would it be just used as reference table or something else needed at other app.

Take a Field Trip! This utility lets you analyze the fields of any object, including what percentage of the records (or a subset of your records) have that field populated. Get it for free from AppExchange.

Let me show how easy to use this tool:

1. Install from AppExchange
Follow above linked to install in a sandbox or production instance. Once installation done, you should see it in Installed Packages, from Setup | Installed Packages



2. Field Trip Tab
Click '+' tab (or URL https://xyz.salesforce.com/home/showAllTabs.jsp - change xyz to your Salesforce instance) to show All available tab and look for Field Trip tab


3. New Field Trip
Click New Field Trip button to start analyze.


Enter a Name, select the Object, and optional for criteria if you do not wish to analyze not whole records for that object. Click Save button when done.



4. Analyze It !
Click Analyze button then Begin Analysis in the next screen. It may take a while for Field Trip to get the data.

You can monitor the progress from Apex Jobs (Setup | Jobs | Apex Jobs). Once done, you should get email with subject "Field Trip Processing Complete: field trip name" which contain a URL link to the to see the analyses result. The status in the Apex Jobs also will update to Completed, looks for with Apex Class = analyzeObject


5. Report It !
Create new report with report type Field Trip with Field Analyses


Add filter to the report with Field Trip: Field Trip Name equals Singapore Account (this is field trip name - see step 3 above for my sample)
You can use standard report feature such as bucket field to make it easier to read for a high level result.


If you see sample above, we have 269 fields in Account object, 103 fields of them for Singapore Account do not have any value populated, 49 fields have only 0-5% value populated. We can easily see from the report that more than 50% of field is not really used, which mean it may good to remove.

Note: if you have ETL or other SOAP API tool accessing your data with fix fields in query, you need to check with integration team, otherwise it will break the integration. Another tip, before hard delete the field, you can just remove visibility permission from field level security to all profiles.


Reference:


Sunday, August 17, 2014

What is my Salesforce Edition, Instance and Release ?

Edition
When you are going to implement Salesforce.com for your company's CRM system, which editions should I purchase? Salesforce.com come with a few editions, the higher edition has more features, is more expensive, and has fewer limitations, here is a list of features in comparison, and here list of limit.

Remember you can upgrade from one edition to a 'higher' edition using the same instance, but not downgrade, for some reason when you opt to downgrade, Salesforce will provide you new instance and you need to manually migrate all configuration and data, which is very troublesome.

List of editions in order (from lowest to highest):
  • Contact Manager 
  • Group
  • Professional
  • Enterprise (include Developer)
  • Unlimited (not available for a new purchase)
  • Performance 

How to check my Salesforce Edition?
There are a few ways to do this:

1. Hover your mouse over the web browser
Once you have a login to Salesforce, hover your mouse over the web browser tab.

Google Chrome

Mozilla Firefox

Internet Explorer

Opera


2. Go to Setup - Administer



3. SOQL
For developer: SELECT OrganizationType FROM Organization




How to check my Salesforce Instance?

1. URL

In the screenshot above, this is a CS3 instance, which is a sandbox. Sandbox instances always start with CS, while production instance for America instances starts with NA, APAC instances start with AP, and EMEA instances start with EU. Click here to see all instances including system status.

For those who are not familiar with Sandbox, an instance of the salesforce.com service that hosts full copies of production orgs for customer application development purposes. Customers using our platform can have full application development lifecycles. These are test environments for customers to do user acceptance testing against their applications before deploying changes into their production org.

If you are using the My Domain feature, check here to get the instance name.


2. SQOL
For developer: SELECT Id, Name, InstanceName, IsSandbox FROM Organization




How to check my Salesforce Release?

Since Salesforce.com is on cloud and sharing infrastructure with customers using Salesforce, users in the same instance will run the same version/release. See his blog for more information on sandbox - Salesforce Release and Sandbox

To check which release in your sandbox or production instance:

1. Logo
Check the logo at the top left, make sure it is not a custom app, for example Sales app.



2. Discover button
Go to the Home tab and look for the Discover button





Reference:


Thursday, August 14, 2014

Who is "Grant access to admins only" when install AppExchange?

AppExchange is like App Store for Salesforce.com, where Salesforce admin can install apps suit to their needs by point and click only, the same experience as you configure Salesforce.com. Some of them are paid and many are free.

If you have sandbox instance, it is strongly advised for admin to install it in sandbox before install in Production. Admin and user can fully test the app in sandbox before go for Production. Although, you always can uninstall it.

Once you enter your Salesforce login credential, in Step 2. Choose security level. There is option who should able to access the package, this is very good to minimize impact when not all users need to access this package.


If you select the first option Grant access to admins only, what does this mean, who is admin actually? It mean users with profile Customize Application permission enabled.

What will the installation package do:
  • Object permissions—“Read,” “Create,” “Edit,” “Delete,” “View All,” and “Modify All” enabled
  • Field-level security—set to visible and editable for all fields
  • Apex classes—enabled
  • Visualforce pages—enabled
  • App settings—enabled
  • Tab settings—determined by the package creator
  • Page layout settings—determined by the package creator
  • Record Type settings—determined by the package creator

License
Selection in installation process do not impacts to app licenses (for not free app). If the app is licensed at user level (not org-wide license), you’ll need to add licenses manually for each users from Setup | Installed Packages | app name | Manage Licenses. This is important, because even if you pick Grant Access to All Users, users will still need to have a license to the app in order to be able to see any of its components. Exception for Sandbox instance, add license activity is not needed.


Reference: Install a Package



Page-level ad