Tag Archives: SFDC

Custom Settings in Salesforce

Salesforce.com introduced Custom Settings in Winter ’10 which allows you to store custom data sets and associate them on an org-wide, profile or user basis. Custom settings data is exposed in the application cache and do not count against SOQL limits when fetched. This data can then be used by formula fields, validation rules, Apex, and the SOAP API.

Custom Settings support only Checkbox, Currency, Date, Date/Time, Email, Number, Percent, Phone, Text, Text Area, and URL field types. You can’t create Formula and Picklist, as well as field types that define relationships to other objects, like Lookup and Master/Detail. You can’t create lookups from Custom Objects to Custom Settings either. No Page layouts, record types, validation rules, triggers and workflow rules can be used on Custom Settings.

There are two types of custom settings:

List Custom Settings: It provides a reusable set of static data that can be accessed across your organization. If you use a particular set of data frequently within your application, putting that data in a list custom setting streamlines access to it. Data in list settings does not vary with profile or user, but is available organization-wide.

Hierarchy Custom Settings: Hierarchical Custom Settings are defined once and can hold a unique set of values for the Organization, each Profile or each individual User. Salesforce automatically grabs the lowest level of setting for the running user when a getInstance() call is made, or when accessed in a configuration such as a Validation Rule, Workflow or Formula Field. Only Hierarchical settings can be accessed declaratively whereas List settings are for Apex/Visualforce only.

Limitation of Custom Setting:

  • Maximum total data of 10 MB, but if you have less than 10 license users, multiply 1 MB with number of users.
  • 300 fields per custom setting..
  • Can’t share a custom setting record.
  • No owner assigned for each custom setting record.
  • Each custom setting counts against the total number of custom objects available for your organization.

Note: If you include custom settings in your distributed package you’ll need to build in some scripts which populate the settings with data after the package has been installed.

Difference between Custom Objects and Custom Settings

Custom Objects:

  • Custom Objects are custom database tables that allow to store information to your organization.
  • All Custom field types supported.
  • Records are updated by users.
  • Data stored in database.
  • Requires lookup or master-detail relationship to reference from another object.
  • Counts against cross-object reference limit when used in formulas.
  • Custom Objects are SOQL expensive.
  • We can use Page layouts, record types, validation rules, triggers and workflow rules on Custom Objects.

Custom Settings:

  • Custom Settings are similar to Custom Objects and enable application developers to create custom sets of data, as well as create and associate custom data for an organization, profile, or specific user. We can say Custom Settings are like configuration file that we used to have.
  • Custom Settings support only Checkbox, Currency, Date, Date/Time, Email, Number, Percent, Phone, Text, Text Area, and URL field types.
  • Records are updated by admins or developers.
  • Cached in memory (limited to 2mb).
  • No relationship field required.
  • Not a cross-object reference.
  • Custom Settings are SOQL inexpensive.
  • No Page layouts, record types, validation rules, triggers and workflow rules can be used on Custom Settings.

External Ids in Salesforce

What is External Ids?
An External Id is a custom field that has the “External Id” attribute, meaning that this filed is a primary key and it contains unique record identifiers from a system outside of Salesforce. Salesforce allows up to 3 fields as External Id and these fields must be text, number or email field types.
What is the use of External Ids?
Basically we use “External Id” to match on for updates. When we perform upsert or update, we can match on this “External Id” field. External Id is a manual record Id will be used to integrate with external system.

What is the advantage of External Ids?

  • The import wizard will detect existing records in Salesforce that have the same External Id.
  • When using the upsert command during data loading, we can reference the External Id field instead of the Salesforce Id.
  • When we load data from external systems, We can use External Ids to prevent duplicate records from being created as a result of the import operation.
  • Fields marked as External Ids are searchable in the sidebar search.

Difference Between Role & Profile in Salesforce

Profile:

  • A Profile is a collection of settings and permissions that controls the user what they have to do in the application and with access what they have.
  • A profile controls “Object permissions, Field permissions, User permissions, Tab settings, App settings, Apex class access, Visualforce page access, Page layouts, Record Types, Login hours & Login IP ranges.
  • Defining profile for a user is mandatory.

Role:

  • A role controls the level of visibility that users have into your organization’s data. Mainly is going to provide the record level security.
  • Users at any given role level can view, edit, and report on all data owned by or shared with users below them in the hierarchy, unless your organization’s sharing model for an object specifies otherwise.
  • It is not mandatory that a user should have a role.

Important Points to Remember in Salesforce

Important Points to Remember in Salesforce:

  • We can track 20 fields for an object. We can’t track Roll-Up Summary and formula fields. We can’t create Roll-Up Summary field on User object.
  • Capacity of picklist values are 300.
  • Lenght of Check syntax: 4000 characters
  • Length of the formula: 1300 characters. Size of the formula: 5000 bytes
  • Only 10 Roll-Up Summary fields we can create per an object. We can create Roll-Up Summary field on parent object to perform operations on child object.
  • Roll-Up Summary field performs 4 types of operations on child object. They are 1.Count 2.Sum 3.Min 4.Max.
  • We can add 20 components for a dashboard.
  • We can display 1000 records on each visualforce page.
  • PageBlockSectionItem will take only 2 visualforce components.
  • Standard fields are Owner, Name, Created By, Last Modified By, Currency, Division.
  • We can’t create Look-Up or Master-Detail Relationship on User Object.