Monday, 8 June 2015

Salesforce Stuff(Admin&Development)

What is Salesforce

Salesforce is a very powerful cloud computing technology. It runs on the force.com platform. It is one of the most flexible and powerful web based databases available on the market. Salesforce is a centralized place where we can track everything we need to run our organisation. To get started with Salesforce, all you need is a computer and internet connection as it runs on the cloud. It requires no hardware other than computer. Users of salesforce.com can develop their own applications or if they need any application on demand, they can buy it from AppExchange where large number of free applications are available. 
It is important to understand the basics of how are our Salesforce works. So, we will look at some important terms often used in Salesforce.

Salesforce Terminology

1. An App in Salesforce is a container for all the objects, tabs and other functionalities. It consists of a name, logo and a set of ordered tabs.
2. An
 Object is a heart of any app and is very much similar to a database table. It not only provides a structure for storing data but also power the interface elements like tab, fields or records that allow users to interact with the data.
Objects are of two types Custom objects and Standard objects where Standard objects are present by default in Salesforce instance such as Accounts, Contacts, or Opportunities but you can create your own Custom objects. Standard object Account represents a Household Account in NPSP.
3. A
 Tab corresponds to a single object. It act as the starting point for viewing, editing and entering information for a particular object.
4.
 Fields are the properties that define the object. A field is like a database column and can be different datatype like text, number, picklist, addresses etc.
5.
 Opportunities are the sales and pending deals that you want to track. In NPSP, it represents a donation received by a Non-Profit.
6.
 Record Types are a feature of Salesforce CRM. It is a set of types defined for a specific object. For example, Opportunity object has record types like Donation, Grant etc.
7.
 Page Layouts for an object determines how the page looks. So, we can move the fields around and present it to user in a way that is relevant to the business.
Following content helps you to understand basic concepts of Salesforce.
I. Application Essentials
1.Building Your Data Model
·      Id is indexed, 15 char case sensitive, 18 char, case insensitive, first 3 chars consist of code that identify type of object
·      Name is indexed, required field, text (need not be unique)/auto number (usually unique), appear as first column by default in list/related views
·      owner can represent group/user, has additional previliges, default owner is creator
·      limit on custom fields depend on Salesforce edition
·      Data types:
o  Numeric – number, currency, percent
o  Calendar – Date, DateTime
o  Limited Option – checkbox, picklist, picklist (multi-select)
o  Formatted Text – Email, Phone, URL
o  Text – Text, Text Area (255), Text Area (Long-32768), Text Area (Rich-32768,images,links, formatted), Encrypted – any amount
o  Calculation – Auto-Number (system generated), Formula, Roll-up summary (created on master object, allows calculations on details)
·      Properties
o  Name – used programmatically
o  Label – used in UI
o  Universally required field – required field for all record types and will always display on the edit page
o  Unique field – cannot contain duplicate values, can be case sensitive/insensitive
o  External Id – record id from another system. Fields of type: Text, Number, Email. Can have upto 3. Will have custom index, increases report & SOQL performance
o  Default Value – can be based on formula
·      Standard picklist fields can be controlling fields, but not dependent fields, max # allowed in controlling field is 300. In addition, if a field represents both a controlling field and dependent field, it cannot contain more than 300 values
·      A custom multi-select picklist cannot be the controlling field for a dependent field
·      Encrypted fields – the value of the encrypted field is visible to users who has ‘View Encrypted Data’ permission. Contact Salesforce to get this access. cannot be unique, an external id or have default value
·      Lookup Relationship
o  links custom or standard, independent ownership, security, each object can have upto max of 25 lookup relationships, made required/optional, for optional,
o  if field is optional, can use one of the following actions when a lookup record is deleted:
§  clear value of this field (default)
§  don’t allow deletion that is part of lookup relationship
§  delete this records also. cascade delete bypasses security & sharing settings, allowing users to delete records they don’t have access to.
·      master-detail relationship
o  tightly coupled
o  parent field is always required
o  automatically deletes the child
o  when parent is deleted, ownership & access to child record determined by parent
o  cannot have sharing rules
o  manual sharing or queues, on detail objects because these rules and queues require the owner field
o  cannot contain a standard object on the detail side of the relationship
o  master-detail can be configured so that child records on the custome objects can be reparented
o  cannot create master-detail relationship to users & lead objects
o  page layout should include a field in the child object for the associated master record
·      Difference between Lookup & Master-Detail Relationship
o  Lookup
§  max 25 objects
§  parent required or optional
§  security & access are independent for objects
§  deleting parent object may delete the child, if the child field is required
§  link objects across multiple layers
§  lookup field on page layout depends on required/optional choice
§  cross-object field updates and roll-up summary fields cannot be done
o  Master-Detail
§  max 2 objects
§  parent field on child required
§  access to parent determines access to children
§  deleting a parent automatically deletes the child
§  deleting a parent automatically deletes the child
§  the # depends on whether the master object is standard or a custom object (linking objects across multiple layers)
§  lookup field on page layouts is required
§  cross-object field updates and roll-up summary fields can be done
·      Special relationships
o  self relationship (lookup) & many to many relationships (master detail relationship)
o  junction object
§  custom object with 2 relationships
§  also referred as intersection object
§  moved to recycle bin when any of the associated master reocrds are deleted, however deleted permenantly and cannot be restored when both associated master records are deleted
·      Lookup Filters
o  to limit the search results for related fields (lookup, master-detail or hierarchical)
o  filters can be required or optional, value must match the criteria, if it is required
2. Building Your User Interface
·      3 different ways to customize UI: custom apps, custom tabs, custom layouts
·      file size for custom logo is 20 kb, 300 wide by 55 pixels high, add file to documents tab to have it as a header
·      3 types of custom tabs
o  custom object tabs – display data from any custom object
o  web tabs – display any external web app in UI tab
o  visualforce tabs – display vf page in UI tab
·      Page Layouts
o  defines organization of fields, custom links, field locations, page section customizaions, field properties.
3. Introduction to Business Logic
·      Cross object formula
o  can be created from objects that are linked either by a master-detail or a lookup relationship
o  can contain objects that span across multiple levels of relationships
o  limit: 10 unique relationships per object across all formulas and rules
o  exceptions:
§  cannot reference in rollup summary fields
§  cannot reference merge fields for objects related to activites
§  cannot reference record owner merge fields for any object
§  If a standard and custom field have identical names or labels, the merge field displays the custom field value.
§  If two custom fields have identical names or labels, the merge field may display an unexpected value.
§  If you create a field label called Email and a standard field labeled Email already exists, the merge field may be unable to distinguish between the fields. Adding a character to the custom field name makes it unique. For example, Email2.)
·      Roll-up summary fields
o  read-only formula fields that can display sum, min, max or record count
o  can add for all custom master-detail relationships & some standard master-detail relationships including account opportunity, and opportunityproduct
4. Migrating Configuration Changes
·      Configuration changes are stored as metadata
o  (new sandboxes that are not activated within 30 days & the sandboxes that have been locked for 30 days will be deleted)
·      3 tools to move metadata: change sets, force.com IDE, force.com migration took (ANT based)
·      like email, you send a changeset to org
·      apex code should meet 75% of covering test cases
·      system detects incompatibilities bet versions
·      ability to work with change sets is controlled by profile permissions
·      change sets cannot be modified once it is created.


Salesforce Applications

1.   To access Force.com platform visit the URL https://login.salesforce.com and click on the Setup link in the top nav bar.

2.   To access apps, select Create|Apps menu in the left navbar.

3.   To create a new Application, a developer needs to specify App Label, App name, description, custom app logo and a list of tabs. App Label is displayed to users, and App name is the internal name referred in code.

4.   An application is a set of tabs.

5.   Tabs are of three types
A. Custom object Tab
B.  Web Tab
C.  Visual force Tab

6.   Tabs are used to organize objects and records. Each tab is associated with a unique object. A tab also lets you specify a color and an image.

7.   One of the tabs in the application is a default landing page.

8.   Saved applications appear in the Apps menu on the top left navbar

9.   Salesforce provides a Force.com IDE. This is an eclipse plugin application that provides a development environment for VisualForce and Apex.

10.     In Salesforce code without desired test coverage cannot be deployed. A minimum of 75% test coverage must be achieved before deployment.

11.     Native User Interface refers to the default user interface that Salesforce provides

12.     To understand the basics of how our Salesforce works visit thiswww.npsphelper.com/basics


Approvals and Workflow in Salesforce

Salesforce provides extensive support for implementation of workflow and approvals.
1.   A queue can hold a predefined set of objects and consists of a set of users. Any of the queue members can pick up tasks assigned to the queue. Users or Queues can be owners of records.

Approval processes

Salesforce supports wizard based easy to configure approval process. After an object is selected, the wizard guides the user through a step-by-step setup. Approval process is triggered when a user clicks on the "Submit for approval" button.
2.   The approval process consists of the following steps -
A. Process definition
B.  Initial submission actions
C.  Step definitions
D. Final Rejection actions
E.  Final Approval actions
F.   Final Recall actions

3.   The Process Definition step consists of the following sub-steps:
A. Provide the name of process
B.  Specify entry criteria for records
C.  Specify who is going to approve
D. Specify email template
E.  Fields to be displayed in the approver page
F.   Specify who is going to send approval mail

4.   Workflow rules are like triggers. Action is triggered when a record meets an evaluation criteria. Workflow rules definition does not impact existing records. Workflow rule gets applied to new record creation or edits.

5.   Workflow rule consists of three steps
A. Select the object
B.  Specify evaluation criteria (when should the workflow rule be executed, example for new records are created)
C.  Define rule criteria (example when status of job applicant is approved)

6.   Workflow actions can include sending an email, setting values to fields, sending an external message or creating a task.

7.   There are two differences between Workflows and Approval process
Workflow
Approval process
They are activated when a record is saved.
approval process are triggered by explicitly clicking the "Submit for Approval" button.
Workflow consists of single step and single action
Approval process consists of multiple steps. Also different action is taken based upon whether the record is approved or rejected.
Workflows can be modified or deleted.
In approvals some attributes cannot be modified. Processes must be deactivated before approvals can be deleted.

8.   Time-based workflow allows action to be triggered after a delay. As an example we could implement following business logic using time-based workflow: In a recruitment application if for no high priority position no candidates are assigned in a week, then send a mail to Recruitment Manager.

9.   Time-based workflow cannot be executed when evaluation is set to "Every time a record is created or updated".

10.     Approval processes can be single or multiselect process. Multi-select processes require end user authorization for record promotion.

11.     Approval process is unique for object type.



12.     Parallel approval process allows specifying (upto 25) multiple approvers simultaneously. The approver setting could be set to unanimous or first action. In unanimous parallel approval process, all approvers must approve a request, before it is considered as approved.



13.     Possible actions of workflow and approval process are -
A. Creating a task
B.  Sending a message to external system (outbound message)
C.  Updating a field value
D. Sending an email
E.  Locking a record

14.     Outbound message helps keeping salesforce coordinated with other applications.

15.     Dynamic approval process is used to route approval requests to users listed in lookup fields on the record requiring approval. In this, approver names are defined dynamically from an object.

16.     Process Visualizer provides Read only visual of an Approval process. It can be accessed by clicking on “View Diagram” button.


Salesforce Business Logic

Business logic is a set of rules and calculations that handle information exchange between User Interface and Database. Declarative Business Logic includes: Queues, Workflows, Validation and Assignment Rules, Rollup summary fields, Cross Object fields.
Programmatic Business Logic includes Apex, Visualforce Controllers, Web Services API. Automated processes are:
o  Validation Rules
o  Assignment Rules
o  Auto Response Rules
o  Workflow Rules
o  Escalation Rules
Queues are used to manage a shared workload more effectively.
2.   Validation rules can be attached to fields. They are executed when a record is created or updated.

3.   When defining a validation rule, an error condition and error message are defined. If evaluation of error condition results in true value, record is not saved, and the error message is generated. To get more knowledge on Validation Rules visit www.npsphelper.com/admin

4.   Some fields are of type Formula. They are derived from other fields. Validation rules and formula follow the same expression language.

