Today, I attended a webinar about extending CRM featuring @MitchMilam hosted by CRMUG. Mitch discussed the extension options, their features and limitations as well as some examples with possible solutions. I wanted to review the main takeaways here.
Always remember there is not one correct answer but many different options. Depending on your situation and requirements, one of the options may be more correct than another.
There are 3 main questions to ask when looking at a project: immediacy, available resources, and Budget.
Immediacy: Does the user need to see what’s happening (JavaScript)? Can it be done on the Save (Plugin, Workflow)? Think about Asynchronous operations versus Synchronous operations.
Available Resources: Do you have someone who can do what you need? Can you hire a programmer?
Budget: Not just money budget (hiring developer, consultant, purchasing a tool) but also time budget. Do you have time to hire someone new or learn a new skill?
I compiled some notes on the tools along with my knowledge of the matter.
Feature
|
Type
|
Skill Set
|
Pros
|
Cons
|
Notes
|
Bulk Import
|
Built-in
|
Customizer
|
Allows you to quickly create records from a file
|
Limited duplicate checking against only one entity, cannot create additional records
|
Consider instead writing a custom App that can do exactly what you need
|
Bulk Edit
|
Built-in
|
Power User
|
Quickly update a set of records
|
Same edit to all, no logic
|
|
Advanced Find
|
Built-in
|
Power User
|
Find specific groups of records for other operations (Marketing Lists, etc.)
|
This came up in the context of deleting E-mail Attachments – you can find E-mails with Attachments by using Advanced Find but you can only delete the whole message not just the Attachment.
|
|
Workflows
|
Built-in
|
Customizer
|
Quick, no developer necessary, can create/update records, send e-mails, etc.
|
Limited processing options but can be extended with Custom Workflow Activities, all run asynchronously
|
|
Dialogs
|
Built-in
|
Customizer
|
Allows for user interaction
|
Requires user interaction, cannot be run on multiple records, runs as the user
|
Note: if a Dialog calls a child workflow it runs with similar access to an on-demand workflow, as the user.
|
Field Level Security
|
Built-in
|
Customizer
|
Can allow user to see/update the data only if they are included on the FLS Profile
|
Based on User/Team membership not security roles
|
See more information in my earlier post
|
Role Based Forms
|
Built-in
|
Customizer
|
Can hide data from the form but expose to other users, based on Security roles
|
Data is only not visible on the form, users would still have access in Advanced Find
|
This could be combined with FLS for more granular permissions
|
JavaScript
|
Extension
|
Customizer
|
Can run whenever the form is loaded, saved or a field is changed; does not necessarily require a developer
|
Performance (form load time) can become an issue
|
|
Plugins
|
Extension
|
Developer
|
Can be asynchronous or synchronous; can run as the user or as another user
|
Runs on the save, user will not see the change unless they refresh; requires a developer
|
|
External Applications
|
Extension
|
Developer
|
Can be designed to fit any business need; many options
|
Requires a developer and time to design/write.
|