Google Polymer - First Hello World Component

In this post, we will see how we can create our first web component with Google Polymer. It's very easy.

But before that we should understand what is Web Component?
As Google says, which I think is the best way how you can define Web Component -
Truely Web Components are the future.

Step : Create the Web Component - 
Below is the code to create the web component "Hello-World" and save it as - "Hello-World.html"
<link rel="import" href="../bower_components/polymer/polymer.html">
<polymer-element name="Hello-World" noscript>
        <span>Hello from <b>Hello-World</b>. This is a shadow DOM. </span>
You can save it under <PROJECT ROOT DIRECTORY>elements\Hello-World.html.
Two important things to remember here -

  • name attribute is must and it must contain "-". It specifies the name of the element and this is the name we should refer in other parts of the project.
  • noscript indicates that this is a simple html file and it doesn't require any script.
Here we will create the html page "testHello-World.html" and inside that we will refer the newly created web component as shown below -
<!DOCTYPE html>
    <title>Hello World Test with Google Polymer</title>
    <!-- Load the platform support library -->
    <script type="text/javascript" src="bower_components/webcomponentsjs/webcomponents.min.js"></script>
    <!-- Load the component -->
    <link rel="import" href="elements/Hello-World.html">
    <!-- Declare the element by tag -->
As you can see that in the body section we have only declared the newly created web component. In this way we can refer this web component in many places. Another advantage is that any future changes/enhancement, we can do it one place and it will be reflected in all the places.

Source Code @ https://github.com/suddeb/Learning-Polymer/blob/master/testHello-World.html
Step : Start the Web Server -
To test the file, we have to start the web server. The instruction for mac is given below -

sudo python -m SimpleHTTPServer 80

Below is the output when you run the code from browser - http://localhost/testHello-World.html


Google Polymer - How to Install

There are many ways how you can install polymer. But I prefer the recommended way i.e. Installing with Bower. Bower is a very powerful tool which manages all your dependencies. So when you will install Polymer, all dependencies will be installed automatically. You don't need to install them one by one. At the same time, Bower handles any future update also.

Below are the steps you need to do -

  1. Install Node and npm first from http://nodejs.org/
  2. Install Git from http://git-scm.com/
  3. Once you have installed Node and npm, Git, install Bower by issuing the below command -
  4. npm install -g bower
  5. Once done, Bower is installed in your machine.
  6. You need to create bower.json file for your application. Run the below command from root of your project (It will ask few questions which are very much self explanatory)-
  7. bower init
  8. Now install Polymer by -
  9. bower install --save Polymer/polymer
  10. That's all. 
Note: In order to update, issue the command bower update.

Ideas in Salesforce

Idea is a community for users where users can post, comment, vote for Ideas. Salesforce offers Idea community at https://ideas.salesforce.com.
Below are the user permission required -
  • To view and vote for Ideas - "Read" on Ideas.
  • To create new Idea - "Create" on Ideas.
  • To edit Ideas and edit comments on Ideas - "Edit" on Ideas.
Few Important Terminologies used in Ideas
  • Category, Ideas - Categories are values defined by Administrator that help to organise the Ideas into logical sub-groups.
  • Comment - As name says, this is basically the comments posted against Ideas that enable discussions.
  • Community Expert - A community expert is a member of the community who speaks for the organisation. When community expert posts a comment or idea, a unique icon displays next to his/her name. There can be multiple community expert.
  • Demote - If an Idea is not good you feel, you can click dislike button to subtract 10 points from its overall score. It decreases the idea's overall popularity.
  • Promote - Promoting an Idea will add extra 10 points to the overall score.
  • Half-life - This is the concept which will determine how quickly the old ideas are moving from the Popular Ideas subtab to make room for Ideas with more recent votes.
  • Idea Themes - It is a forum in which you invite community members to post ideas about specific topics.
  • Point - It determines the popularity of the Idea. Each vote for an Idea is worth 10 points. 
  • Status - It helps to track the progress of Idea. 


Solution Management in Salesforce Part V - Import Solutions

Importing Solution in salesforce is very simple but powerful feature. If you have comma separated value (CSV) files, then you can import that file into Salesforce.  You need to make sure that the file you are going to import is ready by -
Salesforce Field: "Solution Title" ==> Label for Import File: "Title"
Salesforce Field: "Solution Details" ==> Label for Import File: "Body"

Follow the steps to import -

  • Click on Setup | Data Management | Import Solutions.
  • Click Start the Import Wizard!
  • Follow the steps to import.
That's all.

Solution Management in Salesforce Part IV - Automation

Automation in Solution is another important topic. It is actually used to let the Solution Manager know that a new Solution is created in the organisation. We can have a look how we can automate this process with workflow. Again I always believe in Use Cases as use cases are the best way to understand a concept in Salesforce. So here comes the Use Case -