5.   A set of functions used in Formulae are included below.
Formulae
Description
TODAY()
Returns todays date
IF(expr,x,y)
if expr is evaluated to true, x is returned, else y is returned
TEXT(field)
Returns the text value of a picklist
ISPICKVAL(field,value)
Checks whether value of field matches the input parameter. Returns true if there is a match
ISBLANK(field)
Returns true if field is blank
AND(expr1,expr2)
Performs a logical AND
OR(expr1,expr2)
Performs a logical OR
HYPERLINK(url,text)
Creates a link to the specified url
ISCHANGED(field)
Checks id the field's value has changed
PRIORVALUE(field)
Returns the previous value of field
ISNEW()
Returns true if a new record is being created.
INUMBER()
Returns true if the field is a number
IMAGE()
Used to display an image
REGEX()
Compares a text field to a regular expression and returns true if there is a match
VLOOKUP()
In an object consisting of key value pair, VLOOKUP returns value for a key
6.   A few things on these functions:
o  Case(), If() and IsNumber() are available for all features like approval, workflow, validation and formula.
o  Image() is only for Formula fields.
o  Vlookup() is for Validation rules.
o  IsChanged() and PriorValue() are for workflow, only when “everytime a record is created or updated”.

You can make your own formula. Go through the Formulas in Salesforce video at 
www.npsphelper.com/admin

7.   Methods are used in Formulae fields, Validation rules, Workflow rules, Field updates, Default values and Approval process. Some of these methods are only available in certain areas. CASE, IF, ISNUMBER are available in all places. IMAGE is available only in formulae fields. VLOOKUP is available only in validation rules.

8.   Cross-object formula span two or more objects by referencing merge fields.

9.   Difference between Roll Up and Cross Object Fields:
1.   In cross object formulas, we navigate from child object to parent or grand parent object(up to 5 levels). Field is displayed on child object. While in Roll Up Summary Fields, we navigate from Parent to Child object.
2.   Formula fields do not store the value on the record but Roll Up Summary fields stores the value and changes can be seen on parent.

         Limitations of Cross Object Fields:-
0.   You can’t reference cross obect formula in roll up summary field.
1.   You cannot reference merge field for objects related to activities.
2.   You cannot reference record owner merge field for any object.

Debugging Tools

         View Setup Audit Trail is used to view list of configuration changes. It is available in Security Controls menu in the Setup area. Examples of audit trail are creation of object, adding a new field, changing field type or setting up a new approval process. By default 20 last configuration changes are displayed. Changes made in last 180 days can be exported into a csv file. It can be configured by admin or developer.

         Field history tracking can be enabled at object level at the time of creation of objects. Up to 20 fields can be tracked for one object. As an example, any changes in field values are stored as part of Field history tracking. During Field history tracking, Time of change, user who made the change, prior value and new values are stored. For data types Multiselect Picklist and text area (long), previous and new values are not saved.
    In the Custom Fields and Relationship area of Object configuration, "Set History Tracking", is used to enable field level tracking. Review History related list can then be added to page layout to view changes to fields.

         Force.com platform provides three main mechanisms for debugging errors. These are also known as Auditing tools:-
 .     Field history allows developers to track changes to field values of up to 20 fields for any object.
A. Debug Logs is a persistent store in which logs are stored for transactions performed by up to 20 users.
B.  System Logs allows developers to run apex commands and view the logs
C.  Setup Audit trail allows developers to view all configuration changes (example creation of object, changing field type, creating a workflow etc.) made in last 180 days.

         Setup Audit Trail of Salesforce is used to track configuration changes made. Example of configuration changes are date of change, description of the change, user who made the change. Twenty most recent changes are displayed in the audit trail. Last 180 days changes can be exported into a csv file. View Setup Audit Trail feature is available via the Security Control menu.

         There is a link to System Log at the upper right corner of the page. System Log allows developers to enter Apex code and see the results of running this code. System Log display information about workflow rules, validation rules, debugging information and resource utilization.

         To control quantum of logging, system log takes two parameters Log category and Log level. Log categories can take the following values -
o  None
o  Database
o  Workflow
o  Validation
o  Callout
o  Apex code
o  Apex profiling
Log level indicates level of detail in the message. It takes the following values
o  None
o  Error
o  Warn
o  Info
o  Debug
o  Fine
o  Finer
o  Finest

         Debug log is an organization-wide persistent log. It can store debug log for transactions performed by specific users. Logs for up to 20 users can be persisted. Debug Log is available via the Monitoring menu.

         Salesforce supports history tracking on change in values of fields. This can be enabled for up to 20 fields in an object. In Custom Fields and Relationship, set history tracking is enabled for a set of fields. Review history can be added to page layout. Information stored includes - changes to field values, time of change, user who changed the field. Old and new values of fields are not stored for multi-select picklist and long text area.

Salesforce DataLoader

1.   Every object has a standard field called id. There is no need to define an explicit primary key in custom objects. The standard id field can be used as primary key.

2.   The id is alphanumeric. id can be either 18 digit case-insensitive or 15 digit case-sensitive.

3.   The first three characters of the id identify the object. Ids can be identified in three ways -
o  From the URL when a record is displayed in Salesforce
o  From reports
o  Through the web services api. Data Loader uses web services api to display the ids.

4.   The id displayed by a report is the 15-digit case-sensitive id. The ids returned by web services api are 18-digit id. For updates web service accept both the 15-digit and 18-digit ids.

5.   15-digit id can be converted to 18-digit id and vice-versa.

6.   There are two types of Data Loader logs:
o  sd1.log
o  sd1_out.log

7.   When loading data into a salesforce application dependencies between objects determine the order in which objects are loaded. If there is a one-to-many relationship between A and B, the data for A should be loaded before the data for B.

8.   Data Management is an ongoing process to keep data in your application up-to-date, accurate and clean whereas Data Migration is one time task.

9.   External ids option can be specified on custom fields for fields of type text, number or email. This creates custom index in database. A maximum of three fields can be set as external ids. Specifying a field as external ids, leads to improved reporting and SOQL performance. External ids prevent duplicate entries when exporting data. Both upsert and external ids are used for migration and integration of data.

10.     If "Modifiable System Field" configuration is enabled, then system fields (like creation date) can be set to any value during initial data load. These values can however not be updated after the initial upload. These fields are accessible through the API. These are backward compatible with all SOAP based APIs available for all custom objects. These are Read only fields.

11.     Salesforce determines an operation Upsert. Upsert stands for update + insert. When an upsert is performed, if a record exists it gets updated. If the record does not exist, it gets inserted. This is useful in large data uploads, and if the connectivity is not stable. Matching of record can be performed on the basis of Salesforce id or External id. When performing an upsert, only single external id field is used.

12.     Import wizard are available via the standard Salesforce application using easy to use interface and do not require programming. Import wizard can be used to load up to 50,000 records. Import wizard can be used for de-duplication of data. Import wizard can be used to import accounts, contacts, leads, solutions and custom objects.

13.     Web Services API based tools can load more than 50,000 records and can support all object types. It also allows developers to schedule regular data loads. These support nightly feeds. APIs can delete multiple objects at the same time.

14.     Data Loader is an API based product by Salesforce. It can be run from command-line. It can generate and import from csv (Comma Separated values) files. It supports custom relations imports using upserts. It also support loading from JDBC.

15.     Data Loader can be installed on a desktop from the Salesforce Data Management menu. Operations supported by data loader are -
o  Extract
o  Upsert
o  Insert
o  Delete
o  Update

16.     Command-line version of data-loader supports regular scheduling of loads.

17.     Mass Transfer Tool is used to transfer multiple objects data from one user to another. User should have the following permissions:
o  Transfer record permission
o  Edit permissions
The tool can be used to change the ownership of the record.

Force.com development platform

1.   Salesforce provides two type of licenses
1.   Salesforce: full access to CRM standards, Force.com custom and application exchange apps
2.   Salesforce platform:. Salesforce platform license allows access to custom apps, it does not allow access to online CRM product.
Feature licenses can be purchased for additional features such as Marketing User, offline user, Apex mobile user etc. CRM access means access to Standard objects like Cases, Campaigns, Opportunities etc. Platform access means access to Custom and Standard objects.

2.   Force.com platform uses the standard Model View Controller design pattern. The MVC pattern is implemented as below in Force.com platform.
Pattern
Force.com implementation
Model
Object (custom or standard)
View
VisualForce pages
Controller
Logic written in Apex that controls navigation

3.   The Create menu is used to provide the declarative framework of Force.com platform. The Develop menu is used to provide the programmable framework.

4.   Page Builder is used to generate user interface for CRUD (Create, Read, Update, Delete) operations of objects. This user interface is created automatically by Salesforce and can be used to create reasonably complex applications withot writing VisualForce or Apex code.

5.   Salesforce allows data types of existing fields to be changed, however this may lead to loss of data.

6.   When you add a custom object tab, all the following will be accessible with the object:
o  Recent items
o  Sidebar search
o  Added to new link/ Create new object drop down

         To make a field required, there are a few different ways.
o  Check the box for required on Object Definition
o  Create a Validation Rule
o  Specify that the field is required in the Page layout

         Page Layout supports a drag-and-drop interface to develop screens. It allows addition of space and sections, and moving of fields across the screen. It supports making a field read-only or required.

         There are two type of activities:
o  Task: It is related to a record , assigning a task
o  Events: Any calendaring event, meeting etc

         A deleted record is stored in recycle bin with an expiry date. Deleted records can be recovered for upto 45 days.

         SOQL stands for Salesforce Object Query Language. SOQL is used for performing queryies on objects.

         SOSL stands for Salesforce Object Search Language. SOSL is used for performing full text search.

         S-controls were used to upload contents such as java applets or active X controls for use in dynamic custom links or web tabs. These have been superseded by visualforce pages. S-controls provide client side programming.

         Salesforce provides sandboxes that may be used for development and testing. Full Copy Sandbox allows copies of metadata/configuration along with all the application data to be copied from production to a sandbox environment. The sandbox can then be used for testing and simulating reported problems. Record ids in production and full copy sandbox are also same.
Configuration only sandbox copies all your production organisation’s reports, dashboards but exclude all your organisation’s standard and custom object records, documents and attachments. There is a size limit of 500MB(250,000 records)
Developer sandbox is a special configuration sandbox only for single developer. It also allows copying of metadata and configuration, but not copying of application data. Changes from the active development can be isolated until they are ready to be shared. Size limit is 10MB(5000 records)
Developer edition license does not allow copying of configuration from production developer environment.

         Territory Management: It is used to define more than 1 role hierarchy.

Force.com's objects, fields and relationships

1.   Objects logically correspond to database tables in a relational database. Fields of an object is similar in concept to column in relational database.

2.   Objects can be standard or custom. Standard are objects are predefined by Salesforce like Accounts, Case, Contact etc. Custom objects are created by developers based upon application requirements.

3.   Custom objects have the following characteristics
1.   Custom objects store information that is unique and important to your organization.
2.   Custom objects are reportable and search-able.
3.   Custom objects have configurable access control features.

4.   Force.com provides undelete functionality on objects. Deleted objects go to a recycle bin with an expiry date of 45 days. An administrator may delete objects from recycle bin.

5.   Fields of type Picklist cannot be made required.

6.   There are three type of page layouts:
1.   Detail
2.   Mini
3.   Console

7.   Objects have following fields that need to be entered by developers -
o  Label
o  Plural Label
o  Object Name
o  Description
o  Record Name
o  Record Type

         The field for record name is displayed by default when the object has to be displayed (for example in search results). The record type can be text or auto-number. Auto-number can take values like A-{0001}, A-{0002} etc.

         The Object name is used to access the object programmatically. __c is added as a suffix to the custom object names. The label name is used for display of the object.

         The standard fields are added automatically. Examples of standard fields are Created By, Owner etc.

         Custom Fields are added to an object by developers. In the custom object definition detail screen there is a section of custom fields. Click New to create new custom fields in this area. 

Read through the Salesforce customizations at 
www.npsphelper.com/admin

         Custom Fields have properties like:
o  Data Type
o  Field Label
o  Field Name
o  Required checkbox
o  Description
o  Default Value

         Examples of valid field types are
Field Type
Comments
Text
Text can be upto 255 characters
Text Area
Text Area can be either 255 characters or 32K characters
URL
Picklist
Can be single select or mult-select. The developer needs to provide valid values
Currency
Checkbox
Percent
Number
         The field types are aligned to user interface elements like picklist and checkbox.

         Changing the data type of existing custom fields is possible, but doing so may cause data loss.

         Fields can be set as unique, required or as external id. A required field is always displayed in the edit page. A field of type external id is a record id from another system. The performance of reports and SOQL is better for fields defined as external ids. Fields of type number, text and email can be set as external id. Each object can have up to three external ids.

         A field defined as encrypted is not visible to users. Typical usage of encrypted field is for password. Only users with "View Encrypted Data" can view the encrypted fields. Encrypted fields are editable.
