Recently Passed Salesforce.com Certified Force.com Developer Exam. Here are some Exam Preparation Notes & Tips for Salesforce.com Developer Certification.
These are just Exam Preparation Notes and a pointer to few of the important topics. If you are preparing for Salesforce.com Certified Force.com Developer Examination you must refer to following:
- Latest Developer Certification Study Guide at certification.salesforce.com/Developers
- Online Developer Training Material from Salesforce.com- Take the following online Online courses
- Application Essentials
- Analytics as a Service
- Data Management
- Designing Apps for Multiple Users
- Implementing Business Process
- Visualforce Pages
Force.com Applications
Building Data Model
- Fields
- Standard Fields
- Created when object are generated
- ID
- Name – Text OR Auto Number
- Owner
- Other – Created by, Modified By, Created date, last Modified date
- Data Types
- Numeric
- Number
- Currency
- Percent
- Numeric
- Calendar
- Date
- Date Time
- Limited Option
- Check Box
- Pick list
- Multi-select Pick List
- Formatted Text
- Phone
- URL
- Text
- Text
- Text Area (255)
- Long Text Area (32768)
- Rich Text Area (Formatted Text, Links, Images)
- Encrypted
- Calculation
- Auto Number
- Formula
- Roll Up Summary
- Custom Field Properties
- Name (__c)
- Label
- Universally Required
- Unique
- External ID – Custom Index added, Improves SOQL & Report Performance, Can have 3 External ID fields per object
- Default Value
- Help Text
- Field Dependencies
- Standard Pick list can be controlling not dependent
- Max values in controlling is 300 (so also if a field is both controlling and dependent)
- Before defining at least 1 value is required
- Custom multi select pick list cannot be controlling field
- Encrypted fields
- Provisioned feature
- View encrypted data permission
- Can edit even if not having View encrypted data permission
- Cannot be unique, external id or have default value
- Created when object are generated
- Object relationships
- Lookup
- Child detail optional
- Each object can have as many as 25
- Creates a related list on the parent object
- Master Detail
- Required child
- Delete parent – child deleted
- Master in one cannot be detail in another – not possible to create multiple level
- Can create between two custom or one custom and one standard (standard always master)
- Cannot create master detail to users or leads
- Detail side objects cannot have sharing rules, manual sharing or queues (no owner fields)
- Maximum 2 relationships per object
- Can perform cross object fields updates and roll up summary fields
- Can span multiple levels depending on Master object is standard or custom??
10. Special Relationships
- Self relationships
- Lookup to self object
- Hierarchy
- May to many
- Two many to one relationships with same object on detail side
- Junction (Intersection object) object
- Deleted when one of the master is deleted (Kept in trash). If both master deleted it is deleted permanently.
11. Lookup Filter
- Limit search results
- Compare fields to other fields and standard value
- Can be required or optional
Building User Interface
- Custom Application
- Logo and Landing Tab
- Custom tab
- Custom Object tab
- Web Tab
- VF Tab
Business Logic
- Formula fields
- Cross object formula
- Cannot reference cross object formula in roll up summary fields
- Cannot reference merge fields for objects related to activities
- Cannot reference record owner merge fields
- Limit for cross object formula fields is 10 unique relationships per object across all formulas and rules
- Roll up summary fields
- Sum, Minimum, Maximum, Record Count
- Can create for all custom MD
- Some standard relationships also including Account Oppty and Oppty Product
Migrating configuration changes
- Configuration stored as meta data
- Tools to move meta data
- Change sets
- Force.com ide
- Migration Tool
- Tools to move meta data
- Change sets
- Point and click web interface to move metadata only between “related” orgs
- Requirements
- Apex code 75% code coverage unit testing
- Incompatibilities between versions – not migrated (can upload compatible part)
- Manually migrate changes that cannot be included
- Renaming or deleting cannot be specified
- Need change set profile permission
- Deployed entirely or not at all (if one component fails all fails)
- Cannot modify once uploaded by can be cloned
Analytics as a Service
Reports
- Custom Reports Basics
- Reports do not save data only the report logic
- Data – Displayed based on access levels
- Reports are real time
- Reports access determined by folder
- Report Builder
- Panes: Field, Filter and preview Panes
- Formats
- Tabular
- Summary – Sorting, sub Total
- Matrix – Grid, Compare related totals
- Scheduled reports run in the time zone of the user scheduling report
- To email a report it must be in public folder
Dashboards
- Dashboard Component – based on report or chart
- Based on data when dashboard was run
- Dashboard components (20 max)
- Chart
- Table – 4 columns, summary fields
- Gauge
- Metric – Single no
- VF page
- Chart Types
- Verticle column
- Horizontal Bar
- Line
- Donut
- Funnel
- Pie
- Scatter
- Access
- Folder & Running user
- Each dashboard can have 3 filters
- Date/time, currency, picklist, lookup and text
- Fields that are common to all components
- Can not be added where you have VF components, used with bucket fields
- Dashboard Filter – based on 1 field (10 options)
Custom report Types (CRT)
- Standard & Custom report Types
- Standard – Created when an object is created or relationship is created
- CRT
- Creating CRT
- Define Primary Object
- Optional – Define report record set (related records / up to 4 objects) – with or without
- Optional – Add fields
- With (only when there is child) & With or Without (irrespective of child record)
Analytic Snapshots
- Steps
- Create report
- Create object
- Create snapshot
Data Management
Data Management Overview
- Uses Web Services API to access application
- Data Management operations
- Export
- Insert
- Update
- Upsert
- Delete
- Record Id
- Two Format 15 Digit Case Sensitive and 18 Digit Case Insensitive (first three char – object)
i. Reports 15 Digits
ii. API 18 Digits
iii. For Updates APIs expect 18 Digit
iv. Can convert 15 to 18
- Ways to access record ID – URL, Reports, API, Formula Fields
- Help establish Object Relationships
- Data Loaded in sequence depending on dependencies
- “Inserting System Fields” like created date – can be set when importing if this feature is enabled (only during initial import of data). Cannot be updated.
- Inserting System Fields is only for
i. Account
ii. Oppty
iii. Case
iv. Lead
v. Task
vi. Event
vii. All custom objects
- Available only through API and backward compatible with SOAP based APIs
External Ids
- UPSERT – An API function that provides INSERT & UPDATE in single call
- External id
- Each object can have 3
- Help improve report and SOQL performance
- Upsert and External Ids are used for migration and data integration
- Can help auditioning the flow of information
- When UPDERTING If the extern ID matches with no record a new record is created, if it matches with 1 record – it is updated and if multiple records then error is thrown
Data Management Tools
- Import Wizards
- 50000 records
- Accounts, Contacts, Leads, Solutions, Custom Objects
- Prevent Duplication (Using Account Name & Site OR Account ID, Contact Name, Contact Email OR Contact ID, Custom Object Name OR ID)
- API Based Tools
- Data Loader
- Can load more than 50000 records
- Schedule data loads – every night
- Export for backup
- Delete multiple objects
- Data Loader
- Supports CSV files & External Database through JDBC
- Can run from command line
- SOQL – Salesforce Object Query Language
- Data Loader Operation
i. Extract – uses SOQL
ii. Insert –
iii. Update – Matches records based on SF ID
iv. Upsert – Matches records based on SF ID OR External ID
v. Delete – Matches records based on SF ID
- Can be used only for DE, EE or UE
- Selecting Data Management Tool
- Dedup data – Import Wizard
- Schedule Data Load – Data Loader
- Load two related objects at once – Import Wizard
- Load < 50000 records – Import Wizard
- Export Data for backup – Data Loader
- Load data for object not supported by wizard – data Loader
- Upsert or Upsert with relationships – Data loader
Managing Data
- Running Data Loader from Command Line
- java – jar DataLoader.jar
- com.salesforce.dataloader.process.PricessRunner with DataLoader.jar in classpath
- Options
i. –Dsalesforc.config.dir=CONFIG_DIRECTORY.
- Data loader runs operation file or map in the configuration file
- If no directory is speceified takes the current directory
- Default directory
i. C:\Program Files\Salesforce.com\Data Loader Version\config
- Batch process configuration file – process-conf.xml is at samples\conf directory
- If you use process-conf.xml setting process.name to the name of process specifies process to run otherwise config.properties is used for parameter settings
- Data Loader Encryption
- Encryption Utility – Run\Bin\encrypt.bat
- Command Line Prompts
i. Generate a key
ii. Encrypt text
iii. Verify Encrypted Text
- Mass Transfer Records
- To Transfer users need required user permission and read sharing access to record
- Can be used to transfer Accounts, Leads and Custom Objects
Designing Applications for Multiple Users
Design Considerations
- Design Considerations
- Users – What they see and what they do
- Data Access path – Data that can be accessed by whom and restrictions
- Analyzing Business requirements
- Identify Actors and Data
- Identify How much each actor will see
- Specify access levels
Managing User Experience
- Licenses
- User License
i. Salesforce – Full access to standard CRM, Force.com Appexchange apps
ii. Salesforce.com Platform – Only custom apps, Force.com Appexchange apps
- Feature License
i. Marketing
ii. Offline
- Profiles
- Define user’s permission to perform different functions
- Profiles are associated with license type
- Work in conjunction with role hierarchy and sharing model
- Profiles control permissions, access to data and user interface
i. Permissions – Admin & General, Standard Object & Custom Object
ii. Access to data – Field Level security
iii. User Interface – Page Layout, Apps, Tabs, Record Types
- Admin Permissions – View All data, Modify All data, Customize Application, API Only User (can not login to sfc.com, Password never expires)
- Standard (can not be created, deleted or customized) & Custom profiles (to modify the standard profiles – can be deleted or customized)
- Profile Permissions
- Permission Set
- Group of permissions in addition to their profile
- A user can have 1 profile and multiple permission sets
- 1 org can have up to 1000 permission sets
- Can only be used to give permission but not to deny
- Profiles v/s Permission sets
- Permissions sets – Applications, objects, tabs, fields, apex classes, service provider and VF pages
- Profiles – App Picker, Tab defaults, record Type, page Layout, Login hours, Desktop client access, category group access
- Field Level Security
- User Interface & profiles
- Record Type – View different details on page
- Page Layouts
Controlling Record Access
- Considerations
- Ownership of records can be transferred to any user who has at least ‘read’ permission on object
- Child records in MD relationships inherit the properties of parent
- Users or Queue can be owners
- Levels of Record access
- Read only
- Read Write
i. OWD
ii. Role hierarchy
iii. Sharing rules
iv. Manual sharing
v. Apex sharing
vi. “view all data”
- Full Access
i. Record Owner
ii. Above in Role Hierarchy
iii. “Modify all data”
- OWD
- Baseline level of access to data that we do not own
- Restrict access to data
- Three levels
i. Public Read Write
ii. Public Read Only
iii. Private
- Roles & Hierarchy
- Record access through Role hierarchy
- Rolls up for all standard objects if the person above has access to object by profile
- Custom objects can be defined whether access can be granted or not (Use Grant Access using hierarchy in OWD)
- Public groups
- Default Public Group – All Internal users
- Made up of combination of
i. Users
ii. Roles
iii. Roles & Sub
iv. Other Public groups
- Use public groups to
i. Reduce no of sharing rules
ii. Folder access
- Sharing rules
- Manual sharing
- Apex sharing Reason
i. Developers define why a user has access to record
ii. Sharing reason does not creates sharing rule
iii. Deleting a reason may sharing rule that uses that reason
iv. Requires ‘Modify all data’
v. Used programmatically and not through app
vi. Sharing button will display reason
- Access to Record Review is in following order
- Permissions (like View all data)
- Record Ownership
- OWD
- Role hierarchy
- Sharing (rules or manual sharing)
Designing Data Access Security
Implementing business processes
Automating Business Processes with workflow
- Workflow rule – automate business process
- Process
i. Select object
ii. Specify criteria
- Only when Record is created
- Record is created or Updated and first meets criteria
- Every single time created or updates
iii. Rule criteria
- Workflow actions
i. Immediate
ii. Time dependent
- Cannot be set for every time record is created or updated
- Can monitor in Time dependent workflow q (can remove actions)
- If a record has action pending in TDWQ and record no longer meets criteria or timing changes – the action will be updated.
- If no longer meets – action is removed
iii. Action types
- Update field
- Send outbound message
- Assign a task
Auditing processes
- Setup audit trail – track changes made to the setup
- Date, name of user and change
- 20 changes on screen and 180 days changes by download
- Field History Tracking
- History Related list
- Tracked for Accounts, Cases, Contacts, Contracts, Leads, opportunities, Solutions and Custom Objects
- Old value, new value, date time and user
- Long text area and multi-select pick lists are not tracked
- 20 fields per object
- Auditing tools
- Debug logs – Activities performed by end user or code
- Setup audit trail – config changes by admin
- Field history – data value changes
Approval processes
- Steps
- Process definition – which records enter process, settings for whole process
- Initial submission action – locking, assigning task, email, update field, ob message
- Step definition – which records enter step (all or some), multiple step
i. Decision criteria
ii. Assignment
- Final rejection action – unlock, task, email, update fields, ob message
- Final approval action – unlock, task, email, update fields, ob message
- Recall action – unlock, task, email, update fields, ob message
- Process visualise
- Read only visual
- Workflow v/s Approval
- Wf triggerd when record is saved – approval manual
- One set of criteria and actions – have multiple steps, entry and step criteria and step actions + more actions
- Can be modified or deleted – some attributes can not be modified without deactivation.
- Skipping steps
- Criteria to Skip Step in an approval process
- Can be a filter criteria or formula
- Options
i. Go to next step (only if there is next step and if next step is deleted SF will automatically change to reject record)
ii. Approve
iii. Reject
- Selecting Go to next step in the first step and record does not meets criteria – record is rejected
- Parallel approval process
- Can send approval to multiple users
- Up to 25 users
- Unanimous / based on 1st response
- Outbound messages
- Designate end point
- Secure configurable API message in xml format
- Dynamic approval process
- Route records based on approval matrices
- Approval request to users listed in record
- Creating
i. Create lookup fields on object approved
ii. Custom object as approving matrix
iii. Populate approval matrix
iv. Create apex code to fill lookup fields from approval matrix
v. Approval process to utilize lookup fields
- Order of automated process
- Validation rule
- Assignment rule
- Auto response rule
- Workflow rule
- Escalation rule
- Visual workflow (flows)
- Required Manage Force.com Flow
- Cloud Flow Designer
Preserving Data Quality
- Validation Rules – data meets the standards (formula or expressions)
- Run on server
- UI, API, Import wizard
- You write – Error condition formula and Error Message
- Conditionally required fields
- Data Quality
- REGEX – compares text field to Regular expression (pattern used to describe a set of strings according to syntax rules)
- Data consistency
- VLOOKUP – validation rule stored in another object
- Prevent data loss
- Use in conjunction with Rollup summary field
- Parent – sums no of child objects
Visualforce Pages
Visualforce Introduction
- Two types of UIs
- Page Builder
- Visualforce
i. Full control over UI
- In line editor – available on “Development mode”
- Automated completion, syntax highlighting, documentation
- Create a page – /apex/pagename
- Visualforce Pages – defined using mark-up language
- Can include
i. Visualforce tags
ii. Force.com expressions
iii. HTML / CSS
iv. Javascript
v. Flash
- Can Ajax Toolkit to access web services API to connect to SF data
- Limited to 15 MB
- Visualforce component tags – generated HTML tags behind the scene to create the page
- Benefits
- Understand SF metadata
- Coupled with Force.com – same performace
- Auto upgrade
- Separate view from navigation control and data model
- Confirms to MVC
- MVC
- Model (data Structure)
- View (data display)
- Controller (rules)
- Elements of VF
- Pages
- Components – referenced components for reuse
i. Standard (prebuilt constructs) or Custom
ii. Referenced using a Tag Library Model
iii. Dynamic Visualforce Components (Designed in Apex – Render pages based on variety of states)
- Controllers
i. Standard (new, edit, save)
- <apex:page standardContoller=”Contact”>
ii. Custom
- Custom controller – implemented in Apex
- <apex:page Contoller=’XX’>
iii. Controller Extensions – OOB functionality while creating custom actions and data references
- <apex:page Contoller=’XX’ extentions=MyClass,MyOtherClass”>
iv. Logic and data references
v. A VF page reference one main controller
vi. VF uses Expressions syntax to bind data to controllers
- All data in {!…} is evaluated as expression
- Versioning
- Previous versions are available
10. Namespaces
- Standard Tag – <apex:page>
- Csutom Tag – <c:customtag>
- Register Custom namespace – <thirdpartynamespace:customtag>
11. Ways to add VF pages to Salesforce UI
- Link to URL
- Override standard buttons
- Overriding Tab overview pages
- Custom Tab
- Embedding on Page Layout
- Adding to dashboard
- Custom help to custom object
Visualforce tags
- Tags
- Tags
- Text directly on page
- HTML tags and Comments <!—Comment –>
- Can use Javascript but not Javascript comments
- Hierarchial tags – well formed – means start and end tag or self contained tag
- Visualforce component tags – similar to JSP tags
- Tag Binding
- Three types of Tag bindings
i. Data – Use Expression Syntax to pull data made available by page controller
- API naming syntax
- __C
- Custom objects referenced through relationships – dot notation and __r
- Expression Syntax
- Dynamic Object Data {!..}
- Global Data – {{$..}
- Local variables can be created
ii. Action – Use Expression Syntax to call action methods for functions coded in page controller
iii. Component – does not use expression syntax and uses component attribute vales to reference other component Ids
Basic Page Components
- Attributes and values
- Values Types
i. Integer
ii. String
iii. Object {!Account}
iv. Action Method – {!Save}, {!Edit}, {!Delete}
v. Boolean – true, false
vi. Iteration
- Layout Components
i. <apex:page> – single VF page
- standardController or controller
- title (String)
- tabStyle (String)
- action (Action Method)
- renderAs (string)
ii. apex:variable
- value (Object)
- var (string)
- Static Resources – Type of salesforce storage, like archive, images, CSS
i. Referenced in code using $Variable
ii. Limit 5MB file overall 250 MB
iii. Faster upload – caching
iv. Usage
- <apex:flash>
- <apex:image>
- <apex:stylesheet>
- <apex:stylesheet>
i. Stylesheers located in /sCSS/ directory with dStandard.css and allCustom.css
- Pageblock tags
i. <apex:pageBlock>
- Mode (string) – detail / edit
- Title(string)
- tabStyle(string)
- facet tags
ii. <apex:pageBlockButtons>
- location
iii. <apex:pageBlockSection> – section with columns
- Collapsible (Boolean)
- Columns (integer)
iv. <apex:pageBlockSectionItem>
v. <apex:SectionHeader>
- Title
- Subtitle
- Help
- Other UI Tags
i. <apex:toolbar>
ii. <apex:toolbarGroup>
iii. <apex:tabPanel>
iv. <apex:tab>
v. <apex:panelBar>
vi. <apex:panelGrid>
- Template Tags
i. <apex:composition template:MyTemplate>
- Coarse Metadata Components
- Apex:detail
i. Subject
ii. relatedList
iii. relatedListHover
- apex:relatedList
i. List
ii. Subject
iii. pageSize
- apex:ListView
i. type
- apex:enhancedList
i. customizable
ii. type
iii. rowsPerPage
iv. width
- apex:repeat
i. value
ii. rows (integer) (0 all rows)
- Chater
i. showChatter on apex:detail
ii. <chatter:feed>
iii. Chatter:follower
iv. Chatter:follow
v. Chatter:feedwith follow
- Massage tags
i. Apex:message
ii. Apex:pageMessage
Visualforce Form & Output Components
- Form – enter data
- a. Apex:form
i. Accept
ii. Title
iii. Target
- b. Apex:inputfield
- c. Apex:inputwidget
i. Widgets that do not correspond to data in SF (have limitations)
- Inputcheckbox
- inputHidden
- inputsecret
- inputtext
- inputtextarea
ii. use when you want to vary size of data, tab sequence, required inputs, bind to custom controllers and standard javascript events
- selectWidgets (display of UI widgets in organized tables)
i. selectcheckboxes
ii. selectList
iii. selectRadio
- apex:inputfile (attachments, documents, blobs)
i. accept
ii. contentType
iii. filename
- apex:commandButton & apex:commandLink (used within form tags)
i. action
ii. value
- Output (display without allowing change in data and most have parallel form components)
- Apex:Outputlabel
i. Vales
ii. For
iii. Tabindex
- Apex:outputField
i. Value
- Apex:outputField
i. Value
ii. Title
iii. coords
- Apex:outputLink
- Apex:OutputPanel
i. Set of content grouped together (eg for partial page refreshes using ajax
- Apex:outputText
- g. Apex:pageBlockTable
- h. Apex:dataTable
- i. apex:dataList
- apex:column/
- k. apex:flash
i. src
ii. height
iii. width
iv. flashVars
- apex:facet
i. to override headers, footers and captions
Visualforce components for modularity
- Custom Components
- Can be standalone or accompanied by custom controller
- b. Apex:component
- Access using <c:component>
i. Controller or extentions
ii. Access (global (outside namespace) or public)
- Apex:attribute
- Apex:componentBody
- Page inclusion components
- <iframe>
- <include> – include VF page in iframe
- Template Tags
- Reusable components for pages – apex reference page and target VF page
- Three tags
i. <apex:define> – include dynamic content to be inserted
ii. <apex:insert> – insert named area defined by define tag
iii. <apex:composition> – container that references name on the target page
- Performance considerations
- One <apex:form> on one page
- Cache resources
- Page size < 15MB
- Increase time interval to call apex from VF page to reduce delays caused by concurrent requests
- Remove unnecessary fields esp the one that have MD relationship with other objects or are large text
Javascript in VF pages
- Action Binding & java Scripts
- Only actions that are shared across all objects are exposed through standard controllers
- For others – Standard SF controllers are using javascript and expression syntax with !URLFOR and $Action
- Javascript functions
- Can be included in header <script> or in a .js file
- b. Can be called any time after declatred
- Efficient way
- Ajax
- Used for partial page referesh
- Has been used to access Web services API within Javascript
- Due to data binding capabilities of VF the need of ajax for API is not required
- Ajax Tags
- actionStatus – start stop status of ajax request
- actionSupport – call second component when event happens to first component
- actionPoller – similar to actionSupport but event is based on timer
- actionFunction – support for invoking controller action from javascript code
- actionRegion – demarcate the part of page to process
- partial Page update
- reRender attribute
i. use along with <apex:outputPanel>
- Ajax
i. Status update using actionStatus
ii. StartText and StopText to display text ate the start and end of update
iii. Display text or graphics after referesh <apex:facet name=”stop”>
- Ajax & Apex web service
- Create an apex class and expose it as a web service
- Call web service from a VF page
Advanced VF topics
- Force.com Sites
- Unauthenticated sites
- Use cases
i. Web applications – Event registration / reviews
ii. Business supplications – Recruiting Portal
iii. Extend CRM – Web to lead forms / Landing Pages
iv. Corporate site – website / intranet
- Mobile devices
- Salesforce mobile – BB, iPhone, Widows
- iPhone better Javascript support than BB
- Create pages for mobile devices – separation & redirection, lowest common denominator, conditional code
- Messaging:emailTemplate
- emailHeader
- htmlEmailBody
- plainTextEmailBody
- attachment
- Chatter Date Model
- Core object – FeedItem
- Chatter Tags
- showChatter
- <chatter:feed>
Leave a Reply