Use Case -
In the organisation "XYZ Corporation", Jonathan Sasse is the Solution Manager. He should be notified through an email every time a new Solution is created in the organisation.

Implementation -
  • Create a new email template first with the name "New Solution notification to Solution Manager" as - 
  • Create Workflow Rule -
    • Click on Setup | Build | Create | Workflow & Approvals | Workflow Rules.
    • Click Continue.
    • Click New Rule.
    • Choose Solution from the dropdown for the object and click on Next.
    • Select Rule Name as "Notify Solution Manager" and put description as "Workflow rule to notify Solution Manager when a new rule is created.".
    • Under Evaluation Criteria, selected Created radio button.
    • Under Rule Criteria, select Run this rule if the following criteria are met
    • Choose Solution: Solution Status equals Draft as shown below -
    • Click Save & Next.
    • Click Add Workflow Action | New Email Alert
    • Put "Send email to Solution Manager" as description. Then select the newly created email template i.e. New Solution notification to Solution Manager.
    • For Recipient Type Search for User and select Jonathan Sasse from the available recipients.
    • Click on Save.
  • Recommendation: Since sending an email is done through Workflow, there is no way to track this activity. So it is always better to create a task with status "Completed", assigned to Solution Manager. This should be done as a Workflow action and intention is to track that email was send to the Solution Manager.
  • Finally click on Done and click on Activate to activate the Workflow Rule.

Done. Any feedback, please let me know. Thanks.

Solution Management in Salesforce Part III - Solution Category

Solution Category is used to keep the solution organised and it will help Users/Sales Rep to find the solutions quickly.
Define Solution Category -

You can define Solution Category by -
  • Click on Setup | Customize | Solutions | Solution Categories.
  • Click "Add Solution Category" to add a category under the parent category.
  • Enter the Category Name.
  • Choose the subcategory sort order.
  • Click Save.
Important: Clicking on Del will delete the category, but solutions associated with that category will not be deleted.

Categorizing Solutions -
Administrator and user with "Manage Categories" permission can categorize existing solutions. But once Solution category browsing is enabled, all users with appropriate permission(Manage Categories) can categorize solutions. Below are the steps -
  • View the solution you want to categorize
  • Click Select Categories in the Solution Categories related list.
  • Click Save.
Enable Category Browsing -
This feature will allow users to search solutions by category from the Solution tab or while resolving cases. Once can enable this by -
  • Click on Setup | Customize | Solutions | Solution Settings.
  • Click on Edit.
  • Select Enable solution browsing.
  • Click Save.
To enable category browsing for public solutions, do below steps -
  • Click on Setup | Customize | Self-Service | Public Solutions.
  • Click on Edit.
  • Select Enable solution browsing.
  • Click the lookup icon "Top-Level Category for Public Solutions" to choose the top-level category accessible by customers in public solutions. Customers can view all solutions in this category and its subcategories if the solutions are marked Published and Visible in Public Knowledge Base.
  • Click Save.
To enable category browsing for self service portal, do below steps -
  • Click on Setup | Customize | Self-Service | Self-Service Portal | Settings.
  • Click on Self-Service Setup.
  • Select Enable solution browsing.
  • Click the lookup icon "Top-Level Category for Public Solutions" to choose the top-level category accessible by customers in public solutions. Customers can view all solutions in this category and its subcategories if the solutions are marked Visible in Self Service Portal.
  • Click Save.
In my next post, I will discuss about Automation in Solution Management.
Any feedback, please let me know. Thanks.

Solution Management in Salesforce Part II - Solution Processes

Solution Process is a very important concept introduces by Salesforce. Solution Process is used to control the steps the user should follow for solution review. I believe to understand Solution Process in a better way, we should proceed with use cases. But before we jump into the use case, we need to understand the record types in Solution. Record Type plays a very important role in Solution Process. Record Types allows to identify what the picklist values should be available to the user and what page layout a user should see.

Ok let's start with the Use case below -

Use Case -
We have in the organisation named "XYZ Corporation" two types of Solutions - Functional Solution and Technical Solution. Below are the requirements -
Functional Solutions -
  • All Functional Solution should go through the below status values -
    • Draft
    • Reviewed by Functional Lead
    • Reviewed by Functional Head
    • Published
Technical Solutions -
  • All Technical Solution should go through the below status values -
    • Draft
    • Reviewed by Technical Lead
    • Published