0.   This is a provisioned feature, so you must contact Salesforce to enable it.
1.   Encrypted custom field cannot be unique, an external ID, or have default values.

         Objects can have upto 500 custom fields.

         When an object is created, a user interface is created automatically for Create, Update, Read and Delete operations.

         Fields of two Picklists can be made dependent on each other. As an example consider an application with customers in US and Canada. If there are two picklists - one for country and the other for state. Based upon user's selections of country, the state settings need to get updated. This is implemented by defining controlling and dependent picklists. In the above scenario, country becomes the controlling picklist and state becomes dependent picklist. The controlling and dependent picklists are defined using "Field Dependency" button in "Custom Field and Relationship" section.

         Standard picklist can be controlling picklist but not dependent picklist. Maximum number of values allowed in controlling field is 300. A custom multi-select picklist cannot be controlling field in a picklist.

         Merge fields are fields that display values based upon formula calculations.

         Salesforce supports history tracking on change in values of fields. This can be enabled for up to 20 fields in an object.

         Custom objects can be represented using a Metadata XML.

         Deleted data and metadata is stored in recycle bin.

         Database tuning is managed by Salesforce. How Objects and fields are stored in the database is internal to Salesforce.

Object Relationships

         Force.com allows you to create relationship between objects. The "Custom Fields & Relationship" section of objects is used to define relationship between objects.

         There are a two types of object relationships that Salesforce supports -
 .     Lookup relationship
A. Master-detail relationship
These relationships are used to implement one-to-many relationship. They are created as fields in the child record. As an example in a recruitment application if one applicant can have many interviewFeedbacks, we could create a lookup (or master detail) relationship in the interviewFeedback object pointing to the applicant object. 

Read through the Relationships at 
www.npsphelper.com/admin

         In Master Detail relationship, if the parent record is deleted, then all its children records are deleted.

         Child records in master-detail relationship do not have owners. They inherit ownership from the parent record.

         In Master detail relationship, the parent field is required. Also the parent field once specified cannot be changed.

         Standard Object cannot be on detail side of Master-Detail relationship.

         In the related list section of parent objects, only one field of the child object is displayed by default. This is the field specified as Record Name in the child object. To add more fields, search lookup layout needs to be updated.

         Rollup-summary fields are supported in master detail relationship. The parent object can use roll-up summary field type to perform operations of sum, maximum, minimum, count among its children records. These fields are read only fields and are used to calculate values from a set of records.

         Many-to-Many relationships are implemented using two master-detail objects. One Junction object is used as the child of the objects between which many-to-many relationship needs to be established. 

Read through the Junction Objects at 
www.npsphelper.com/admin

         The table below compares Master Detail and Lookup relationship
Lookup relationship
Master Detail relationship
Is Parent a required field
No
Yes
Maximum number of relationship in an object
25
2
Security of parent determines child record's access
No
Yes
Deleting parent record deletes children
No
Yes
Parent can be a child in another relationship
Yes
No
Roll-up summary in parent supported
No
Yes

         Self relationship is a lookup relationship to itself. An example usage could be organization chart where an employee's manager is also an employee.

         Hierarchy Relationship exists only for User object. In this, developers create a manager field in User object to relate to another object.

Reports and Dashboards in Salesforce

Salesforce provides powerful reporting and generation tools on the data stored in the objects.
1.   In reports data displayed is as per running user's security access. Reports can be run on both standard and custom objects. Reports are stored in folders. Users with access to these folders can run the reports.

2.   Reports data is always generated in real time. When a report is saved, reports configuration parameters are stored - but the generated data is not stored.

3.   There are three type of reports
A. Tabular report. This is the most basic report. It displays just the row of records in a table like format with grand total. Tabular reports cannot be used for generating dashboards.
B.  Summary report. This is the most commonly type of report. It allows grouping of rows of data. It supports sorting and displaying subtotals. For example in a recruiting app, a summary report could be used to display open positions classified by department name.
C.  Matrix report. This is the most complex report format. Matrix report summarize information in a grid format. Matrix reports allows records to be grouped by both columns and rows.
Summary and Matrix reports can be used to generate dashboards.

4.   Reports provide two options of exporting data into Excel.
A. Printable View - Export report with formatting into Excel
B.  Export Details - Export raw data

5.   Reports present in public folders can be emailed to SalesForce users.

6.   Report display upto 2000 rows of data. Larger reports can be emailed to Excel.

7.   Generation of reports requires following steps.
A. Selection of object
B.  Selection of report type
C.  Select type of information to be displayed (example count, average)
D. For summary and matrix reports, specify how fields should be grouped
E.  Select columns on the report
F.   Select column order on the report
G. Specify filtering criteria which should be used to select records

8.   Custom reports let the developers define which all fields should be available in a report. Custom report allows user to change field names. Custom reports allow developers to select related fields (upto four levels). The custom reports also allow developers to add sections to group fields. Once a custom report is created it is available in reports tab and user may create reports from it.

9.   Object relationships that are supported by Custom Report Types are -
A. Include all records that have children
B.  Include all records that may or may not have children
As an example consider a recruiting application with two custom objects Position and InterviewFeedback. Also assume that InterviewFeedback is the child of Position object. The first option above will display only those Position objects that have at least one InterviewFeedback as their child. The second option will display all Positions. It is not possible to display Positions that do not have any InterviewFeedback using Salesforce's reporting mechanism.

10.     There are three steps in creating custom reports -
A. Select an object, folder and report label.
B.  Select related objects that need to be included.
C.  Select fields available for report using a drag-and-drop layout editor.

11.     Custom report types are available via the menu option Create-->Report Types

12.     Analytical snapshot allows reports run at scheduled time to be stored as objects. Analytical snapshots are used to perform trend analysis. As an example if we want to view how monthly sales are growing, fields in a report with sales figure can be stored in a custom object every month using Analytical snapshot. Data in this custom object can then be used to perform trend analysis.

13.     Analytical snapshot are available from the Data Management menu option. Source report in Analytical snapshot can be of the type Tabular or Summary.

14.     Setup Analytical reports require a four step process
1.   Select source report
2.   Select custom object
3.   Map source report fields to custom object fields
4.   Schedule the frequency for taking the snapshots

         There are two type of Reports
0.   Standard Report type
§  Created when a object is created
§  created when relationships between objects are created
§  Always inner joins
§  Cannot be modified.
1.   Custom Report type
§  Created by Admin or users with “Manager Custom Report types”.
§  Used to streamline the reporting process.

         Key concepts on Custom Report Type
0.   Saving a custom report only saves the parameters of the report. The data is always real time.
1.   CRTs are reporting templates that admin or users create to streamline the reporting process.

Dashboard

         Dashboards are graphical representation of reports. Dashboards can be generated for summary or matrix reports (and not for tabular reports). Dashboards display data as per last time report was run.

         A dashboard can have upto 20 components

         There are five type of dashboards
Chart
Used for comparisons
Table
Good for showing top five, bottom five lists.
Gauge
Used to show progress towards a goal
Metric
Shows a single number
VisualForce page
used to pull data from other sources

         Further there are six type of charts
 .     Vertical column
A. Horizontal bar
B.  Line
C.  Donut
D. Funnel
E.  Pie
Funnel is used to show proportion of values against each other. Pie is used to demonstrate proportion of single value against total. Donut is used to demonstrate proportion of single value against total and also show the total value.

         The folder in which dashboards are stored determines which user has access to running the dashboard. The dashboard data is based upon the reports data. When a user views the drill-down report for a dashboard component. running user's access permissions determine what data is displayed on the drilldown report. Hence it is possible that the data in the drill down report does not match the cumulative dashboard data.

         Dashboard also support automatic refresh and email. The refresh and email can also be scheduled at intervals - daily, weekly, monthly.

         Two things that determine access to dashboards:
o  Dashboard Folder
o  Running User

Limitations of Salesforce reports

         Although fairly powerful, Salesforce reports have certain limitations. These are explained below.
 .     Support for trend analysis in Salesforce is fairly limited.
A. User Interface of Salesforce reports and dashboards is fixed. Salesforce does not support pixel perfect report.
B.  Salesforce reports do not support importing data from other sources
C.  When displaying objects and their children, Salesforce does not support reporting on objects that do not have any children.
D. If an object has two different related lists, then Salesforce reporting does not support displaying both these related lists together.

         To work-around these limitations, Salesforce customers have the following three options.
 .     Reporting as a service: Data resides on Salesforce. New Reports get generated from same data source
A. BI as a service: Data is moved to a different destination on cloud. Reporting is performed on this new data server.
B.  Datawarehousing as a service: Data is exported to the customers server and reports are generated from the server located at customers location.

Overview of Security in Force.com development platform

1.   Every user in Salesforce has a profile. Profiles are of two types.
A. Standard profile
B.  Custom profile
A user's profiles determines access to objects, and fields in objects.

2.   There are six type of standard profiles -
A. Standard user
B.  System Administrator
C.  Contract Manager
D. Marketing User
E.  Read Only
F.   Solution Manager

3.   Profiles control-
A. The objects the user can access
B.  The fields of the object the user can access
C.  The tabs the user can access
D. The apps the user can access
E.  The page layout that is assigned to the user
F.   The record types available to the user

4.   Standard profiles cannot be deleted. Access permissions to objects (and their fields) of standard profiles cannot be edited. Standard profiles have access to all standard objects. Read-only profile have read-only access to objects. However access to tabs and applications can be configured for standard profiles.
5.   Access permissions of Custom profiles can be edited. Custom Profiles are created by developers by cloning from a standard profile.

6.   For each profile one application has default status.

7.   Record Types are associated with profiles. Record type play two important roles in Salesforce -
A. They help define values to be shown in picklist for different profiles.
B.  They are used to define a mapping between page layout and profiles. This ensures that different users are displayed different views of the same page, depending upon the layout template selected.

8.   A record is an instance of an object. To create record types and profiles check out this link www.npsphelper.com/admin

9.   Removing a field from page layout does not ensure that security of that field. The field may still be accessible using the API.

10.     Security in Salesforce is defined at multiple levels. These levels are -
A. Security at object level
B.  Security at field level
C.  Security at record level
     i.         Organization-wide defaults
   ii.         Role-hierarchy
 iii.         Sharing rules
 iv.         Manual Sharing

11.     Object level security is given to profile level. Object level security is set up via Manage Users-->Profile section. Access for Read, Create, Edit & Delete can be set at standard and custom objects.

12.     Field-level security is also applied at profile level. The field-level security is available via the "Set Field-level security" button in the field definition page. At field level, for each profile valid settings are Visible and Read-only.
When a user logs in the list of objects that are displayed to her is determined by object level security, and list of fields that are displayed to the user is determined by field level security settings of that profile.

13.     The next set of security concepts work at record level. These constraints determine which records should be displayed to the users. The four constraints that determine record level access are - organization-wide defaults, role-hierarchy, sharing rules and manual sharing.

14.     OWD stands for Organization wide defaults. This setting is defined at object level. OWD defined the default record level sharing for objects. All profiles get at least the privileges defined in OWD. OWD takes three different values -
A. Private (Cant view and edit)
B.  Public Read only (Can view)
C.  Public Read-Write (Can view and edit)

15.     Key concepts about Organization wide default -
1.   To find out what should be set as OWD for an object, first find out which user requires least access to an object. OWD is set based upon this users access requirement.
2.   Most restrictive record access is defined using OWD. Access to additional records is made available through Role hierarchy, Sharing rules, Manual sharing.
3.   We can set OWD settings for both Standard and Custom Objects.
4.   Changing OWD settings can delete Manual Sharing if that sharing is no longer needed.
5.   Public Read/Write is default OWD settings.

         Role Hierarchy allows additional users access to records. A hierarchy of roles is defined based upon access requirements at record level. Each user belongs to a unique role. If a role has access to some record, than its parent and ancestors will also have access to this record. Roles can be created using the Manager Users menu. Roles are used to control record access, where as profiles are used to specify access at object and field level.

         Public group used in a sharing rule. It is used to give access to folders. It consists of users, roles or "roles and subordinates". The default Public Group is “Entire Organization”. We cannot assign Public Groups to profiles.

         Another related concept that Salesforce defines is Public group. Public group consists of users, roles or "roles and subordinates".

         Sharing rule is defined using public groups. Record that match certain condition can be assigned to users in public groups using Sharing Rules. Sharing rules functionality is available via the menu Sharing Settings.

         Manual Sharing is used to grant one-off access. Manual sharing can be granted by record owner, any one above the owner in role hierarchy and System Administrator. Manual sharing is used to handle exception cases where access to a particular record needs to be given to a specific user. There is a Sharing button on the records page. This is used to provide manual sharing. The Ownership of the record can be transferred to any user who has at least Read permission on the record.

         If the Read permission for the object is revoked from the users profile, the user will not be able to see their own record.

         Full access to the records means user can View, Edit, Transfer Ownership, Delete and Share the record. Full access is granted to:
o  Record Owner
o  Users above record owner in role hierarchy.
o  Users with “Modify All Data “ permission i.e. Admin
         Apex Sharing Reasons can have upto 10 Apex Sharing Reasons. It can only be given for Custom Objects.

Salesforce Sites

1.   User Interface can be private (internal Salesforce users) or public. Public interfaces are provided to anonymous users using Sites - anyone could access a website built on Sites without having a Salesforce login.

2.   If Sites is licensed, the functionality of Sites is available at Develop-->Sites.

3.   A sites user has a unique domain name. One domain name can be used to support multiple websites. Example domain name could be - http://ap1.mydomain.salesforce.com/siteName . The domain name must be unique among all site users and can represent the organization's name.

4.   Creation of sites requires specifying fields like Site label, Site Name, Site contact, Default web address, active site home page, inactive site home page.

5.   Once an organization has registered a domain name with a domain name registrar, it can point the url to sites url.

6.   Site template is a VisualForce page that defines the default look-and-feel of the sites page.

7.   Force.com sites are
1.   Public, unauthenticated websites
2.   Accessed from branded domain names
3.   Build with VF pages
4.   From data and content in a Salesforce application

8.   Creating a Force.com Site requires performing the following steps
1.   Build a Force.com App
2.   Design your web interface in visual force
3.   Create a Force.com site
4.   Activate the Force.com site

9.   Key concepts about Force.com Sites security
1.   Security for your site is controlled through public Access Settings
2.   Access can also be restricted by specifying an IP range.

VisualForce

1.   SalesForce provides two ways to build user interfaces. These are Page Builder and VisualForce. PageBuilder automatically generates pages with default look-and-feel. VisualForce allows developers to define their own user interface.

2.   VisualForce plays the role of JSP or ASP in SalesForce. It is used to develop user interface for SalesForce applications.

3.   Standard tags are included in VisualForce using apex keyword. As an example the top level tag in VisualForce is <apex:page>.Rest of the code is included in <apex:page>. Custom tags use tags use the prefix c:.

4.   The syntax to access fields in VisualForce is {!object.Field}. The expression in between {!} is evaluated. $User gives the details of the user that is logged in. {!$User.FirstName} displays the first name of the logged in user.

5.   A VisualForce page contains HTML, VisualForce components, JavaScript, Flash and text. All elements need to be well-formed. Visual Force gets converted into HTML at the server.

6.   VisualForce can be used to support other devices like phones, PDAs.

7.   <apex:inputfield value="{!account.name}"/> generates an input element. Based upon the data type of account,name field, appropriate user interface element is displayed (such as text box, pick list). This is an example of data binding. The value of the name field is displayed in the user interface, and changes are saved back to the object.

8.   <apex:form> is used to display a form. Other VisualForce display elements like text box, checkbox are included in a form.

9.   <apex:detail/> is used to print the details page for an object. If the attribute "relatedlist" is set to false, then related lists are not displayed. Specific related lists can be added using the VisualForce component <apex:relatedlist>

10.     VisualForce supports development mode. Development mode can be enabled using Setup|My Personal Information}Personal Information. In development mode, VisualForce provides two main features.
A. Split screen development: In this the browser window is divided into two parts. The bottom part is used to show VisualForce code. Changes can be saved and resulting page is displayed on the same browser window.
B.  Creation of new pages by just typing the URL www.servername.com/apex/PageName where servername is the SalesForce server that is allocated to you.

11.     Page layouts support one or two columns. VisualForce can support more than two columns.

12.     Previous version of VisualForce is S-controls. It is now being phased out. Visual force two advantages over S-control
A. Visual force having much better performance as compared to S - control.
B.  Visual force is a tag Markup language and S - controls are a javascript procedural code language.

13.     VisualForce components and pages have version numbers. SalesForce stores the version numbers along with pages. All older versions are supported.

14.     VisualForce elements take attributes similar to XML format. As an example in the statement below, sidebars and top headers are not displayed. 
<apex:page showHeader="false">
</apex:page> 
<apex:page> also takes an attribute renderAs as input which supports pdf generation.

15.     Record's id is sent via request parameter, and made available to the page. In the above example the id identifies the account for which name has to be displayed.

16.     VisualForce consists of three type of elements
A. VisualForce pages: These are used to define the user interface. VisualForce pages support multiple devices
B.  VisualForce components: Standard prebuilt or custom user interface components available through a tag library
C.  VisualForce controllers:<="" li="">

17.     There are three type of controllers -
Standard Controller
The standard controllers provide access to standard Salesforce.com behavior. <:apex:page standardController="Account"> They are available for all API entities/objects, such as Account, Contact, Opportunity etc as well as custom objects. They Provide access to standard Salesforce data and behavior - Standard object record data and Standard actions like save, edit , delete.
Custom Controller
Custom Controllers is used for custom behavior or non-standard data-sets.<:apex:page controller="MyAccount"> They can be used to create wizards or leverage call outs.
Controller Extensions
Controller Extensions extend the behavior of standard controllers.<:apex:page standardController="Contact" extensions="ClassA, ClassB"> They are used to add custom behaviour or additional data to controllers

18.     Static resources are accessible through global variables $Resource. It can be used to access CSS stylesheets, images, flash movies and JavaScript libraries.

19.     Error messages are displayed in pageMessages component and can be displayed by the statement <apex:pageMessages/>

20.     To perform the save operation, the save() method can be invoked on the object. This is an example of action binding. <apex:commandButton value="Save" action={!save}"/>

21.     The look-and-feel of VisualForce is managed using StyleSheets. Default SalesForce look-and-feel can be changed.

22.     The size of VisualForce page cannot be more than 15MB.

23.     Web Services can also be invoked from VisualForce.

Layout Editors

24.     Layout editor provides a drag-and-drop interface to define the user interface. Using Layout editor, fields of a page can be moved around, sections and space can be added.

25.     Layout editor supports one-column and two-column layout.

26.     Double-clicking on a field allows fields to be made read-only and required.


II. Analytics as a Service:
1. Introduction to Reports
  • Reports can include both standard & custom objects
  • two users with different access levels see different data with the same report
  • objects & fields are available immediately after they get created
  • reports run in real-time data
  • reports are saved in folder, report security is determined by folder where report is stored.
  • System administrator and users with ‘Manage public reports’ permissions can manage the folders
  • Custom Report
    • 3 panes – fields, fitlers & preview
    • 4 types of reports:
      • tabular – simple listing of data
      • summary – sorting and sub totalling
      • matrix – summarizes data in grid (to compare related totals)
      • joined – can contain data from multiple standard or custom report types
    • can customize by adding more columns, but cannot deselect action & name columns
    • the way the type of report to be created can be identified by:
      • Select Data
      • Select Report Type
      • Select Summaries
      • Select Groupings
      • Select Filters
    • scheduled reports run at user’s timezone who scheduled it
    • to run a report, the report must be in a public folder and the user has to have access to it
    • Hide Details – will show only summary rows, Show Details will show all the data
    • report shows only upto 2000 reports, beyond that the user can export to excel
    • Printable view – exports data to excel with the report formatting
    • Export Details – exports raw data to excel (no report format will be retained)
2. Introduction to Dashboards
  • Dashboard – contains components based on report or chart, can use VF pages to present data, shows data as of the last time it refreshed, can be refreshed manually
  • dashboard can have upto 20 components
  • can choose either 2 or 3 columns
  • dashboard components
    • chart – good for comparisons, is based on report data and the field which you summarize the report is the field that you see on the dashboard
    • table – shows the top/bottom n records, can be used to display totals also, can include upto 4 columns
    • guage – shows progress towards goals, display percentage or total
    • metric – shows single number (grand total)
    • visual force page – pulls data from another source
  • can follow individual components through dashboard alerts and snapshots
  • can post component’s snapshot to dashboard feed to chatter or dashboard feed
  • chart types
    • vertical column – summary report with single grouping. variations: vertical col: grouped, stacked, stacked 200%, good for showing dates
    • horizontal bar – good for summary with single grouping. horizontal grouped, stacked, stacked 200%
    • line – specially used to show data over time
    • donut chart – good for multiple groupings with total amount
    • funnel – good for datasets for multiple groupings in ordered sets and want to show the proportions among them
    • pie – multiple groupings and want to show proportion of single value for each groupings against total
    • scatter – illustrate degree of correlation between two axis
    • combination charts – that includes different sets of data
  • dashboard security
    • dashboard folder – controls who sees the folder
    • running user – controls what data is displayed on the dashboard
  • clicking a dashboard component takes users to underlying source report, filtered source report or another url that the dashboard creator specifies
  • can drill down to single record, but user will see that the security model will allow to see
  • report access is determined by folders
  • it is possible to see a dashboard component, but not the underlying report
  • Dashboard filters
    • let users chose which data to chose
    • each filter based on single field, can specify upto 10 filter options
    • enables users to view different subsets of data on the same dashboard
    • each dashboard can have upto 3 filters
    • filters can be created on date, datetime, currency, pickup, lookup and text fields
    • filters cannot be added with visual force components, scontrol conponents
    • cannot use filters for bucket fields, filter components cannot be followed on chatter
    • scheduling or emailing a filtered dashboard will return unfiltered data
  • Dashboard display info as of date
  • can be refreshed daily, weekly, monthly
3. Custom Report Types
  • Standard Report Types
    • created, when an object is created, allows to report relationships between objects are created (similar to inner joins)
    • the report types cannot be modified
  • Custom Report Types (CRT)
  • unique templates for creating reports, created by administrators or users with ‘Manage Custom Report Types’
  • can include standard or custom objects, allows users to select the objects and fields that should be related for reporting purposes
  • Enable the creation of “with or without” reports
  • Three steps to create a report based on CRT:
    • select the primary object
    • select related records from other objects (optional)
    • can chose upto 4 objects, chose “with or without” for each related object (similar to outer join)
    • Add fields related via lookup (optional)
  • traverse multiple objects
  • use lookups to join other objects
  • can go upto 4 levels deep, supports many to many relationships
  • primary object cannot be changed after the CRT is created
  • there is a limit on # of CRTs  (depends on SF edition)
  • counting rows
    • standard reports show all rows from both the objects (positions & job applications)
    • what if you want to see only unique rows so that within a report of both job applications & positions, you could see how many job apps you have or how many positions you have.
    • in this case, need to create a report that uses custom field to  count the # of records
    • two step process
      • create a new formula field
      • run a report that utilizes this new field
  • to create custom summary formula: 3 steps
    • create formula fields to count the number of records for each object
    • create custom summary formula to calculate the ratio between the number of records for each object
    • optional: create a dashboard component that will show the ratio between the two numbers
  • Bucketing – helps qualifying the data (for e.g. Not qualified, Qualified, Highly Qualified – for candidates)
    • create a new formula field to group the information
    • create or update a report that utilizes the new field
    • create or update a dashboard component using the new or updated report
4. Analytic Snapshots
  • provides trending, can be scheduled
  • schedule the report and capture the data in custom object and report on the data in the custom object to view historical data and analyze trends
  • can be created in 3 steps:
    • create source report (tab/summary)
    • create the target object (custom). Fields in target object should have same type as in the source object that included in the source report
    • setup the analytic snapshot
    • select the source report, select the target object, map the fields on the report to the fields on the custom object and schedule the frequency for taking the snapshot