Implementation -
  • Create a custom field names "
    Solution Status" 
    to include the possible values as per the requirement. Below is the screenshot -

  • Create the Solution Process by -
    • Click on Setup | Customize | Solutions | Solution Processes 
    • Click on New Button.
    • Enter Solution Process name as "XYZ Solution Review Process" and add description as "This is the Solution Review Process for the XYZ Corporation".
    • Click on Save Button.
    • Here choose the values. These are the possible values a User can choose during Solution Process. Choose Draft as the default value. Then click on Save Button.
  • Now create the Record Types -
    • Click on Setup | Customize | Solutions | Record Types
    • Click on New Button.
    • Make Record Type Label as "Functional Solution". Record Type Name will be automatically get selected.
    • Choose "XYZ Solution Review Process" in Solution Process.
    • Write "Functional Solution record type" in the description.
    • Make sure Active checkbox is on and for the simplicity choose Enable for all profiles.
    • In the next page, choose the page layout. (Important - This is the step, where you can assign different layout to different record types also).
    • Click on Save button.
    • Repeat the same for "Technical Solution" record type also.
    • Finally it should look like -
    • Now choose the allowed Solution Status for Functional Solution by-
      • Click on the Function Solution Record Type.
      • Click Edit next to Solution Status field which will appear under Picklist available for Editing section.
      • Choose only allowed picklist values as per the use case as shown below -
      • Select Draft as the default value and click on Save Button.
      • Repeat the same for "Technical Solution" as well.
So we are done. Now let's check -
  • If we click on the New button for creating a new Solution, we are asked to choose the type of solution as below -
  • Now if we choose Functional Solution, then available Solution Status is also as per the Use Case as shown below -
  • And if we choose Technical Solution, then available Solution Status is also as per the Use Case as shown below -
Great!! So we have successfully implemented the use case through Solution Process. Just to add here, with Record Type and Solution Process, you can add different page layouts to different Solution Processes.

In my next post, I have discussed about Solution Categories. Click here to check.

Please provide your feedback. Thanks.

Solution Management in Salesforce Part I

Solution in Salesforce is nothing but the detailed description of customer issues along with their solutions. The intention of the concept "Solution" in Salesforce is to make the service provided to customers quicker and efficient. Salesforce comes with a Solution tab from which is a centralised repository of all the solutions. From this tab only Sales Rep can easily search solutions and provides quick service to customer - leading more customer satisfaction.