5.Going Beyond Salesforce Reports
  • exception reports are available in a few places, but not everywhere
  • no reporting on multiple related lists (using crt, you can include custom objects that are hierarchically related
  • there is only one layout or UI for the reports
  • Salesforce reports don’t provide trending capabilities beyond analytic snapshots
  • Salesforce reports provide limited analysis of what changed bet two dates
  • can’t include data in sf report from another source
  • RaaS -that uses Salesforce as a source – then reports on the data by running multiple queries
  • BIaaS – copies all data to local repository, then runs queries off of the copy of the data  (data repository is provided as a service)
  • Data Warehousing – similary to BIaaS, but you own the servers.
III. Data Management
1. Data Management Overview
  • Id – first 3 chars identify the object – account ,contact, custom obj, …
  • can access id through – URL, Report, Web Services API, Formulas
  • Format of record ids:
    • 15 digit case sensitive
    • a column in report is displayed as 15 digit
  • 18 digit case insensitive
    • web services api always return 18 digit
    • the api always returns 18 digit
    • the report framework doesn’t expose IDs for all objects
  • System fields
    • Created Date, Created By, Last Modified Date, Last Modified By – these fields can be set only during the initial setup
    • only accessible through API and backward compatible with all SOAP based APIs
    • available to all custom objects, but restricted to account, opportunity, contact, lead, case, task and event standard objects
    • for updates, api will accept either the 15 digit or 18 digit
2. Basics of Upsert & External ID
  • Upsert – insert + update
  • External Id
    • user defined cross reference field
    • can be created for any custom field of type text, number or email
    • helps improve report & API SOQL performance
    • each object can have upto 3 external ids
  • if the external id is matched multiple times, an error is reported
3. Data Management Tools
  • Tools to migrate data
    • application importing wizards
    • web service APIs
      • Data Loader, Partner Tools, Custom-built Tools, Open Source Tools
  • import wizards
    • can load upto 50,000 records – accounts, contacts, leads, solutions or custom objects
    • prevent duplication of data contact, leads, custom objects
  • API based tools
    • can load data to any object supported by API
    • can load more than 50,000 records
    • can schedule regular data loads
    • export data for backup
    • delete multiple supported objects at the same time
  • Data Loader
    • can be run from command line
    • support custom relationships for upsert
    • supports importing from and exporting data to a CSV file
    • supports loading from and exporting data to a database through JDBC
    • available for downlaod in Unlimided Edition, Enterprise Edition & Developer Edition, also available as open source but no support
  • Export – uses SOQL to export records from SF to CSV
  • Insert – inserts new records
  • Update – updates existing records and matches records based on the Salesforce id
  • Upsert – insert + update, matches based on either Salesforce id or external id
  • delete – deletes records from, matches based on Salesforce id
4. Managing Data
  • command line
    • can set the config directory
    • data loader runs whatever operation, file or map that is specified in the config file
    • runs the current directory if no config diretory is specified
    • default config file location: c:\program files\salesforce.com\dataloader\version\samples\conf
    • if you use process-conf.xml, setting process.name to the name of a process specifies a process to run. Otherwise, the config.properties file is used for parameter settings
    • supports extract, insert, update, upsert, delete
    • offers encryption utility: Run\bin\encrypt.bat
      • Generate a key: key text is generated onscreen from the text provided
      • Encrypt text: (key file can be provided optionally)
      • Verify encrypted text
    • mass transfer tool to upsert mass data – can be used to transfer multiple accounts, leads from one user to another
    • need ‘Transfer record’ and ‘Edit’ permissions
    • to transfer a record that a user doesn’t own, the user needs to have the required user permissions and read sharing acces on the record
IV: Designing Applications for Multiple Users
1. Design Considerations
  • need to know the users or actors of the app
  • need to identify
    • data that can be accessed by users
    • data restrictions and revoke access from such sensitive data
    • users who should be allowed to customize the app and assign the necessary permissions
2. Managing your user’s experience
  • Types of licenses
    • every user must have a user license
      • defines the fucntionality permitted for the user and determines the profile available to the user
      • can have only type of user license, but may have many feature licenses
    • Two types of license
      • Salesforce
        • full access to CRM, force.com appexchange apps, standard or custom apps
        • full access to CRM, force.com appexchange apps, standard or custom apps
      • Salesforce Platform
        • custom apps, force.com appexchange apps, no access to CRM functionality, can still use accounts, leads, contacts, reports, dashboards and documents
    • can have add-on features, such as apex mobile user, sf crm content user, marketing user
    • can have more than one type of feature license
  • Profiles
    • define user permissions to perform different functions
    • each profile is associated with a license type
    • profile work with sharing models or role hierarchy
  • profiles control permissions, access to data and the UI
    • Permissions
      • define all actions that a user in a profile can perform
    • access to data
      • controlled by field level security settings which allow to define object and field level permissions
    • user interface
      • page layouts, tabs, applications available for each user, record types for each profile determine what the users will see when they login
    • two types of profiles
      • standard
        • can’t be created or deleted and permissions cannot be customized
      • custom
        • create or clone the standard profile and modify the settings
    • types of permissions
      • Administrative
        • can grant some administrative permissions to custom profile
      • General User
        • control the ability that standard user can do like editing tasks
      • Standard Object
        • control read, create, edit and delete action on standard objects
      • Custom Object
        • control read, create, edit and delete actions on custom objects
      • View All Data allows administrators to view all records regardless of all other security settings
      • Modify all Data – allows administratos to modify all records
      • Customize Application permits administrators to administer the application
      • API only user cannot login to sf.com. such users can only use the application through API calls
      • Password Never Expires prevents password expiring
    • Permission Sets
      • collection of settings and permissions
      • represent a concept like job title
      • handle the system requirements that previously existed on the profiles
    • user can have only one profile, but can have multiple permission sets
    • while assigning permissiosn to users, use profile to assign most restrictive settings and assign additional permissions using permission sets
    • an org can have upto 1000 permission sets
    • permission sets can be used assign additional permissions, but not to deny permissions
    • permissions can be revoked by
      • removing permission from permission set
      • changing a user’s profile
      • disabling a permission set
    • use permission sets to grant permissions for
      • applications, objects, fields, tabs, apex classes, service provider, visual force pages
    • permissions that are not available in permission sets must be set through profiles (login hours, ip access, etc)
    • revoking delete permission for a child object in master child relationship will not prevent deleting the child record if parent record is deleted
  • Field-Level Security
    • restricts access to fields
      • list views, reports, force.com, conenct offline, custom links, mail merge, related lists
    • overrides less restrictive page layout settings
    • set at profile level
    • each profile can have different level of access to object
    • doesn’t allow conditional security of records
    • all users can edit any accessible fields
  • Customizing UI and Profiles
    • Record types
      • define the manner in which data is displayed according to business needs
      • determine the page layout and limit the picklist options based on the profile
      • not security tools – do not subclass or partition the data, they work at the UI level and not at the data level
      • users can change the record type of an existing record and it does not affect the values in the record
3. Controlling access to records
  • Record ownership
    • has a owner, sharing based on owner of a record, can be transferred to any user who atleast has read access
    • child records in master detail relationship do not have owner, they inherit from parent record
  • Types of owners
    • users – full access if a user is owner. if read permission revoked, then they can’t see their own record
    • queues – allows multiple ownership, assigned manually or thru assignment rules
  • Record Access
    • read only access, read-write access, full access
  • Ways to obtain record access
    • Full access: owner, above the owner in role hierarchy, contains modify all data permission in profile
    • Read/Write or Read only: owd, role hierarchy, sharing rules, manual sharing, apex sharing, view all data
  • Profiles vs Sharing Models
    • profiles
      • control access to objects and fields
      • whether user can view positions
      • which fields the user can view
    • Sharing models
      • control access to records
      • control the positions to view
  • OWD
    • security settings that define the base line level of access to records that the user doesn’t own
    • only way to restricts access to data in sharing model
    • 3 level of settings
      • public read-write
      • public read only
      • private
    • Determining OWD
      • identify the most restricted user of this object
      • will there be an instance of object that this user is not allowed to view
      • if yes, then owd is private
      • else,
        • will there be an instance of object that this user is not allowed to edit
        • if yes, then owd is public read only
        • else, then owd is public read-write
    • setting owd for child records in master-detail relationship – child inherits  owd from parents
    • child records in lookup will not inherit owd
    • it is possible to change owd any time, but it may have consequences
    • owd can be set for both standard & custom objects
  • Roles
    • control the level of visibility to org data
    • every user associated to role
    • assuming no sharing rules created, users in the same role cannot access each other’s records
  • Role Hierarchy
    • defines data access rights granted to users at higher roles
    • users access to all records they own and their sub-ordinates
  • record access rolls up with role hierarchy with all standard objects
  • with custom objects, a setting named ‘Grant Access using Role Hierarchy’, this can be prevented
  • Public Groups
    • Roles are two dimensional structures. Public groups are way of grouping users together to grant them record access.
    • Groups are good way to extend access across the nodes in hierarchy tree
    • ‘All Internal users’ is a default public group. Public groups can be made up of any combination of users, roles and subordinates and other public groups.
    • Can use public groups in a sharing rule to reduce the number of sharing rules
    • Public groups can also be used for folder access.
  • Sharing rules
    • are created to grant access to records between users when access does not roll up
    • Using sharing rules, read only and read/write access can be granted to users
    • Sharing rules cannot be more restrictive than owd settings.
  • Manual Sharing
    • used to grant access to records on a one-off basis when randon users require record access.
    • Access rights can be granted by the owner of a record, anyone above the owner in the role hierarchy and by the system adminsitrator
    • It is granted at the record level and is not used to grant access at the organization level
  • Apex sharing reasons
    • allow developers to define the reason why a user or group of users have access to record
    • apex sharing reasons exist only for custom objects and they are defined for individual objects.
    • each object can have up to 10 apex sharing reasons
    • sharing rule has to be created manually using new manual sharing rules
    • deleting apex sharing reasons will delete all manual sharing rules associated with it
    • Users with ‘Modify all data’ permission can change sharing using apex sharing reasons
    • apex sharing reasons should be used programatically and not through the application
4. Designing Data Access Security
  • Establishing Data Access
    • When you want to determine data access for a object,
      • consider the OWD default
      • the owner of the records
      • uses who need access
      • rules governing data access
    • When determining access to sensitive data, you need to analyze the access requirements and restrictions for each profile




Exam Outline for Implementing Business Process
Business Logic
23 %
List and describe how to create formulas, validation rules, and workflow rules
Given a scenario, determine which Force.com feature to use to solve a business requirement and/or describe how to apply the solution
List and describe the capabilities of the Force.com approval processes
Given a scenario, select the appropriate features of Force.com approval processes to satisfy business requirements
List and describe the features of the Force.com platform for debugging and monitoring automated business processes
Describe use cases for extending business logic through Force.com code
 V. Implementing Business Process
1. Implenting Business Processes
  • can be used for
    • preserving data quality
    • automatic processes
    • keeping processes from getting ‘stuck’
    • keeping systems in sync
    • auditing
  • Features
    • Formula fields
    • Validation rules
    • Approval process
    • Workflow Rules
    • Outbound Messaging
    • Field History Tracking
    • Setup Audit Trail
  • Functions
    • ischanged – compares with previous value and returns true if it is changed
    • priorvalue – returns the previous value of the field
    • isnew – checks if a formula is running during creation of new record and returns true if it is
    • ispickval – determines if the value of pickuplist is equal to specified string
    • regex – string used to describe the format of the string according to certain syntax rules. It compares a text field to regular expression and returns true, if there is a match
    • vlookup – returns value by looking up a record value in a custom object. It checks against a key and returns value from that key.
    • isnumber – returns true if a text value is number
    • case – checks against a series of values
    • image – inserts an image
    • htmlencode – encodes text stings and merge field values for use in html (e.g. ‘<‘)
    • jsencode – encodes text strings and merge field values for use in javascript (e.g. apostrophe)
    • jsinhtmlencode – encodes text strings and merge field values for use in javascript within html tags
    • urlencode – encodes text strings and merge field values for use in URLs
  • System Logs
    • display logging info, cumulative limits and source code of transaction
    • used for debugging code snippets
    • used to view debug log or execute anonymous code blocks
    • display system resource info
  • Log levels
    • from lowest to highest
    • Error – lowest, produces distinct results and only error messages
    • warn – warn and error
    • info – info, warn and error
    • debug – includes low level and calls to system.debug
    • Fine/Finer – system.debug, dml, soql/sosl, entrance and exit
    • Finest – includes all messages in previous levels and on apex scripts
  • Debug Logs
    • contain info on database changes, automated workflow processes, validation rules
    • request-response xml, apex script errors, and resources used by an apex script
    • records errors and system processes that occur in an org
    • can be retained and managed for specific users
    • 20 logs can be retained for an org, when max is reached, oldest one is overwritten
    • debug log is different system log
    • system log refers to console link at the top of the page
    • underlying logging system is same
    • sysetm log is live console, debug log is persistent store
2. Preserving Data Quality
  • Validation Rules
    • used to verify that the data entered meets the standards before the user saves the record.
    • Can contain formulas or expressions that evaluate the data in one or more fields
    • return true or false
    • are executed for fields that are stored in the object, but not part of the displayed page layout
  • can be used for
    • enforce conditionally required fields
    • enforce required data formats
    • enforce data consistency
    • prevent data loss
  • can be used in conjunction with a roll-up summary field can be used to prevent users from adding or deleting records
3. Automating Business Processes with Workflow
  • Workflow Rules
    • Entry Criteria then Immediate Actions or Time dependent actions
    • Steps
      • Specify the object (both standard & custom objects are ok)
      • Select Evaluation Criteria
        • only when a record is created
        • when it’s created or edited and now meets the cirteria
        • every single time the record is created or updated
      • Define rule criteria
        • filters or formulas
      • Workflow Actions: immediate or later time
        • Tasks – can be assigned to user, role or record owner
        • Email Alerts – can send email to one or more recipients (from address can be current user address or org wide address)
        • Field Updates – can update a field value on a record (including record type/owner)
        • Outbound Messages – can send specific info to designated endpoint in form of API/SOAP message
      • Time-Dependent Workflow
        • triggered depending on elapsed time (evaluated off of any date field in Salesforce)
        • time-dependent actions have a time trigger
        • the action is queued to fire
      • Some considerations
        • cannot use time-dependent workflow when a rule is set for evaluation, every time a record is created or updated
        • when a new workflow rule is created, it does not affect existing records
        • can monitor and remove pending actions by viewing the time-dependent workflow queue
        • if a record that has an action pending against it in the time-based workflow queue is modified so that the record no longer meets the criteria or the timing changes, the action will be updated in the queue
        • if a record no longer meets the time-based workflow rule criteria, the action is removed from queue
4. Automating business processes with Approval Processes
  • automates routing of records for approval
  • contain one or more steps and can be logically split into 6 steps
  • not automatically sent for approval, user has to submit
  • steps
    • process definition
      • it is determined which records should enter the process and what settings should apply to the whole process.
    • initial submission actions
      • developers decide what happens to a record after it is submitted for approval – actions are locking a record, assigning a task, sending an email, updating a field, sending an outbound message
    • step definition
      • developers determine whether all records should enter the step or whether records only meeting the criteria are chosen.
        • if later is chosen, developer defines the criteria for entry to the step. developer also assigns the approver and determine whether the approver can delegate
        • if there are multiple steps, developers can decide what should happen if a record is rejected at a step after the first step: should it go back one step, or should it be considered a final rejection
    • final rejection actions
      • developers define the actions to be taken when a record is rejected
      • actions are: unlock a record, assign a task, send an email, update a field, send an outbound message
    • final approval actions
      • developers define actions to be taken when a record is approved
      • actions are: unlock a record, assign a task, send an email, update a field, send an outbound message
    • recall actions
      • developers define actions to be taken when a record is recalled from the process.
  • Workflow Rule vs Approval Process
    • Workflow rule
      • are triggered upon save
      • consist of one set of criteria and actions
      • can be modified or deleted
    • Approval process
      • triggered only when a user clicks submit for approval
      • consist of multiple steps, have entry criteria, step criteria and step actions; have initial submission actions, rejection and approval actions and actions for each step
      • some attributes can’t be modified, processes must be deactivated before they can be deleted
  • Skipping steps
    • allows developers to skip steps within an approval process based on specific criteria
    • skip step is a step that has criteria defined to determine whether or not approval is required
    • 3 options
      • go to next step
      • approve record
      • reject record
    • considerations
      • Go to next step” option is only available when editing a step that already has an ensuing step (so first create ensuing step)
      • selection the “go to next step” option in a step and subsequently delete all ensuing steps, sf changes the step to automatically reject record, if the step criteria are not met
      • selecting the “go to next step” in the first step when the record does not meet the criteria for any of the steps in the approval process, rejects the record
  • Parallel approval process
    • can send approval upto 25 different users simultaneously
  • Dynamic Approval Process
    • Used to route records for approval based on complex approval matrices
    • Used to route approval requests to users listed in lookup fields on the record requiring approval
    • Steps
      • create a lookup fields on the object beign approved
        • uses lookup relationship
        • if it requires 3 approvers, then create 3 lookup relationships
      • Create a custom object as an approval matrix
      • Populate the approval matrix
      • Create Apex code to fill in the lookup fields from the approval matrix
      • Create or update an approval process to utilize the new lookup fields
  • Automated processes occur in the following order
    • Validation Rules->Assignment rules->Auto-Response rules->Workflow rules->Escalation rules
5. Auditing Processes
  • Setup Audit Trail
    • tracks changes made to the setup of an org
    • lists the date of the change, the name of the user who made the change and a description of the change
    • displays 20 most recent changes
    • tracks changes for 180 days
    • can choose upto 20 fields per object for tracking changes
  • Field History Tracking
    • allows to track the history related lists for cases, contacts, leads, opportunities, solutions, accounts, contracts, and custom objects
    • modification to any standard or custom field, whose history is set to be tracked, results in a new entry in the History related list
    • for most field types, both the old and new values are captured in the History related list; however those values are not tracked for long text area and multi-select picklist type fields
    • tracks changes for upto 20 fields
  • 3 tools
    • debug logs, setup audit trail, field history


Exam Outline for Visual Force Pages
User Interface
15%
List and describe the components of any Force.com application user interface (e.g., tabs, applications, detail pages, list views)
Given a scenario, determine the capabilities and constraints of the declarative framework for building a user interface (e.g., what can and can’t be done in a page layout)
Describe use cases for how Force.com pages can extend the user interface in the declarative framework and when to do so
Describe the capabilities and functionality of Force.com sites
VI. Visual Force Pages
1. Introduction to Visualforce Pages
  • 2 types of UI
    • Page Builder
      • UI generated automatically
      • limited/no control of UI behavior
      • limited control over look and feel, but all UIs are consistent
    • Visualforce
      • UI generated by developer/technologist
      • full control of UI behavior
      • full ‘pixel level’ control over UI
  • Visualforce & Apex
    • closely tied
    • PE/GE edition limitations prevent from authoring own apex (app exchange apps is okay)
  • Visualforce inline editor
    • auto-completion
    • full syntax highlighting
    • online doc
    • can be edited through force.com id
  • Developers can include
    • VF tags, Force.com expressions, HTML, Javascript, Flash
    • VF pages are limited to 15 MB
  • view State
    • maintains state across multiple pages or server calls
    • view state inspector
      • shows components contributing to view state
      • must be enabled on user profile
      • is displayed only when using <apex:form>
    • view state limit is 135 kb
  • vf pages
    • understand Salesforce metadata
    • display the same performance as statndard sf pages
    • are automatically upgraded to the next sf release
    • vf conforms to mvc development patter
  • MVC
    • Model – standard or custom object
    • View – pages that are presented to the end user
    • Controller – that determines the logic what happens initates an action such as clicking on a tab, etc.
  • 3 key elements
    • Visualforce pages
      • design definition of an app’s user interface
      • implemented using standard web technologies like HTML & javascript
      • can dynamically detect device and associate them with specific design definitions
    • Visualforce components
      • can be standard or custom UI components
      • over 65 standard sf ui elements available at G
      • referenced via a tag library model
    • Visualforce controllers
      • ability to reuse any standard Salesforce UI behavior like new, edit, save, etc (standard controller) and have access to Salesforce data
      • ability to define new UI behaviors and navigation using apex (custom controller)
  • Visualforce Components
    • pre-built UI constructs which reference standard elements in the Salesforce UI
    • referenced in a VF page using an XML tag
    • dynamic visualforce components
      • are designed in apex
      • allows to create pages that render based on variety of states, such as user’s:
        • permissions, behavior, org preferences, data attributes
      • are not intended to be the primary way to create new vf pages
  • Controllers
    • contain the logic and data references a page uses
    • can be used to maintain state across page interactions
    • are refernced or used by pages, through components that call data or actions
    • each page can reference or use standard controller, custom controller or custom controller extensions
    • each vf page references one main controller
  • types of visualforce components
    • standard controllers
      • are available for all API entities/objects as well as custom objects
      • provide access to standard sf data and behavior
      • are referenced by using <apex:page standardController=”Contact”>
    • custom controllers
      • are coded to create custom behaviors or non standard data sets
      • can be used to create wizards or leverage callouts
      • are invoked by using <apex:page controller=”MyController”>
    • cusom extensions
      • add custom behavior or additional data to standard controllers
      • are invoked by using <apex:page standardController=”Contact” extensions=”MyClass, MyOtherClass”>
  • Expressions and Data Binding
    • uses expression syntax to bind components to sf data and actions in the page’s controllers
    • expressions are linked back to controller data and actions not just to sf in general
    • all content in {!…} evaluated as an expression
    • User.FirstName} shows the current user’s first name in a page
    • data context is provided to controllers by the ID parameter, just as in standard pages.
  • Versioning
    • backward compatible
    • each vf page is saved with version settigns for specified version of api as well specified version of visualforce
  • Visualforce namespace
    • standard tags begin with the word apex
    • custom tags begin with the letter c
    • user can register custom namespaces to be displayed with custom tags instead of the letter c
  • Incorporating VF pages in Salesforce UI by
    • creating links to reference the unique page URL
    • overriding standard buttons to route to the new page
    • overriding tab overview pages to use the new page
    • creating custom tabs for the new page
    • embedding pages into page layouts
    • adding pages to a dashboard
    • using pages as custom help for a custom object
2. Visual Force Tags
  • Tags
    • consists of library of tags
    • can incldue text, html, javascript tags
    • can’t use javascript commenting
  • Tag Rules
    • are hierarchical
    • must be closed in the reversed order they were opened
    • like xml, vf must be well-formed
    • VF and JSP
    • similar to JSP
    • typically begins with <apex>
    • all pages must be enclosed by a set of <apex:page> tags
    • components may contain attributes with values to help further define them
    • vf components are resolved into other code at runtime
  • Tag Bindings
    • Bindings related visual force components with the page controller or other page components
    • 3 types of bindings
      • data bindings – use expression systan to pull the data from dataset made available by the page controller
      • action bindings – uses expression syntax to call action methods for functions coded in page controller
      • component bindings – compnent attribute values to reference other components
  • Tag Data Binding
    • binding goes both ways – read and updated
  • Expression syntax
    • dynamic object data can be inserted using {!objectname.fieldname} syntax
    • global data can be inserted with the added $ syntax, such as
      • User.fieldName}, {!$Page.otherVisualforcePage}, {!$Component.otherVisualforceComponent}
    • local variables can be created to stand in for these expressions as they can become long and unwieldy using the <apex:variable> tag.
  • Action Binding
    • set of actions available through the controller
    • can be called using expression syntax
    • they can be
      • standard actions
      • custom actions
  • Component Ids
    • all vf tags have an optional id attribute
    • this id is used as the DOM id when the page is rendered
    • the tag can be referenced by the id by other tags, javascript, or other web enabled languages
    • the ids should be unique within each page
    • the hierarchy of ids should be specified if the ids are not unique
    • when components (such as tables and lists) support iteration over record collections, the system appends _index to the id for each row, starting with zero.