Solution Managers, Administrator and users with appropriate permission can create, review and categorise solutions. They can publish solution to Self - Service Portal and make the solution Public.

  • By default, Solutions are created and displayed in text. But you can make it in HTML by -
    • Click Setup | Customize | Solutions | Solution Settings
    • Click on Edit button
    • Select the checkbox "Enable HTML Solutions". (Important: Once HTML Solution is enabled, it can't be disabled).
  • Solution support multilingual support. You can enable it by -
    • Click Setup | Customize | Solutions | Solution Settings
    • Click on Edit button
    • Select the checkbox "Enable Multilingual Solutions".

Solution Manager - A Solution Manager is the member of the organisation who can review, edit, public Solutions to Self Service Portal or public knowledge base. You can make a User a Solution Manager by -

  • Click on Setup | Manager Users | Users.
  • Click Edit next to the user.
  • Select Solution Manager from the profile picklist.
  • Click on Save.
There is another way of granting a user "Solution Manager" by creating permission set and assigning the below permissions - "Import Solutions", "Manage Categories", "Manage Published Solutions". Check the below picture -
The standard "Solution Manager" profile doesn't include "Manage Categories" permission. So you need to add the permission set for that. I always prefer to use Permission Set for granting a User Solution Manager permission.

Suggested Solutions - Suggested Solution is great way for Sales Rep to find the available Solutions for the cases they are viewing/working. You can enable Suggested Solutions by -
  • Click Setup | Customize | Solutions | Solution Settings
  • Click on the Edit button.
  • Select Enable Suggested Solutions and click on Save.
In my next post, I have discussed about Solution Processes. Click here to check that. If you have any feedback, please let me know. Thanks.

How to refer VisualForce Elements from jQuery / JavaScript

Normally we use JavaScript with webpages. When we build VisualForce pages, there also we use JavaScript to add functionality. But the way we should refer VisualForce elements from JavaScript is little different. Normally people faces problem while locating the VisualForce elements from JavaScript and sometimes the way people refer VisualForce elements from JavaScript is not the best way to do (which definitely leads to many other problems/issues in future). So in this post, I will go one by one so that we can understand the problem and then we will identify the solutions to overcome that problem. At the end of this post, we will know the best practice. Sounds great, right!!!
I am super excited, so let's start --

Case 1:
Normally a VisualForce page will be converted into HTML by Salesforce. During this conversion process, Salesforce uses a hierarchy to build ID values for page elements. Normally we get the reference of an element by ID in JavaScript in document.getElementById('ID Name'). But if we follow the same in VisualForce page, it will not work. Let's see with an example:

Let's consider the below VisualForce page:
<apex:page id="page">
    <apex:form id="form">
        What is your name?
        <apex:inputText id="name" onfocus="myFunc()"/>
    <apex:includeScript value="{!URLFOR($Resource.jQuery1_11, '/js/jquery-1.11.2.min.js')}"/>
        var j$=jQuery.noConflict();
        function myFunc(){
            var inputTextCatched = document.getElementById('name');
            inputTextCatched.value = "Sudipta Deb";
In the above example  document.getElementById('name');will not work and will return no result. The reason behind is that when Salesforce converts the VisualForce page into HTML, the ID is not setup as 'name', rather it is setup by following the page structure. So it will be setup as - 'page:form:name'. So we need to change the above code as - document.getElementById('page:form:name');The final code is given below -
<apex:page id="page">
    <apex:form id="form">
        What is your name?
        <apex:inputText id="name" onfocus="myFunc()"/>
    <apex:includeScript value="{!URLFOR($Resource.jQuery1_11, '/js/jquery-1.11.2.min.js')}"/>
        var j$=jQuery.noConflict();
        function myFunc(){
            var inputTextCatched = document.getElementById('page:form:name');
            inputTextCatched.value = "Sudipta Deb";
Now we will see the changes as -

Great!!. But this is definitely not the best practice because if you add a new element in the same page in future, the hierarchy will change and hence the selector will break. So we need to find some better option.

Case 2:
Salesforce recommends the use of $Component selector. The syntax is - document.getElementById('{!$Component.<ID Name>}'). This will traverse the hierarchy and provides the ID. But this also having some problem. This selection will only work at the same hierarchy level as the element.

In the below example when the selection happened at the same level, it worked, but it happened at different level, it failed. Below are to examples-

Working Example -
<apex:page id="page">
    <apex:includeScript value="{!URLFOR($Resource.jQuery1_11, '/js/jquery-1.11.2.min.js')}"/>
    <apex:form id="form">
        What is your name?
        <apex:inputText id="name" onfocus="myFunc();"/>
            function myFunc(){
                var inputTextCatched = document.getElementById('{!$Component.name}');
                inputTextCatched.value = "Sudipta Deb";
Non working Example -
<apex:page id="page">
    <apex:includeScript value="{!URLFOR($Resource.jQuery1_11, '/js/jquery-1.11.2.min.js')}"/>
    <apex:form id="form">
        What is your name?
        <apex:inputText id="name" onfocus="myFunc();"/>
        function myFunc(){
            var inputTextCatched = document.getElementById('{!$Component.name}');
            inputTextCatched.value = "Sudipta Deb";
So this approach is having the drawback - If we need to make selections at various hierarchical levels, then we will end up with fragmented JavaScript throughout the code, which is definitely a good solution.

Case 3:
Here comes the great jQuery. jQuery provides partial ID selector that can be used select IDs. The syntax for partial ID selector is -
var inputTextCatched = j$( 'input[id$=name]' ); //Find element with ID ending with name
The advantage here is that it will always find elements even if we change the page hierarchy as long as the id is ending with "name". Another important thing to check here is that I have prefaced the ID selector with input. The reason behind is that by prefacing input, jQuery will search for IDs ending with keyword "name" within HTML tag of type "input". So if you know the type of HTML tag, then it is always better to preface the ID selector with that tag to make the page more efficient.

So now the full code -
<apex:page id="page">
    <apex:form id="form">
        What is your name?
        <apex:inputText id="name" onfocus="myFunc();"/>
    <apex:includeScript value="{!URLFOR($Resource.jQuery1_11, '/js/jquery-1.11.2.min.js')}"/>
        function myFunc() {
            var j$ = jQuery.noConflict();
            var inputTextCatched = j$( 'input[id$=name]' ); //Find element with ID ending with name
            inputTextCatched.val('Sudipta Deb');

Great. So with this approach we can keep all our JavaScript code in a single block, rather we can put all our JavaScript code in another file and upload the same as static resource in Salesforce. At the same time, we don't need to think about the page hierarchy.

Thanks and Good Night.


Admin Notes -- User Permissions involved in Reports and Dashboards

Permission Required for Reports and Dashboards            -             

  • To run reports  -  “Run Reports” User Permission is required.
  • To schedule reports  - “Schedule Reports” User Permission is required.
  • To Create, Edit, and Delete Reports -   “Create and Customize Reports” + “Report Builder” User Permission is required.
  • To create Custom Report Types - “Manage Custom Report Types” User Permission is required.
  • To create and schedule snapshot - “Manage Reporting Snapshots” User Permission is required.


Campaign in Salesforce and Security involved

The very basic question comes to my mind is that what is a Campaign? Here is a very good blog post regarding how you want to define Campaign. Here - What is a Salesforce.com Campaign?

Who can access Campaigns?
Let's understand this with the below use case
Use Case: Let's say we have a custom profile named "Sales User" with below permissions on Campaign object -

Now I have two users with this profile -

User 1 - Kevin Bailey with Marketing User checkbox checked and
User 2 - Karen Adams with Marketing User checkbox unchecked.
So what will happen here is that both Kevin and Karen can view campaigns, run campaign reports, but only Kevin can create new campaigns or edit existing campaigns.

Note: So in order to create / edit Campaigns, Marketing User checkbox should be checked and Create/Edit permission should be there on the Campaign object.

Let's summarise the permission information as -

  • To view Campaign - "Read" on Campaign.
  • To create Campaign - "Create" on Campaign + "Marketing User" checkbox checked.
  • To change Campaign - "Edit" on Campaign + "Marketing User" checkbox checked.
  • To use Import Lead wizard - "Edit" on Campaign + "Marketing User" checkbox checked + "Import Lead" checkbox checked on user details page.
  • To use Campaign Update wizard - "Edit" on Campaign + "Marketing User" checkbox checked + "Import Lead" checkbox checked on user details page + "Read" on Contacts.


Admin Notes -- Licenses in Salesforce

Salesforce User License

While making myself prepared for Salesforce Administration Certification (ADM 201), I came to know that Salesforce is having many license types and it makes me confused. So I though of keeping notes of different license types as I study/understand them.

Salesforce's User Licenses are used to give access to the data. The license type determines which profiles and permission sets are available to the user.

To view a list of active user licenses in your Salesforce org, click Setup | Company Profile | Company Information. You will find something like below -

Below are the Salesforce User Licenses -

Let me put descriptions about few commonly used User Licenses below -

  • Salesforce - It provides full access to standard CRM, custom apps/AppExchange Apps.
  • Salesforce Platform - It provides full access to Custom Apps and core objects (Accounts, Contacts etc.). But it will not provide any access to standard CRM (so no Opportunities, no Forecasting).
  • Force.com - One App - It provided access to one custom app and read only access to core objects(Accounts, Contacts etc.)
  • Knowledge Only User - It provides access to Salesforce Knowledge apps only.
  • Chatter Free - It provides access to Chatter to the people within the organisation without Chatter license. So no additional cost is required.
  • Chatter External - It allows customers to use Chatter group. No additional cost is required.
  • Chatter Only - It provides access to Chatter to the people within the organisation without Chatter license + access to accounts and contacts. Additional cost is involved here.
Note: Click here to understand -

  • Guest User - For each Guest User license, you can develop one public website for your organization using Force.com Sites.  Websites created using Force.com Sites are hosted on saleforce.com’s servers.
  • Authenticated Website - Platform portal users have this license and it allows users unlimited login to the platform portal to access customer support information.
Feature License: 
Feature license allows users to access additional feature(s) which is not included with his/her user license.  

To check what are the feature licenses are available un your Salesforce org, you can click Setup | Company Profile | Company Information. You will find something like below -
In order to enable a feature license for a user, do - 
  • Click on Setup | Manage Users | Users
  • Click on the user name
  • On the User Detail Page, select the checkbox next to the feature license you want to enable for that user.
Hope this will help you to prepare yourself for the certification as well as understand different licenses available in Salesforce. Please provide your comments. Thanks.

Admin Notes -- What a Delegate Administrator can do?

Delegate Administrator is a very important option available in Salesforce which will help Administrator to delegate his/her tasks to selected people thus allowing them to keep focused on few other important areas.

You can -
Manage delegate administrator - if you have "Customize Application" permission. 
Become delegate administrator - if you have "View Setup and Configuration" permission. 

But we should know what a delegate administrator can do -

  1. Create and edit users in a specified role and subordinate roles including password reset, setting quota, creating personal groups for those users,  creating default opportunity team. 
  2. Unlock users. 
  3. Assign users specified roles and permissions. 
  4. Login as user who have granted login access to administrator. 
  5. Manage custom objects. 
To create a delegated group, click Security Controls | Delegated Administration and then click New.


Admin Notes -- Importing + Extracting Data in Salesforce | Possible Options

Importing Data:
                Salesforce provides wizards to import data for accounts and contacts, leads, solutions and custom objects.
·         Import Wizards are online
·         Administrator can import data for the entire organization.
·         Users with “Import Personal Contacts” permission can import their own accounts and contacts from Your Name | My Settings | Import | Import My Accounts & Contacts
·         Users with “Import Leads” or “Import Solutions” permissions can access respective wizards from Setup | Data Management | Import <Object Name>
·         With Import Wizard max 50,000 data can be imported.
·         Data format should be CSV.
·         With Import Wizard, user can choose whether to add new records/update existing records/Add new and Update existing records.
·         Unified interface of Import Wizard (Data Import Wizard) can be accessed from Your Name | My Settings | Import | Data Import Wizard.
·         With Data Import Wizard, user is having the option to enable/disable workflow.

Consideration before preparing the Import File:
                As an administrator, you need to ensure the data is clean by -
·         Checking data meet system and custom validation requirements. (Note: If a particular record fails data validation rule, import will fail for that particular record. Rest of the records will be imported).
·         Universally required fields should be there in the CSV file for the new records. Otherwise import will fail for that particular record. Rest of the records will be imported. Owner field should be there in the CSV file for the new records. Otherwise the user who is doing the import will become the owner of the newly created record in Salesforce.
·         Currency field should be there in the CSV file for the new records. Otherwise error will be generated and further import will not work
·         Picklist values - All values in any picklist field should also exist in Salesforce. If not, the new value will be added only for that particular record, but will not be available for other records.
·         Resolving any duplicate records.
·         Removing blank and empty spaces.
·         Running spell check.
·         Renaming column headers to match the field names in Salesforce.
·         Applying consistent standards for data formats.

Matching Fields and Duplicates:
                Matching field will help to identify the duplicate records in Salesforce. Below are the matching field for different objects 
·         Contact                                Salesforce ID, Name, Email
·         Account                               Salesforce ID, Name and Site
·         Leads                                    Salesforce ID, Name
·         Solutions                             Salesforce ID, External ID, Salesforce Title
·         Custom Objects                Salesforce ID, Record Name, External ID

Data Loader:
                The Data Loader –
·         Uses an API that defines the rules for accessing Salesforce from external Applications.
·         Is it client application, so Salesforce Credentials and Security Token is required to use it.

Compare Data Loader with Import Wizard:
·         With Import Wizard, you can import maximum of 50,000 records, where with Data Loader you can import 5 million records.
·         Import Wizard de-duplicates data before loading, whereas Data loader doesn’t do that.
·         With Import Wizard, user is having the option to disable/enable workflow trigger. The same is not possible with Data loader.
·         With Import Wizard, only accounts and contacts, leads, solutions and custom objects can be uploaded, whereas with Data Loader, all objects can be uploaded.
·         Schedule import is possible with Data Loader. With Import Wizard, the same is not possible.
·         Data Loader is having the option to save field mappings for later use.
·         Data Loader can be used to export or delete data. Import Wizard allows import/update only.

Best Practices for Data Loader:
·         All picklist values should be there in Salesforce already.
·         Remove or de-duplicate the records before importing through Data Loader.
·         Export only necessary Records ID fields.
·         Prepare and Upload a test batch.
·         Perform all the update on existing records either during weekend or outside business hour.
·         Turn off all Workflow rules before running any Import, Update, or Upsert to make sure they don’t create any unnecessary problems.

Automated Backing up Data in Salesforce:
                Below are the backup options available:
·         Reports - Export specific data to Excel / Schedule a report for future execution.
·         Data Loader - Export data through Data Loader. This process is a manual process.
·         Weekly Data Export Service - Obtain a complete set of Salesforce data for archiving. This is an automated process. Extracted data will be in Zip format. User will be notified as soon as extract is done and Zip file is ready. After 48 hours, exported files will be deleted from Salesforce server automatically.

Admin Notes -- Freezing and Deactivating a User in Salesforce

Freezing the User Record:
                Freezing the user record means to temporary not allow the user to access the company’s confidential information. So it is basically temporary suspending the user so that as an Administrator you can do more work before deactivating the user. It will not make the user licenses available for use inside the organization. Freezed users can be unfreezed also.

Deactivating a User:
                Deactivating a particular user record means that user will no longer be able to access company’s confidential information. When a user is deactivated, their user licenses become available. Inactive users can still own all their data. As an administrator, you can transfer the ownership of the data. Typically, ownership of inactive users kept as it is to track the history later. Deactivating a user will remove the user from all delegated groups and sharing privileges. During deactivation process, you will have the option to keep/remove the deactivated user from the team.

Deactivating a user may fail due to below reasons-
·         If the user is an assigned leads or cases as part of Assignment rule.
·         Sole recipient of a workflow email alert.
·         Default workflow user.
·         Default lead owner.
·         Default case owner.


Admin Notes -- What folder can do in Salesforce

A folder is a place where you can store your reports, dashboards, documents, or email templates. Folders can be -

    • Public 
    • Hidden
    • Shared
    • Read-only
    • Read/Write
Roles, permissions, public groups and license types decide who has access to the folder. As an administrator/owner, you can make a folder Public(means your entire organisation can view that folder) or Private(means only you can view that folder).

  • To access Document folder, you need to click on the Document Tab. A document library is a place where you should store all your files without attaching them to accounts, contacts, opportunities or with other records. Each document in the document library resides in a folder. The folder's permission determines the folder's accessibility and also the documents inside it.
  • To access Email Template folder, click Communication Templates | Email Templates.
  • To access Report folder, click Reports Tab.
  • To access Dashboard folder, click Dashboards Tab. 
User Permission needed:
  • To create/edit/delete public document folder:              "Manage public documents"
  • To create/edit/delete public email template folder:       "Manage public templates"
  • To create/edit/delete public report folder:                    "Manage public reports"
  • To create/edit/delete public dashboard folder:             "Manage public dashboards" and "View All Data"
Few points to remember:
  • If the folder access is set to "Read/Write", then only you can modify the content of a folder.
  • Only users with "Manage public documents"/"Manage public templates" can delete or change a Read Only folder.
  • Regardless of permissions or folder settings, user can't edit any unfiled or personal folders.
  • You can only delete a folder which is empty.
Please provide your feedback. Thanks.

Integrating jQuery with Visualforce

In this article, I will demonstrate how you can integrate jQuery with Visualforce Page. 
jQuery is the open-source JavaScript framework that Web developers use to solve basic app development problems across all browsers while opening the code to the public for community-driven development and support. 
jQuery can be used with Visualforce Page for user interface development. It will simplify the basic functionalities like DOM manipulation. The another biggest advantage of jQuery is that it is having a huge library of UI elements which you can use with Visualforce to make your user interface more interesting.
Below are the steps-
  • Download jQuery: You need to download jQuery. jQuery UI site is having a custom download builder which you can use to download jQuery. I prefer using custom download builder from jQuery UI website. Here is the link: jQuery UI
  • Add downloaded jQuery zip file as Static Resource: On your Salesforce Development org, go to Setup -> Build -> Develop -> Static Resources. Click on add and add the downloaded zip file. Give it a name. I have given the name jQuery1_11. (Don't worry, no naming convention here. You can choose any name).
  • Refer jQuery on your Visualforce Page: In this step, you need to refer jQuery on your Visualforce page and below is the way how you can do that.
    <apex:includeScript value="{!URLFOR($Resource.jQuery1_11, '/js/jquery-1.11.2.min.js')}"/>
  • The important step: Salesforce implement many javascript libraries. So the first major hurdle is to make sure that jQuery didn't interfere with any other javascript libraries that Salesforce has implemented. jQuery uses by default the global variable "$", so we are not supposed to use that. The simple solution for this is to use jQuery.noConflict() and to avoid using "$" for the jQuery syntax. Below is the code you need to write-
    var j$ = jQuery.noConflict();
That's all. Below is a small example which you can use to verify whether you have configured Salesforce successfully or not.
Create a simple Visualforce page with the below code -
<apex:page >
    <apex:includeScript value="{!URLFOR($Resource.jQuery1_11, '/js/jquery-1.11.2.min.js')}"/>
     <script type="text/javascript">
        var j$ = jQuery.noConflict();
            j$("#clickLink").click(function() {
                alert("WoW!! You hace configured jQuery successfully!!!!!");
     <a id="clickLink" href="">CLICK HERE TO TEST!</a>
When you will run the Visualforce page, you should see the below screen -
Clicking on if you see the below screen, it indicates you have successfully configured jQuery with visualforce
Congrats!! If you have any feedback, please let me know. Thanks in advance.

Happy New Year 2015 !!!!


I enjoyed 2014 a lot and achieved so many things. I would like to make 2015 even more successful. Below are few stuffs I am targeting for 2015.
  • Complete Salesforce Administrator Exam - ACHIEVED. WoW!!!!
  • Complete Salesforce Advance Developer Exam
  • Complete Salesforce Advanced Administrator Exam
  • Make myself more comfortable with Photography - YES, GOING THROUGH A PHOTOGRAPHY COURSE
  • Be more active on my personal blog.
  • Travel two hill stations in India (Himalayan range).
  • Spend more time with family - YES, I AM SPENDING MORE TIME WITH MY FAMILY.
  • Live a healthy life.

Follow Me

Enter your email address:

Delivered by FeedBurner


Salesforce (105) Apex (47) admin (27) visualforce (21) ADM (20) dev 501 (19) integration (18) learn salesforce (18) 501 (16) lightning (16) javascript (14) SOAP (13) tutorial (11) Certification. (10) Kitchener Developer Group (8) Certification (7) Trigger (7) security (7) test class (7) unit testing (7) Advanced Admin (6) Advanced Apex (6) Sharing and Visibility (6) design pattern (6) developer (6) report (6) salesforce release (6) service cloud (6) trailhead (6) Lightning Experience (5) New Features (5) SOQL (5) css (5) dashboard (5) debug (5) formula (5) mobile (5) solution management (5) use case (5) JSON (4) Kitchener User Group (4) Lightning Web Component (4) Sales Cloud (4) Salesforce DX (4) Tips (4) WebSphere (4) best practice (4) cast iron (4) component (4) deployment (4) event (4) github (4) html (4) polymer (4) profiles (4) responsive (4) tdd (4) ui (4) visual studio code (4) Architect (3) Live Chat (3) Online Event (3) Opportunity (3) Performance (3) Products (3) REST (3) Role (3) Salesforce Certification (3) Scratch Org (3) Study Notes. (3) Summer15 (3) Web Technology (3) automation tool (3) dynamic apex (3) license (3) map (3) mapbox (3) release (3) singleton (3) version controlling (3) Asynchronous callout (2) Aura Framework (2) Bulkify (2) Community (2) Data Architecture and Management Certification (2) Devops (2) Distributed Version Controlling (2) ES6 (2) Eclipse (2) Einstein (2) Enterprise Territory Management (2) Financial Services Cloud (2) Force.com IDE (2) Governor Limit (2) Groups (2) IBM (2) Implicit Sharing (2) JourneyToCTA (2) LWC (2) Lightning Design System (2) Lightning Feature (2) Live Agent (2) Metadata (2) PD II (2) Price Book (2) SOSL (2) Sharing (2) Spring 15 (2) Summer17 (2) Territory (2) VS Code (2) Virtual Event (2) ant (2) basic (2) chatter (2) coding (2) communication (2) configuration (2) console (2) controller (2) documentation (2) dreamforce (2) flow (2) git (2) jquery (2) logging (2) object (2) permission (2) process builder (2) salesforce1 (2) strategy (2) xml (2) Action Plan (1) Action Plan Template (1) Activity Timeline (1) Advanced Currency (1) Agent Productivity (1) Analytics (1) Apex Sharing (1) AppExchange (1) Arrow (1) Article (1) Asynchronous Apex (1) Batch (1) Bots (1) Browser (1) Bulk data load (1) CTA (1) Calendar (1) Canon (1) Case Management (1) Celebration (1) Cheat Sheet (1) Classic (1) Compare (1) Confetti (1) Constructor (1) Contact Center (1) Continuation (1) Continuous Integration (1) Convert (1) Cookie (1) CumulusCI (1) Custom Metadata (1) Custom Object (1) Custom Permission (1) Customer (1) Dated Exchange Rate (1) Decorator Design Pattern (1) Dev Hub (1) Development (1) Diwali (1) EDA (1) ESLint (1) Education Cloud (1) Email (1) FSC (1) Function (1) Future (1) Global Gathering (1) Goals (1) Guest Access (1) Guest Profile (1) Guest User Sharing Rule (1) Guide (1) HEDA (1) Higher Education (1) Household (1) Husky (1) IDE (1) Ideas (1) Improvement (1) KPIs (1) Knowledge Management (1) Large Data Volume (1) LastModifiedDate (1) Manage Currencies (1) Manual Sharing (1) Metrics (1) Multi Currency (1) New (1) New Feature (1) OOPS (1) OWD (1) Omni-Channel (1) Partner (1) Permission Set (1) Person Account (1) Photo (1) Pipeline (1) Platform Developer I (1) Platform Developer II (1) Presentation (1) Prettier (1) Product Schedule (1) Profile (1) Promise (1) Prototype (1) Public Site (1) Query Plan (1) Queueable (1) QuickReference (1) Related records (1) Reports (1) Retrieve (1) Role Hierarchy (1) SAL (1) SFDX (1) Salesfor (1) Salesforce Advisor Link (1) Salesforce Labs (1) Salesforce Optimizer (1) SalesforceDx (1) Schedule (1) Session (1) Sharing Rule (1) Sharing Sets (1) Site (1) Skills (1) Snap-ins (1) Spring 17 (1) Spring 20 (1) Summer14 (1) Summer16 (1) Summer19 (1) Switch (1) SystemModStamp (1) Timeline (1) Unauthorized Access (1) User License (1) Users (1) Validation Rule (1) Web (1) Webservice (1) Winter'15 (1) Winter'17 (1) access (1) actionFunction (1) actionPoller (1) actionRegion (1) actionSupport (1) agile (1) app (1) approval process (1) aura (1) awesome (1) backup (1) bitbucket (1) book (1) campaign (1) change set (1) code (1) code coverage (1) csv (1) custom button (1) custom settings (1) customization (1) data loader (1) database (1) delegate Admin (1) describe (1) dom (1) duplicate (1) dynamic (1) equals (1) error (1) field-level security (1) folder (1) ftp (1) generic (1) gift (1) global describe (1) hashcode (1) import wizard (1) jenkins (1) keynote (1) long running requests (1) monitoring (1) mysql (1) page layout (1) personal (1) power of one (1) record type (1) relationship (1) request (1) review (1) sub-tab (1) tab (1) username (1) visual workflow (1) workflow (1)

Popular Posts

Total Subscribers

Total Pageviews

Contact Me


Email *

Message *