3. Basic Page Components
  • Layout Components
    • provides a structure to the page
    • provide templates or frames to insert content
    • do not bind directly to sf data
    • are focused on areas where data-bound components can be placed
    • tags
      • apex:page /> – represents a single vf page
      • apex:variable /> – provides a local variable that can be used to replace an expression to reduce long and repetitive text
  • Static  Resource Components
    • a type of sf storage
    • designed for use with vf
    • items required by the vf pages (such as javascript, css, images, etc…)
    • referenced using $Resource global variable
    • recommended method over uploading these files to document tab
    • are uploaded via Your Name|Setup|Develop|Static Resources
    • can be contained in an archive (zip)
    • limited to 5 MB per file and a 250 mb overall
    • use action attr to redirect
    • Components
      • <apex:stylesheet> – to add additional css file
        • are located in /sCSS/directory
        • dStandard.css – most styles for standard objects/tabs
        • allCustom.css – styles for custom objects/tabs
      • <apex:pageBlock>
        • helps build out pages and uses sf stylesheet by default
        • creates an area of a page that is similar to detail page and doesn’t contain the default content
      • <pageBlockButtons> – set of buttons that are styled like standard sf buttons (buttons still need to be created manually)
      • <pageBlockSection> – must be used within a pageBlock component. This tag creates a section with one or more columns
      • <pageBlockSectionItem>
        • used within pageBlockSection component
        • allows to modify data presentation, display the data using a different widget, or present items not based directly on SF object fields
        • if we need to bundle more than one item in the cell, then use outputpanel
      • <apex:sectionHeader> – creates the standard colored header bar displayed under the tabs in the SF UI
      • <apex:toolbar>
      • <apex:toolbarGroup>
      • <apex:tabPanel>
      • <apex:tab>
      • <apex:panelBar>
      • <apex:panelBarItem>
      • <apex:panelGrid>
      • <apex:panelGroup>
  • Coarse Metadata Components
    • provide a large amount of generated code to create familiary Salesforce structures
    • do not allow for much customization to the generated areas
    • Components
      • <apex:detail />
      • <apex:relatedList />
      • <apex:listViews />
      • <apex:enhancedList />
      • <apex:repeat />
    • Chatter tags
      • enable to add chatter into vf paes
      • incorporate chatter into vf pages using
        • the showChatter attribute of <apex:detail> tag
        • <chatter:feed> to include chatter feed on a record
        • <chatter:followers> to include chatter followers on a record
        • <chatter:feedWithFollowers> to include chatter feed, followers and show/hide chatter button
        • <chatter:follow> to add a button that enables you to follow records
    • Message components
      • <apex:pageMessages> – use the standard sf style
      • <apex:messages> – unformatted but can apply custom style
      • <message> and <pagemessage> – specific to one component
      • messages always shows up in system log.
4. Form and Output Components
  • allow entering info into your pages, & uploading files
  • form components
    • <apex:form>
      • enables a section of a vf page to allow users to enter data and subit it with commandButton or commandLink
    • <apex:inputField>
      • corresponds to a SF object field that respects the attributes of that field and uses associated sf UI widget
    • <apex:inputWidget>
      • set of widgets for data that doesnt correspond to a SF object field to be used with pageBlockSectionItem tags
        • <apex:inputCheckBox>, <apex:inputHidden>, <apex:inputSecret>, <apex:inputText>, <apex:inputTextarea>
      • limitations
        • no protection from malicious javascript
        • no escaping/unescaping the data correctly when displayed on a regular page layout
        • no built-in handling of the truncated display of long text fields
        • no special search indexing to ignore tags and focus on the plain text
        • no special handling of the field when used in filters, workflow rules, etc.
    • <apex:selectWidget>
      • series of additional tags to support the display of UI widgets in organized tables
        • <apex:selectCheckboxes>
        • <apex:selectList>
        • <apex:selectRadio>
    • <apex:inputFile>
      • allows users to upload files and turn them into attachments on records, documents  or apex blobs
    • <apex:commandButton> & <apex:commandLink>
      • used within a form tag.
  • output components
    • display info without allowing the user to change any data
    • have parallel form components
    • components
      • <apex:outputLabel> – creates a label for input or output widgets that do not automatically come with a label
      • <apex:outputField> – creates a read-only display of a label and value for a SF field, automatically formatted according to the field type
      • <apex:outputLink> – creates a link to URL
      • <apex:param> – used as achaild tag that provides a name/value pair parameter for its parent compoentn. It can be used with
        • outputLink: defines http query string parameters
        • outputText: defines text insertion parameters
        • actionFunction: defines javascript function parameters
      • <apex:outputPanel> – tag defines a set of content that is grouped together (often for ajax)
        • layout attribute: block, inline, none
          • block: Generates an HTML div tag (adds a paragraph)
          • inline: Generates an HTML span tag (default:doesn’t do any formatting)
      • <apex:outputText> – displays text which can be formatted using a stylesheet
      • <apex:pageBlockTable> – creates a table by iterating over a set of data using the SF stylesheet. good if data comes from sf object. used within pageBlock or pageBlockSection
      • <apex:dataList> – creates a list (a one-column table) by iterating over a set of data
      • [Note: dataList and dataTable are very similar and generally used when you don’t want the standard sf table style. DataLists are just one-column tables.
      • <apex:dataTable> – creates an HTML table which iterates over a set of data
      • <apex:column> – used within either pageBlockTable or dataTable set of tags. it creates the columns for a table
      • <apex:flash> used to embed flash widgets into a vf page
      • <apex:facet> used with a variety of other component tags to provide or override headers, footers, and captions to other items
5. Visual Force Components for Modularity
  • Custom components can stand alone or be accompanied by a custom controller (can be shared in appexchange)
  • <apex:component> – used to create our own custom reusable components
    • access then using <c:componentname>
  • <apex:attribute> – use it within component tag to define the custom attributes, can define the name, data type, and other aspects of the custom attribute
  • <apex:componentBody> – used within a component tag to pull the body of the component’s implementation into the component definition, often used for custom iteration component
  • Page Inclusions (mashups)
    • <iframe> to include another page as URL
    • <incldue> – to include another vf page
  • Template Tags
    • series of tags that are used to create vf template pages and define reusable components for baseline pages
    • tags
      • <apex:define>
      • <apex:insert>
      • <apex:compositions>
  • <messaging:emailTemplate>
    • facilitate communication outside of the application
    • used to create vf email templates
    • must be wrapped inside a single emailTemplate component
    • have advantages over  traditional email templates
    • can be edited using Email Templates (under admin)
  • Messaging tags
    • <messaging:emailHeader>
    • <messaging:htmlEmailBody>
    • <messaging:plainTextEmailBody>
    • <messaging:attachment>
  • With email templates, you can
    • repeat tag to iterate through all of the related records
    • generate pages inside of the template
    • specify a custom email header
    • create attachment using plain text, HTML or VF
  • Visualforce Performance Troubleshooting
    • reduce view state size using only one <apex:form> tag on a page
    • cache frequently accessed resources
    • reduce page size < 15 mb
    • increase the time interval for calling apex from visualforce page
      remove unnecessary fields to reduce the amount of data returned
6. Javascript in Visualforce
  • Action Binding and Javascript
    • currently only actions that are shared across al objects are exposed through standard controllers
    • but further standard sf actions are available by using javascript and the expression syntax with the !URLFOR and $Action keywords
  • Ajax tags
    • 5 tags
      • actionStatus – used to display start and stop statuses of ajax requests
      • actionSupport – used to call 2nd component when an event happens to the 1st component
      • actionPoller – similar to actionSupport, but the event is based on timer instead of a user action
      • actionFunction – provides support of invoking a controller action from javascript code using an Ajax request by defining new javascript function
      • actionRegion – used to demarcate which parts of the page the server should reprocess
  • use rerender attribute to do partial updates
  • simple to implement partial page update is
    • isolation the portion of the page by surrounding it with <apex:outputpanel> tags. be sure to give id attribute
    • create the command button or link that will trigger the partial refresh. add the rerender attribute and assign it the value of the id of the outputPanel created earlier
  • if event happening to same component that should action, use the built-in javascript event attributes
  • if event happening to a different component that will take the action, use the actionSupport tag to handle the event
  • With ajax toolkit
    • create an apex class and expose it as a web service
    • call the web service from a visual force page
      • optionally can attach a page to a button, make it inline, etc.
7. Further Topics in Visualforce
  • force.com sites allow to build public unauthenticated sites that can access data from sf apps
  • 4 main use cases
    • build and run new web applications
      • consumer reviews, hotel conceirge services, event registration sites
    • transform business apps into websites
      • recruiting portal
    • extend your salesforce crm apps
      • interactive web to lead forms
      • campaign landing pages
    • run your corporate web site on salesforce service
      • public websites, intranets
  • Salesforce Mobile
    • licensed client app that can be run on blackberry, iPhone, or windows mobile device
    • provides mobile access to data, email, tasks and calendar
    • includes features such as permissions, page layouts, related lists, dashboards, reports and list views
    • allows administrator to mobilize a limited set of standard objects and all custom objects
    • lite edition is free
  • guidelines to develop pages for mobile
    • evaluate if app interface needs to be redesigned for the use on mobile devices
    • keep the real estate open by not displaying the header or sidebar
    • avoid using lookup fields. For the best user experience, use apex to validate data entry
    • create reusable styles in a separate page and use the include component to add these styles
    • use a third party libary such as iUI that provides iPhone like interface
    • refrain from createing styles as a static resource
  • iPhone
    • set page width to 980 pixels
  • Blackberry
    • doesn’t support inline events
    • doesn’t have built-in navigation
    • viewstate for forms is too large for Blackberry
    • use standard html forms in mobile page instead of using form component
  • 3 methods to develop for multiple platforms
    • Separation and redirection
      • build pages separately and point the mobile tab to the bb page
      • top of the page, include the js to redirect the page, if the target is not a bb device
    • Lowest Common Denomiator
      • create pages that include minimal or javascript
      • use these pages on any supported device
    • Conditional Code
      • create pages that evaluate which device being used
      • offer appropriate markup for each device
  • Mobile Javascript Librar
    • some functions of mobile devices not applicable to desktop clients
      • developers can use js functions in vf pages for javascript enabled devices
        • mobileforce.device.sync()
        • mobileforce.device.close()
        • mobileforce.device.syncclose()
        • mobileforce.device.getLocation()
      • html links can be used to sync/close
  • Mobilizing Visualforce Pages
    • Create new mobile ready visualforce tab
    • add the vf tab to mobile configuration
    • test the page using a mobile client simulator
  • Chatter Data Model
    • FeedItem is the fundamental entity for the chatter data model
    • Feed tracking can be enabled for upto 20 fields per object



Questions:

1. In a custom application, you can include only a landing page.
A. True
B. False
2. Which of the following statements are true about custom objects? (select all that apply)
A. Salesforce provides a set of custom objects that you can use to store data
B. After you create a custom object, you need to add the user interface
C. Custom objects come with an infrastructure include reporting, auditing, and access control.
D. When you create a custom object, you get a direct access to the database.
E. Custom objects are reportable and searchable.
3. Which of the following statements is true about custom tabs?
A. A custom tab is a user interface component you create to display custom object data or other web content embedded in the application
B. There are two types of custom tabs
C. Custom object tabs display any external web-based application or web page in a user interface tab.
D. Web tabs display the data of your custom object in a user interface tab.
4. Identify the correct statements about dependent picklists. (Select all that apply)
A. Standard picklists can be controlling fields but not dependent fields.
B. The maximum number of values allowed in a controlling field is 400.
C. Before defining a dependency, you should ensure that your picklist has at least one value.
D. A custom multi-select picklist can be set as the controlling field for a dependent field.
E. If a field represents both a controlling field and a dependent field, it cannot contain more than 300 values.
5. When a customizing a page layout, you can change the filed locations, page setting customizations, and related list customizations.
A. True
B. False
6. Match the given relationships with their features.
A. Lookup relationship :  A junction object is used to connect the two objects
B. Many-to-many relationship :  Security, Relationship can be only one layer deep.
C. Master-detail relationship : Security, access and deletion of child records are independent of the parent.
7. Match the following features of the Enhanced Page Layout Editor with their descriptions
A. Quick Find : Switch to other layouts for the same object
B. Section : Can search for an element in palette.
C. Blank Spaces: Adds section anywhere above the related lists on the page layout.
D. Page Layout : Helps visually align and distinguish elements on the page.
8. Which of the following statements are true about a lookup relationship? (Select all that apply)
A. A maximum of 2 relationships is allowed per object
B. A lookup relationship can span to multiple layers.
C. A parent record is required for each child.
D. A lookup field is not a required field.
E. Access to parent determines access to children.
9. Custom formula fields are smart custom fields that can be used to build business-specific calculations using simple wizards and Excel-like formulas.
A. True
B. False
10. Which of these statements are true for cross-object formula fields? (Select all that apply)
A. You can reference cross-object formulas in roll-up summary fields.
B. You cannot reference merge fields for objects related to activities
C. You can use cross-object formula fields to reference record owner merge fields for any object.
D. The limit for cross-object formulas is 10 unique relationships per object across all formulas and rules
11. Which statements about roll-up summary formulas are correct? (Select all that apply)
A. They calculate values from a set of related records.
B. They are read/write formula fields
C. They can be created to display a value on a master record based on the values of records in a detail record.
D. They can be added for all lookup relationships.
12. If all error conditions are false, the corresponding error message is displayed and the save is aborted.
A. True
B. False
13. A change set can be used to deploy metadata only between __________ orgs
14. What happens if one component of a change set fails to deploy?
A. The entire change set fails to deploy.
B. The entire change set gets deployed.
C. Except the failed component, all other components of change sets get deployed.
D. The deployment time increases.
15. Change sets can be used to move data and metadata from one organization to another.
A. True
B. False

Answers

1. B
2. C, E
3. A
4. A,C,E
5. A
6.
A. Lookup relationship :  Security, access and deletion of child records are independent of the parent.
B. Many-to-many relationship :  A junction object is used to connect the two objects
C. Master-detail relationship : Relationship can be only one layer deep.
7.
A. Quick Find : Can search for an element in palette.
B. Section : Adds section anywhere above the related lists on the page layout.
C. Blank Spaces: Helps visually align and distinguish elements on the page.
D. Page Layout : Switch to other layouts for the same object
8. B, D
9. A
10.B,D
11. A,C
12. B
13. related
14. A
15. B





Salesforce.com certified Force.com Developer Certification: Knowledge Check Questions-Part-II
This blog post is all about the knowledge check questions from the premier training catalog. The following list is the links to the knowledge check questions.
Questions:
1. All users who access the same report at the same time will see the same data.
A. True
B. False
2. Access to a report is determined by the folder in which a report is stored.
A. True
B. False
3. What is the purpose of a summary report?
A. Provides a simple listing of your data
B. Provides a listing of data with sorting and subtotaling
C. Helps compare related totals by summarizing data in a grid
D. Allows application of custom filters to show limited data.
4. Which of the following tasks can an Admin User perform? (Select all that apply.)
A. Run a report on Monday, and then schedule the same report to run every Monday for the next four weeks.
B. Schedule reports to run in the time zone of the report recipient.
C. Email a report in a Public folder to Salesforce users in different time zones.
D. Schedule a report to run only once, a week from today.
5. Saving a custom report will save a snapshot of that data at that moment in time
A. True
B. False
6. You can use filter options with “AND” or “OR” relationships.

A. True
B. False
7. Which of the following statements about reports is accurate? (Select all that apply.)
A. Reports show only the data and fields that are visible to the user running the report.
B. New objects and fields are immediately available for reporting.
C. Running a saved report shows the data in real-time based on the saved parameters.
D. Reports can include standard objects and/or custom objects.
8. To email a report to other users, the report must be in public folder.
A. True
B. False
9. To export the data to Excel but still keep the report formatting, click Export Details.

A. True
B. False
10. You can select the columns you want to appear on your report, and their order as well.

A. True
B. False
11. To list your data including sorting and subtotaling of the data, select a Tabular Report

A. True
B. False
12. What is the first step when creating a custom report?

A. Choose the fields by which to group and subtotal the data.
B. Select the objects to include in the report.
C. Select the columns to include and order them
D. Select the type of report
13. Match each component type on the left with the appropriate requirements on the right?

A. Chart : Show the average time for a Temp Contract.
B. Table: Show recruiting statistics from an external system.
C. Gauge: Compare the number of temporary positions across departments.
D. Metric: Show the top five teams by number of open positions
E. Visualforce Page: Show progress towards filing 100% of open positions
14. Match each item on the left with the way it manages security on the right?

A. Dashboard Folder: Determines what data is displayed on the dashboard
B. Running User: Control who sees a dashboard
15. If you have access to a dashboard component, then you can see its underlying report.

A. True
B. False
16. You can schedule a dashboard refresh every other Wednesday.

A. True
B. False
17. If you check the option to email the dashboard ‘To me’, what will be emailed to you?

A. A notification of the refresh schedule that you set up
B. A notification when the dashboard has refreshed
C. The report used as a source for the dashboard
D. The refreshed dashboard components
18. A dashboard can have up to how many compoents? __________

19. Which of these are types of dashboard components? (Select all that apply.)

A. Visualforce page
B. Graph
C. Metric
D. Table
E. Gauge
F. Chart
20. What does a running user determine?

A. The data displayed on a dashboard
B. The users who can see a dashboard
C. The frequency of dashboard auto refresh
D. The users who receive email notification of dashboard refreshes
21. Once you create a dashboard, the first component is added by default.

A. True
B. False
22. Which of the following dashboard layout styles are available? (Select all that apply.)

A. One Column
B. Two Columns
C. Three Columns
D. Four Columns
23. You can specify the column under which to add a new component.

A. True
B. False
24. Components can be moved around after they are created.

A. True
B. False
25. Which report types are NOT created automatically? (Select all that apply.)

A. Positions with Offers
B. Candidates with Reviews
C. Position
D. Candidates with Interviewers
26. Report Types define the objects that are included on a report.

A. True
B. False
27. Which statements about report types are true? (Select all that apply.)

A. Standard report types are predefined.
B. Reports based off a standard report type cannot be customized
C. A standard report type is created upon creation of a custom object.
D. A standard report type is similar to an outer join.
28. To incorporate fields from other objects in a CRT, you can include the object relationship or include fields related via lookup.

A. True
B. False
29. “With or Without” reports shows all “A” records that have a related “B” record.

A. True
B. False
30. How many objects can you choose when defining which related records from different objects are returned in the report results?

A. 4
B. 6
C. 8
D. 10
31. System Administrators and users with the “Manage Custom Report Types” permission can create CRTs.

A. True
B. False
32. CRTs allow you to remove fields from the report builder and choose which fields should be selected by default.

A. True
B. False
Answers:
1. B
2. A
3. B
4. A,C,D
5. B
6. A
7. A,B,C,D
8. A
9. B
10. A
11. B
12. B
13.
A. Chart : Compare the number of temporary positions across departments.
B. Table: Show the top five teams by number of open positions
C. Gauge: Show progress towards filing 100% of open positions
D. Metric: Show the average time for a Temp Contract.
E. Visualforce Page: Show recruiting statistics from an external system.
14.
A. Dashboard Folder: Control who sees a dashboard
B. Running User: Determines what data is displayed on the dashboard
15. B
16. B
17. D
18. 20
19. A,C,D,E,F
20. A
21. B
22. B,D
23. A
24. A
25. A,B,D
26. A
27. A,C
28. A
29. B.
30. A
31. A
32. A



Salesforce.com certified Force.com Developer Certification: Knowledge Check Questions-Part-III
This blog post is all about the knowledge check questions from the premier training catalog. The following list is the links to the knowledge check questions.
1. Once you create a report that utilizes a field for counting, you can use that field in additional calculations.

A. True
B. False
2. When creating a formula field to allow you to count unique records in a report, what formula should you use?

A. 1
B. X + 1
C. X.1
D. 2
3. Once you create a new formula field to group information, what else do you need to do to show the grouping on a dashboard? (Select all that apply).

A. Create a formula for each of the groups.
B. Run a report using the grouping formula field
C. Create/update a dashboard component using the updated report.
D. Create a dashboard component for the non-grouped information.
4. You need to create a new formula field when you want to do which of the following? (Select all that apply).

A. Group scores into categories
B. Create a custom report
C. Count the number of records
D. Schedule to run a report at a later date.
5. You want to count the number of interviews conducted for each position. Once you create a formula field to count the number of interviews, what is your next step?

A. Run a report using the new field
B. Create a “Number of Interviews” component on the dashboard.
C. Create a report to group interviews by positions
D. Calculate the ratio between positions and interviews
6. A formula field can be used to “bucket” or group together similar values to make a report or dashboard easier to read
A. True
B. False
7. Analytic snapshots map the fields on the source report to fields on a custom object

A. True
B. False
8. Analytic snapshots always run weekly

A. True
B. False
9. Analytic snapshots allow you to view historical data and analyze trends.

A. True
B. False
10. Setting up the analytic snapshot includes which of these steps? (Select all that apply)

A. Selecting the source report
B. Selecting the target object
C. Mapping the fields on the report to the target object
D. Running the report to analyze historical data
E. Scheduling the frequency for taking the snapshot
11. Analytic snapshots can be scheduled daily, weekly, or monthly

A. True
B. False
12. You are running a report that utilizes data captured in an Analytic Snapshot to analyze historical trends. What should you include in the report?

A. The source report
B. The target object
C. Both the source report and the target object.

13. The more time exists between the Start and End Dates, the more snapshots will be listed in the report.

A. True
B. False

14.  How do analytic snapshots facilitate analyzing trends?

A. They automatically run reports at regular intervals so users can compare the reports side by side
B. They allow users to capture the highest and lowest points of data on a given time so that users can analyze the range of performance
C. They automatically store data at regular intervals so that users can report on and analyze that data later.
D. They provide a comprehensive analysis of past performance compared to current performance.
15. To set up the analytic snapshot, you must map ______

A. Fields on the resource report to the snapshots
B. Fields on the source report to the custom object
C. Fields on the custom object to fields on the source report
D. Fields on the custom object to the scheduled snapshots
16. Which path would you follow to create a custom object as the target object for an analytic snapshot?

A. Your Name  | Setup | Customize | Objects
B. Your Name | Setup | Create | Objects
C. Your Name | Setup | Data Management | Analytic Snapshots
D. Your Name | Setup | Data Management | Objects
17. In which of these reporting scenarios would you need a partner’s help?

A. You want to show who are the employees who interviewed each candidate
B. You want to Create a report that lists all contacts that have no cases associated with them.
C. You want to use different colors to highlight certain text values on a report.
D. You want the names of highly qualified candidates to feed into a job offer form, which you’ll mail to these candidates
E. You want to create a Candidate Competency report that will tell how qualified are the candidates that you teams are interviewing.
18. Some challenges are best solved using a RaaS application; others are best solved using a BIaaS application; and yet others – using a Data Warehousing application

A. True
B. False
19. To find partner applications that extend reporting capabilities, go to


Answers:
1. A
2. A
3. B,C
4. A,C
5. A
6. A
7. A
8. B
9. A
10. A,B,C,E
11. A
12. B
13. A
14. C
15. B
16. B
17. B,C,D
18. A
19. B












Salesforce.com certified Force.com Developer Certification: Knowledge Check Questions-Part-IV
This blog post is all about the knowledge check questions from the premier training catalog. The following list is the links to the knowledge check questions.
Questions:
1. The Created Date can be updated for a record via the API as long as the Inserting System Fields feature is turned on.
A. True
B. False
2. What are the ways in which you can obtain a record’s ID? (Select all that apply.)

A. URL
B. Reports
C. API
D. On each record
E. Import Wizard
3. What is the advantage of performing upserts while migrating data?

A. Data migration to the Salesforce application is faster
B. It gives an error if there is a missing data record
C. It can use the Salesforce ID or an external ID to prevent data duplication and create missing records.
D. It duplicates a record using the external ID in Salesforce
4. The upsert function allows developers to use relationships defined in legacy systems which importing data into Force.com

A. True
B. False
5. Developers need to know the record ID’s in Salesforce to use upsert with relationships.

A. True
B. False
6. For which of the following activities can developers use import wizards?

A. Load up to 50,000 records
B. Load any object supported by the API
C. Schedule regular data loads such as nightly feeds
D. Mass delete supported objects
7. The objects that developers want to load and the operation they want to perform are key factors in determining the right data management tool.

A. True
B. False
8. The Data Loader supports importing of data from CSV and exporting data to CSV.

A. True
B. False
9. The ________ operation uses a SOQL string to export a set of records from Salesforce.

A. Extract
B. Insert
C. Upsert
D. Update
10. To transfer a record that a user does now own, the user needs to have the required user permissions and read sharing access on the record.

A. True
B. False

11. The mass transfer tool can be used to transfer only accounts and custom objects from one user to another.

A. True
B. False

12. Which are the permissions that allow a system administrator to manage an application? (Select all that apply.)

A. View All Data
B. Read
C. Create
D. Modify All Data
E. Edit All Data
13. System Administrators can customize the permissions of both standard and custom profiles
A. True
B. False
14.  Identify all true statements

A. If you remove access to an app from a profile, the users in that profile will still be able to see the tabs in that application.
B. If you hide a tab from a profile, the users in that profile will not be able to see records for that object.
C. If you have two record types for an object, you need to have two page layouts for that object.
D. If a user does not have access to a specific record type, they will still be able to see the records with the record type.
15. A field hidden by field-level security is still visible through the API.

A. True
B. False
16. What will you use to limit the picklist options?

A. Page Layouts
B. Record Types
C. Field-Level Security
D. Profiles

Answers:
1. B
2. A,B,C
3. C
4. A
5. B
6. A
7. A
8. A
9. A
10. A
11. B
12. A,D
13. B
14.
15. B
16. C.