Professional Documents
Culture Documents
Fun/SP:
Stored Procedure (SP) Function (UDF - User Defined
Function)
SP can return zero, single or multiple values. Function must return a single value (which
may be a scalar or a table).
We can use transaction in SP. We can't use transaction in UDF.
SP can have input/output parameter. Only input parameter.
We can call function from SP. We can't call SP from function.
We can't use SP in SELECT/WHERE/ We can use UDF in SELECT/ WHERE/
HAVING statement. HAVING statement.
We can use exception handling using Try- We can't use Try-Catch block in UDF.
Catch block in SP.
An index is used to speed up the performance of queries. It does this by reducing the number of
database data pages that have to be visited/scanned.
In SQL Server, a clustered index determines the physical order of data in a table. There can be
only one clustered index per table (the clustered index IS the table). All other indexes on a table
are termed non-clustered.
[ Online Report, Online Plugin, Report (if Online CRM how to deploy), Business rules, business
process, Number of fields in single entity 1024, Plugin, Dialog (call plugin/WF), Action, WF,
sync/Async (Plugin/WF) real-time WF, report type (online -> onprimses). Also, migration from
2013 to 2015, inifinte loop in plugin, online string map db access, ]
Process Category: Action, Business Process Flow, Work Flow, Dialog
How should is change execution order between synchronous workflow and Plugin?
we have tool synchronous event order in Toolbox by using we can able to update Rank of
workflow.
What is the difference between Role Based and Object Based Security Model in MSCRM?
Difference between Find and Advanced Find? Which one is faster and Why?
Find perform a search on an attribute for which it is defined. Advanced Find perform search on
the conditions and the attributes for which user customizes or runs it. Normal Find in faster as it
looks for one attributes and matches with that and returns the result whereas Advanced Find
searches for all the attributes and conditions while parsing through the records.
Find is applicable on only active records and it finds only on 2 or 3 column which we have
defined in the find view and even it returns any those column which is there in the view but
advanced find is applicable to all the records and it finds all the columns and even it returns all
the column and filter criteria can be on any column and most important - find filters on just one
condition but adv. find filters on multiple condition at one time. Find is faster than Advanced
Find.
CRM Discovery Service - when we need ORG related information like ORG name, Properties,
CRM service path for this ORG -- then we use CRM discovery service. This is only to get the
ORG related information
Meta data service - we use this when we need to interact with the CRM records – create, update
or delete anything-- it is very specific to the CRM records. When we need to interact with the
CRM entity and attribute -- like create an entity (not record) or attribute -- add a value to pick
list-- retrieve the pick list value retrieve the entity properties-- attribute property and all we need
Meta data service.
Requirement Plug-in Workflow Needs a synchronous action to happen before or after an event
occurs. The same piece of logic will be executed for different events and possibly on different
entities The logic needs to be executed while offline Needs elevation of privileges
(impersonation)Needs to execute on events other than assign, create, update, set state The
process/logic may take a long time to complete or will be a persistent process (multiple long
running steps) needs an asynchronous actioned users will need to modify the process logic Child
sub processes will be triggered.
Whenever you install MSCRM what all user groups get created in Active Directory?
UserGroupAll Microsoft CRM users. This group is updated automatically as users are added and
removed from Microsoft CRM.
ReportingGroupA group that contains all users within Microsoft CRM. This group is updated as
users are added to Microsoft CRM. Users in this group have read-only access to the filtered
views in the Microsoft CRM database.
PrivUserGroupPrivileged Microsoft CRM user group for special administrative functions.
SQLAccessGroupA group that contains Microsoft CRM ASP.NET account and other service
accounts. Members in this group have full access to the Microsoft CRM database and this group
is used by the Microsoft CRM platform layer. End users should never be added to this group
What is 'Append' and 'Append To' privilege in MSCRM? Give one example of it?
'Append' and 'Append To' privileges works together. 'Append To' privilege will allow other
entities to get attached with the entity. 'Append' privilege will allow the entity to attach the
records to the entity with 'Append To' privilege. Let us understand this with simple example: Let
us say that you want to attach a note to a case then note entity should have 'Append' access right
and case entity should have 'Append To' access right.
Can we modify the name of Root Business Unit?
No; we must re-install MSCRM.
Suppose if I have 20 user license and I have created 20users. What will happen if I create
21st User?
The 21st User will get created in MSCRM but that user will be in disabled state.
What is the maximum number of tabs allowed on a Microsoft Dynamics CRM 4.0 forms?
8
How to enable/disable the form assistant? How to make sure the form assistant is
expanded/collapsed on a form?
Navigate to Customization >> Open the Entity >> Open Forms and Views >> Open Form >>
Select Form Properties >> Open Display Tab >> Check/Uncheck the " Enable the Form
Assistant" and " Expanded by Default”.
What was your role in the MSCRM implementation project that you have worked on?
You should be honest while giving answer to this question and should give a brief overview of
the project and your role. This is very important question because the answers of this question
will trigger so many questions. You should highlight the key skills you have; this way you will
divert the attention of the interviewer to your key skills and try not to expose the area in which
you are less confident.
What was the most challenging task you have faced till now?
Here you should give answer that exhibits your positive attitude. E.g. for a technical consultant it
may be something like ... " I was new to the support and during this experience i faced
challenging issue related to plug-in that improved my debugging skills. Email-to-case plug-in
was difficult as we had to take care of so many conditions. I have learnt one thing during my
previous assignment and that is 'Never give-up'“.
Do you have a few key best practices someone considering CRM can use?
Yes, I have three that anyone can use. First, consider your future needs. Look down the road and
ask “How many contacts will I have in five years?” “How many salespeople will I have?” “How
many of my people will need real-time access to this information at home or on their phones and
PDAs?” “How much would it cost me to replace these contacts?”
Second, take the opportunity to clean up your data now. Moving to a CRM solution is an
opportunity to start with a clean version of accurate data. De-duplicate and otherwise scrub the
data to minimize the possibility of needing to import twice. For example, the flexibility of Excel
and Outlook BCM allow placing incorrectly formatted information in their fields. This data will
not import well without some good planning.
Third, be sure to communicate throughout the process and get early buy-in. The biggest focus of
Saleforce.com with its customers is adoption. Members of your team are influencers in their
departments. Leverage their expertise and influence by building a team to help you make
decisions about the solution. Even if you disagree, listening, acknowledging, and respecting will
build loyalty and acceptance within the process.
What advantages might CRM have for specific verticals?
The answer to this question is not if but how much. Since CRM helps you do what you do better,
if you are in a professional services company with long sales cycles, project terms, and frequent
interactions and touch points, CRM will be exponentially more valuable to you. So service
businesses, like lawyers, consultants, and accountants, are ripe for CRM but often have a
technological aversion and a strong status quo to maintain.
Does CRM fall more to sales or marketing in most organizations?
In my experience, marketing is somewhat of a new concept in CRM. Sales is involved, but most
often it is operations leading the charge.
What are my best resources for finding out more about CRM?
SDK
___________________________________________________________________________________
Suppose I want to migrate Microsoft CRM implementation from one environment to other
environment. Let us assume that there a published workflow for account entity. Now in normal
usage there will be few accounts-records for which the workflow will be waiting/Waiting for
Resource/Failed/Succeeded state. So what should be our strategy for the migration? What will
happen to the records which are in waiting state and what will happen to the records which are in-
progress?
Suppose there is a plug-in registered for account entity. When a user submits a request (e.g.
account creation etc.) to the web-server then what will happen in the server?
The plug-in will get loaded into the memory and will perform the operation it is needed to do.
Now what will happen if 100 users will submit the request to the web-server? The plug-in code will
get loaded into the memory for 100 times?
Answer is NO. Noticeable point over here is that the Microsoft CRM is a managed application and runs
under .Net framework. So, whenever the first request arrives at the web-server the plug-in code is loaded
into the memory and will perform its operation and subsequently the same plug-in code will serve the
process for other user as well. So, this way it saves the amount of time required to load the plug-in into
the memory. If the plug-in code is not being used for long, then the Garbage collector will identify it and
will sweep the plug-in out from the memory.
How to debug the java script that we write for some validation on entity pages?
Following are the steps that are needed to be followed:
· Enable the Debugging in the Internet Explorer – Go to Tools >> Internet Options (wizard will
appear >> Click the ‘Advanced Tab’ >> Under Browsing Section uncheck the ‘Disable script debugging’
checkbox >> Click OK.
· Edit the java script code of the Entity Page that you want to debug.
· Put the statement ‘debugger;’ above the line where you want to do the debugging.
e.g. suppose my java-script show ‘Hello World’ message and i want to debug this then following is the
way I am going to add script:
debugger;
alert (‘Hello World’)
· Save and Publish corresponding customization.
· Perform the operation that would trigger the java script written by you
· Debugger dialog box will appear and select appropriate debugger (Visual Studio new or existing
instance)
Database: The assembly dll is stored in the database, rather than the file system. The major
advantages are that the assembly need only be deployed once if you have multiple CRM servers,
and that no additional action is required to restore / redeploy the assembly either during disaster
recovery, or if redeploying to an alternate server. This is the preferred option in a production
environment
Disk: The assembly dll is placed in the \server\bin\assembly directory on each server. You must
ensure the dll is placed in the correct place on all CRM servers, so the deployment overhead is a
little greater. I normally use this option in development environments as you can redeploy newer
versions solely by file transfer, rather than reregistering. Also, if debugging, the assembly .pdb
file needs to be placed in the same location; with this option, it's easy to ensure the dll and pdb
are from the same build
GAC: The assembly is placed in the Global Assembly Cache on each CRM server, and again
you must do this. The GAC does allow multiple versions of an assembly, but CRM doesn't, so
you don't really gain anything by using the GAC. I don't think I've ever used this option
Difference between CRM web services vs. CRM.SDK Proxy namespaces?
Calling Dynamic Entities (knowledge on Moniker, Input Parameters, Output Parameters, and
Meta Services)?
In case of Pre-image, you get the image of the record as is stored in the SQL database before the CRM
Platform action has been performed.
Post Image, returns the image of the record after the CRM Platform action has been performed.
Late Binding:
Compiler bind the objects to methods at the runtime. This is called late binding or dynamic binding.
Function overriding is example for late binding.
When can infinite loop occur in a plugin? How do you avoid infinite loops in plugin code?
An infinite plugin loop example is: You have a post-update plugin on an entity 'A' that
updates something in entity 'B' and entity 'B' has a post update plugin that updates
plugin 'A'. Or You have a post-update plugin on an entity 'A' that updates a field in the
same entity 'A', when entity 'A' will be updated, it will result in another update of entity
'A' and this will go on and will result in infinite loop.
Now, lets come to 'How we can stop it from happening?' There is a property called
Depth for Context object. You can use this property to check if you are heading to an
infinite loop. If context.Depth > 1, then you have a case of plugin causing a call to
itself. The Depth attribute increments each time a plugin causes another plugin to
execute. So you could check the contact plugin context. Depth is not larger then 2 if
you want it to still fire at least once from the account plugin.
Every time a running plug-in or Workflow issues a message request to the Web services
that triggers another plug-in or Workflow to execute, the Depth property of the
execution context is increased. If the depth property increments to its maximum value
within the configured time limit, the platform considers this behavior an infinite loop
and further plug-in or Workflow execution is aborted. The maximum depth (8) and time
limit (one hour) are configurable by the Microsoft Dynamics CRM administrator.
What is the difference when the ownership is user vs. organization for a custom entity?
Organization-owned entities typically contain data involving something that belongs to or that can be
viewed by the whole organization. Organization-owned entities cannot be assigned or shared. For
example, products are owned by the organization.
User-owned entities are associated with a user. User-owned entities typically contain data that relates to
customers, such as accounts or contacts. Security can be defined according the business unit for the user.
Owing to the interactive nature of the dialog process, you cannot run a dialog using the
Microsoft Dynamics CRM SDK. A dialog can only be run through the Microsoft
Note Dynamics CRM Web application and are not supported in Microsoft Dynamics CRM for
Microsoft Office Outlook with Offline Access
When would you use a pre validation plugin and when would you use a post validation
plugin?
Pre-validation:- Stage in the pipeline for plug-ins that are to execute before the main system operation.
Plug-ins registered in this stage may execute outside the database transaction.
Pre-operation:- Stage in the pipeline for plug-ins that are to execute before the main system operation.
Plug-ins registered in this stage are executed within the database transaction.
Post-operation:- Stage in the pipeline for plug-ins which are to execute after the main operation. Plug-ins
registered in this stage are executed within the database transaction.
Post-operation:- Stage in the pipeline for plug-ins which are to execute after the main operation. Plug-ins
registered in this stage may execute outside the database transaction. This stage only supports Microsoft
Dynamics CRM 4.0 based plug-ins.
Why use images with plugins?
Answer: Images are a way to pass the image of the record that is currently being worked upon prior or
after the action has been performed. In general it could be said, it is the image of the record as is available
in the SQL backend.
In case of Pre-image, you get the image of the record as is stored in the SQL database before the CRM
Platform action has been performed.
Post Image, returns the image of the record after the CRM Platform action has been performed.
What is an Email-Router?
Microsoft Dynamics CRM E-mail Router is a software component that creates an interface between a
Microsoft Dynamics CRM deployment and the organization's messaging system. The E-mail Router
routes qualified email messages to the Microsoft Dynamics CRM system as email activities and fully
integrates with different messaging systems, such as Microsoft Exchange Server, Microsoft Exchange
Online, POP3, and SMTP. The E-mail Router includes the functionality for sending email through any
desired SMTP provider and for receiving email from Microsoft Exchange Server or from a POP3 server.
Additionally, the Forward Mailbox feature remains available.
Secondary Entity use when you have to retrieve record from Intersect Entity (contactleads) having
records of Entities (Contact and Lead) having N: N Relationship.
The following 2 messages require the ‘Secondary Entity’ to be specified while registering a step in Plugin
registration: a) SetRelated b) RemoveRelated
These two messages are basically triggered when a primary entity record is
associated/dissociated with/from the secondary entity record via the relationships supported.
So, if you’re planning to execute some business logic on association of the specific entities, you
can register the plugin against the ‘SetRelated’ message. The ‘RemoveRelated’ works for
dissociation of the entity records from each other.
Plugin Interview Questions:
The event execution pipeline allows you to configure when in the even the plug-in code will
execute. The event pipeline is Pre-event (Pre-Validation, Pre-Operation), Post-event (post-
operation). Before or after save.
The pre/post images return the data as it is stored in the CRM database. One scenario
where the pre-image can be useful is during an Update event when you need to get a
value whether or not it was updated (since only updated fields are available in the
input). Post-image can be used to see the final value after all of the business logic has
run (example the Quote ID generated OnSave).
http://www.inogic.com/blog/2010/07/pre-image-post-image-explained/
One of the best uses for this is in update plug-ins. As mentioned before, update
plug-in target entity only contains the updated attributes. However, often the plug-
in will require information from other attributes as well. Instead of issuing a
retrieve, the best practice is to push the required data in an image instead.
Comparison of data before and after. This allows for various audit-type plugins, that
logs what the value was before and after, or calculating the time spent in a stage or
status.
late bound is faster than early bound, but if your application doesn't require speed
performances this is not the main criteria to choose between late bound and early bound.
Early Binding:
Advantage:
In Microsoft Dynamics CRM 2013 /2011 Software Development Kit contains with a tool (CrmSvcUtil)
which can automatically generate helper classes to make it easier to work with your CRM entities
and their attributes. You can also generate helper class from MS Visual Studio (greater than 2010
version) if you install CRM SDK Developer tool kit package and connect to CRM organization then
generate wrapper class. This provides type checking at compile time, which eliminates the chance of
running into InvalidCastExceptions during execution of your custom code. It also lets developers
take advantage of intellisense by suggesting names for entities, attributes, and relationships. This
can speed up development time by removing the risk of spelling mistakes.
Disadvantage
Every time you make a customization change in your system, you will need to run the CrmSvcUtil
tool again to ensure that the latest entities, attributes, and relationships are available in your custom
applications. The size of the generated file can be large depending on the complexity of your
system. Use of the Helper class results in slightly lower performance than the Late-bound entity
types.
Late Binding
Advantage
Late binding involves the use of the generic “Entity” class which can manage objects of any entity
type. For example, we can use the “Entity” object to programmatically create Accounts, Contacts,
Leads, or any custom entity. So in this case we have to define everything explicitly, so here no need
to generate helper class again and again. Use of the Entity class results in slightly better
performance than the early-bound entity types.
Disadvantage
Type checking is performed at runtime, so developers must explicitly cast attribute values correctly
otherwise the custom code will fail during execution. Developers need to be familiar with the late
binding syntax as there is no intellisense available.
6. when can infinite loop occur in a plugin. How do you avoid infinite loops in plugin code.
An infinite plugin loop example is: You have a post-update plugin on an entity 'A' that
updates something in entity 'B' and entity 'B' has a post update plugin that updates
plugin 'A'. Or You have a post-update plugin on an entity 'A' that updates a field in the
same entity 'A', when entity 'A' will be updated, it will result in another update of entity
'A' and this will go on and will result in infinite loop.
Now, lets come to 'How we can stop it from happening?' There is a property called
Depth for Context object. You can use this property to check if you are heading to an
infinite loop. If context.Depth > 1, then you have a case of plugin causing a call to
itself. The Depth attribute increments each time a plugin causes another plugin to
execute. So you could check the contact plugin context. Depth is not larger then 2 if
you want it to still fire at least once from the account plugin.
Every time a running plug-in or Workflow issues a message request to the Web services
that triggers another plug-in or Workflow to execute, the Depth property of the
execution context is increased. If the depth property increments to its maximum value
within the configured time limit, the platform considers this behavior an infinite loop
and further plug-in or Workflow execution is aborted. The maximum depth (8) and time
limit (one hour) are configurable by the Microsoft Dynamics CRM administrator.
___________________________________--
When developing plugins for Microsoft Dynamics CRM 2011, there are scenarios in which the
execution of your custom code can result in an infinite loop. This leads to unnecessary execution of
plugins and can potentially impact the performance of CRM, as well as the user experience. In this
post, we will take a look at the Depth property of the IPluginExecutionContext service object and see
how it can be used to eliminate the risk of infinite loops.
*
Before we see how to use the Depth property, let’s take a look at a scenario. Assume your CRM
implementation consists of the Contact entity and a custom entity called Member. The requirement
for the system is to keep data on the Contact and Member entities synchronised, so that the
following business rules apply:
1. When a Member is created, a corresponding Contact record is created (if one does not already
exist)
2. When certain details on the Member is updated, details on the corresponding Contact record must
also be updated
3. When certain details on the Contact record is updated, details on the corresponding Member
record must also be updated
You can see that this type of business logic will require a plugin to be registered on create of
Member, and on update of both Contact and Member. You will also notice that updating a Member
triggers an update of the Contact, which again triggers an update of the Member and so on.
Firstly, let’s see what happens if we deploy such a plugin without any consideration for handling
infinite loops. I have updated the “Full Name” field on the Member, which should try to update the
“Full Name” field on the Contact.
The CRM platform throws an error stating that it has identified an infinite loop. This usually happens
after the number of iterations reaches a maximum of 8. We can fix this by adding a depth check at
the start of our plugin code, just after we initialize each of the service objects.
IPluginExecutionContext context =
(IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
IOrganizationServiceFactory factory =
(IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactor
y));
_sdk = factory.CreateOrganizationService(context.UserId);
ITracingService tracer =
(ITracingService)serviceProvider.GetService(typeof(ITracingService));
There are many things that you need to do to avoid deadlocks in SQL Server but none
of them gives 100% assurance that no dead lock will occur again so you need to know
how to handle deadlocks when they occur. You need to first know types of deadlocks,
their reasons and how to break a deadlock by making one of the process as victim.
Here are some tips on how to avoid deadlocking on your SQL Server:
• Ensure the database design is properly normalized.
• Have the application access server objects in the same order each time.
• During transactions, don’t allow any user input. Collect it before the transaction
begins.
• Avoid cursors.
• Keep transactions as short as possible. One way to help accomplish this is to reduce
the number of round trips between your application and SQL Server by using stored
procedures or keeping transactions with a single batch. Another way of reducing the
time a transaction takes to complete is to make sure you are not performing the same
reads over and over again. If your application does need to read the same data more
than once, cache it by storing it in a variable or an array, and then re-reading it from
there, not from SQL Server.
• Reduce lock time. Try to develop your application so that it grabs locks at the latest
possible time, and then releases them at the very earliest time.
• If appropriate, reduce lock escalation by using the ROWLOCK or PAGLOCK.
• Consider using the NOLOCK hint to prevent locking if the data being locked is not
modified often.
• If appropriate, use as low of an isolation level as possible for the user connection
running the transaction.
• Consider using bound connections.
8. if you delete a record from UI, what happens in database. can you bring the record back?
In Microsoft Dynamics CRM, deleting an entity by using the Web application or through SDK Web
service calls usually results in a "soft delete" where the entity is not immediately deleted from the
database. Instead, the entity is marked for deletion later. The platform marks the entity for deletion
by setting the entity's DeletionStateCode attribute to 2. Entities with
a DeletionStateCode attribute set to 2 are filtered out from all data views in the Web application and
are not accessible using the SDK.
These marked entities are physically deleted from the database by the Deletion Service. The Deletion
Service is an asynchronous operation that is based on a table
namedScaleGroupOrganizationMaintenanceJobs in the MSCRM_CONFIG database of Microsoft
Dynamics CRM. By default, the frequency of the Deletion Service job execution is set to once a day.
You can use the Scale Group Job Editor tool to change the execution frequency of the Deletion
Service. You can find the tool on the Web at http://code.msdn.microsoft.com/ScaleGroupJobEditor
WF can be created by end user and non-developer while Plugin can only create by developer
(S/W Engineer).
WF do not execute when offline while Plugin execute in both state (Offline and Online).
Wait condition only in WF not in plugin.
WF can run on demand while plugin need something to trigger.
Limited trigger point (CAUD, change state) while Plugin have 100s of messages to trigger.
11. for plugin deployment, Difference between GAC, DataBase, Disk deployments.
GAC Deployment
Pre validation means you plugin will run before the form is validated
Pre -operation is after validation and before the values are saved to the database
Post operation is your plugin will run after the values have been inserted/changed on
the database
Secure Configuration:
The Secure Configuration information could be read only by CRM Administrators.(Eg:
Restricted data from normal user could be supplied here)
Unsecure Configuration:
Unsecure configuration information could be read by any user in CRM. Remember its
public information (Eg: Parameter strings to be used in plugin could be supplied here).
15. When we should go with Early binding and when with Late Binding?
yes
19. Why we need to Create Security Key before registered the plugin?
22. What security roles needs to register the plugin in Online and on premise both?
27. What are different ways (QueryExpression, LINQ, FetchXML) to fetch CRM metadata in Plugin.
Differrnece between them?
28. What is the Execution Time of Sync and Async plugin in crm?
29. Which will execute first in Aync Workflow and Async Plugin?
30. How can we call external webservice in onpremise and Online plugin in crm?
31. What are the different ways available to debug a Plugin (Onprem and Online both)
Plug-ins can be used to achieve some of the similar goals as with workflows or client-
side code such as JavaScript, Silverlight, or HTML.
On the other hand, anything requiring UI or user interaction, must be done with client
side code. You will not be able to modify UI or prompt the user during processing with
the plug-in.
Plug-in vs. Processes
These are very similar, in fact workflows are just a skin on an asynchronous system
plug-in. The main differences:
Plugins support different event execution pipelines. Workflows are always post operation.
Workflow execution logic can be easily modified, this allows encapsulation of code in
custom workflow activity while still retaining possibility of frequent changes on execution
logic by non-programmers.
TIP: While migrating data, it is a good practice to evaluate the effects of active plugins
and workflow extensions. Sometimes it might be desirable to turn off the plugins and
workflow extensions.
Synchronous vs. Asynchronous Plug-ins
Synchronous plug-ins are executed by the CRM Core System. Synchronous execution
means that triggering event will wait until the plug-in finishes the execution. For
example, if we have synchronous plug-in that triggers on the creation of account and
user creates account record in CRM, the form will hang at save until the plugin has
finished.
What is the use of Secondary Entity within Plugin Registration Tool in MSCRM 2011?
Secondary Entity use when you have to retrieve record from Intersect Entity (contactleads) having
records of Entities (Contact and Lead) having N: N Relationship.
The following 2 messages require the ‘Secondary Entity’ to be specified while registering a step in Plugin
registration: a) SetRelated b) RemoveRelated
What does ‘SetRelated’ and ‘RemovedRelated’ do
These two messages are basically triggered when a primary entity record is associated/dissociated
with/from the secondary entity record via the relationships supported. So, if you’re planning to execute
some business logic on association of the specific entities, you can register the plugin against the
‘SetRelated’ message. The ‘RemoveRelated’ works for dissociation of the entity records from each other.
The event execution pipeline allows you to configure when in the event the plug-in code will execute.
The event pipeline is Pre-event (Pre-Validation, Pre-Operation), Post-event (post-operation). Before or
after save.
This use only in CRM 4.0. There are limitations that vary with stage and execution mode.
The pre/post images return the data as it is stored in the CRM database. One scenario where the pre-
image can be useful is during an Update event when you need to get a value whether or not it was
updated (since only updated fields are available in the input). Post-image can be used to see the final
value after all of the business logic has run (example the Quote ID generated OnSave).
____________________________________________________________________________________
One of the best uses for this is in update plug-ins. As mentioned before, update plug-in target entity only
contains the updated attributes. However, often the plug-in will require information from other
attributes as well. Instead of issuing a retrieve, the best practice is to push the required data in an image
instead.
Comparison of data before and after. This allows for various audit-type plugins, that logs what the value
was before and after, or calculating the time spent in a stage or status.
early binding is practically a wrapper around to the standard classes to speed up the development.
It has also some bonus like the possibility to use LINQ.
You can always choose both, there are no limitations. Personally I prefer late bound, especially for
plugin development.
late bound is faster than early bound, but if your application doesn't require speed performances this is
not the main criteria to choose between late bound and early bound.
Early Binding
Advantage:
In Microsoft Dynamics CRM 2013 /2011 Software Development Kit contains with a tool (CrmSvcUtil)
which can automatically generate helper classes to make it easier to work with your CRM entities and
their attributes. You can also generate helper class from MS Visual Studio (greater than 2010 version) if
you install CRM SDK Developer tool kit package and connect to CRM organization then generate
wrapper class. This provides type checking at compile time, which eliminates the chance of running into
InvalidCastExceptions during execution of your custom code. It also lets developers take advantage of
intelligence by suggesting names for entities, attributes, and relationships. This can speed up
development time by removing the risk of spelling mistakes.
Disadvantage
Every time you make a customization change in your system, you will need to run the CrmSvcUtil tool
again to ensure that the latest entities, attributes, and relationships are available in your custom
applications. The size of the generated file can be large depending on the complexity of your system.
Use of the Helper class results in slightly lower performance than the Late-bound entity types.
Late Binding
Advantage
Late binding involves the use of the generic “Entity” class which can manage objects of any entity type.
For example, we can use the “Entity” object to programmatically create Accounts, Contacts, Leads, or
any custom entity. So in this case we have to define everything explicitly, so here no need to generate
helper class again and again. Use of the Entity class results in slightly better performance than the early-
bound entity types.
Disadvantage
Type checking is performed at runtime, so developers must explicitly cast attribute values correctly
otherwise the custom code will fail during execution. Developers need to be familiar with the late
binding syntax as there is no intelligence available.
6. when can infinite loop occur in a plugin. How do you avoid infinite loops in plugin code.
When developing plugins for Microsoft Dynamics CRM 2011, there are scenarios in which the execution
of your custom code can result in an infinite loop. This leads to unnecessary execution of plugins and can
potentially impact the performance of CRM, as well as the user experience.
______________________________________________________________________________
An infinite plugin loop example is: You have a post-update plugin on an entity 'A' that updates
something in entity 'B' and entity 'B' has a post update plugin that updates plugin 'A'. Or You have a
post-update plugin on an entity 'A' that updates a field in the same entity 'A', when entity 'A' will be
updated, it will result in another update of entity 'A' and this will go on and will result in infinite loop.
Now, let’s come to 'How we can stop it from happening?' There is a property called Depth for Context
object. You can use this property to check if you are heading to an infinite loop. If context.Depth > 1,
then you have a case of plugin causing a call to itself. The Depth attribute increments each time a plugin
causes another plugin to execute. So you could check the contact plugin context. Depth is not larger
than 2 if you want it to still fire at least once from the account plugin.
Every time a running plug-in or Workflow issues a message request to the Web services that triggers
another plug-in or Workflow to execute, the Depth property of the execution context is increased. If the
depth property increments to its maximum value within the configured time limit, the platform
considers this behavior an infinite loop and further plug-in or Workflow execution is aborted. The
maximum depth (8) and time limit (one hour) are configurable by the Microsoft Dynamics CRM
administrator.
You must be careful when using the Depth property as there are more complex scenarios that you may
run into. For example, a data import may trigger a workflow to update the “Full Name” of a Member,
which in turn will execute our plugin. In this case, the Depth will be 3 at the first execution of the plugin.
If you left the code snippet above unchanged, the plugin logic will never get executed.
There are many things that you need to do to avoid deadlocks in SQL Server but none of them gives
100% assurance that no dead lock will occur again so you need to know how to handle deadlocks when
they occur. You need to first know types of deadlocks, their reasons and how to break a deadlock by
making one of the process as victim.
Here are some tips on how to avoid deadlocking on your SQL Server:
Another way of reducing the time a transaction takes to complete is to make sure you are not
performing the same reads over and over again. If your application does need to read the same data
more than once, cache it by storing it in a variable or an array, and then re-reading it from there, not
from SQL Server.
• Reduce lock time. Try to develop your application so that it grabs locks at the latest possible time, and
then releases them at the very earliest time.
• If appropriate, reduce lock escalation by using the ROWLOCK or PAGLOCK.
• Consider using the NOLOCK hint to prevent locking if the data being locked is not modified often.
• If appropriate, use as low of an isolation level as possible for the user connection running the
transaction.
• Consider using bound connections.
8. if you delete a record from UI, what happens in database. can you bring the record back?
In Microsoft Dynamics CRM, deleting an entity by using the Web application or through SDK Web service
calls usually results in a "soft delete" where the entity is not immediately deleted from the database.
Instead, the entity is marked for deletion later. The platform marks the entity for deletion by setting the
entity's DeletionStateCode attribute to 2. Entities with a DeletionStateCode attribute set to 2 are filtered
out from all data views in the Web application and are not accessible using the SDK.
These marked entities are physically deleted from the database by the Deletion Service. The Deletion
Service is an asynchronous operation that is based on a table
namedScaleGroupOrganizationMaintenanceJobs in the MSCRM_CONFIG database of Microsoft
Dynamics CRM. By default, the frequency of the Deletion Service job execution is set to once a day. You
can use the Scale Group Job Editor tool to change the execution frequency of the Deletion Service. You
can find the tool on the Web at http://code.msdn.microsoft.com/ScaleGroupJobEditor
11. for plugin deployment, Difference between GAC, DataBase, Disk deployments.
GAC Deployment
Note:
With ILMerge external referenced assemblies can be merged together to deploy as a single plugin
assemly. This will remove the restriction with Dynamics CRM online deployments, but large assemblies
are slow to load.
Misconception:
You need to deploy plugin dll on the CRM server to enable remote debugging, but this is not required for
database deployment, you will need to put pdb file in C:\Program Files\Microsoft Dynamics
CRM\Server\bin\assembly folder on crm server.
It is used to access Entities and attributes at runtime, it uses DynamicEntity class, which provides a
property bag to access the attributes of an entity instance (record). This is preferred because the entity
classes included in this DLL will not contain any of your customizations. The entity classes are
deprecated and will be removed from this assembly in a future version.
13. What are different operation (Pre-Validation, Pre-operation & Post-operation) of Plugin?
Pre validation means you plugin will run before the form is validated
Pre -operation is after validation and before the values are saved to the database
Post operation is your plugin will run after the values have been inserted/changed on the database
Unsecure configuration information could be read The Secure Configuration information could
by any user in CRM. Remember be read only by CRM Administrators. (E.g.:
its public information (E.g.: Parameter strings to Restricted data from normal user could be
be used in plugin could be supplied here) supplied here)
Imagine that you include a plugin, plugin steps and Imagine that you include a plugin, plugin steps and
activate them in a solution. Later solution was activate them in a solution. Later solution was
exported as Managed Solution to another exported as Managed Solution to another
environment. In this scenario, the supplied environment. In this scenario, the supplied Secure
Unsecure configuration values would be available configuration information would NOT be
in the new environment. available in the new environment. The
simple reason behind this is to provide more
security to the contents of Secure Configuration.
Note: If you supply parameter strings under secure configuration then the plugin will work fine only for
the CRM. If you supply any parameter strings to Plugin and read by all of the users in CRM, use Unsecure
Configuration.
Yes
Yes
18. Why we need to Create Security Key before registered the plugin?
27. What are different ways (QueryExpression, LINQ, FetchXML) to fetch CRM metadata in Plugin.
Differrnece between them?
28. What is the Execution Time of Sync and Async plugin in crm?
29. Which will execute first in Aync Workflow and Async Plugin?
30. How can we call external webservice in onpremise and Online plugin in crm?
31. What are the different ways available to debug a Plugin (Onprem and Online both)
Plug-ins can be used to achieve some of the similar goals as with workflows or client-side code such as
JavaScript, Silverlight, or HTML.
The differentiation is clear. Plug-in runs server-side with compiled code and should always be the
preferred method of implementing business logic. Client-side code is vulnerable to different client
environment, browsers, browser settings, etc., and should not be relied on implementing business
critical steps.
On the other hand, anything requiring UI or user interaction, must be done with client side code. You
will not be able to modify UI or prompt the user during processing with the plug-in.
These are very similar, in fact workflows are just a skin on an asynchronous system plug-in. The main
differences:
Workflows can only be triggered asynchronously
Workflows can only be triggered online
Workflows have limited triggers. Mostly these would be your basic create/update/delete/assign/state
change.
Plugins support different event execution pipelines. Workflows are always post operation.
Workflow execution logic can be easily modified; this allows encapsulation of code in custom workflow
activity while still retaining possibility of frequent changes on execution logic by non-programmers.
TIP: While migrating data, it is a good practice to evaluate the effects of active plugins and workflow
extensions. Sometimes it might be desirable to turn off the plugins and workflow extensions.
Synchronous plug-ins are executed by the CRM Core System. Synchronous execution means that
triggering event will wait until the plug-in finishes the execution. For example, if we have synchronous
plug-in that triggers on the creation of account and user creates account record in CRM, the form will
hang at save until the plugin has finished.
Asynchronous plug-ins are executed by asynchronous service. Asynchronous plug-ins allow triggering
event to finish before plug-in code runs. Therefore, these can never be used to prevent an action,
validate data entry, or provide any error messages back to the user.
What is CRM
CRM is as a strategic process that will help you better understand your customers’ needs and how you
can meet those needs and enhance your bottom line at the same time. This strategy depends on
bringing together lots of pieces of information about customers and market trends so you can sell and
market your products and services more effectively.
Microsoft Dynamics CRM is a business app that helps you track all your customer interactions and data.
It is a solution that drives sales productivity and marketing effectiveness through social insights,
business intelligence and campaign management in the cloud, on-premises or with a hybrid
combination.
• Scalable
• Ease of Use
• Simplified Workflow
• Customization
• Integration
-------------------\\\
• Narrow Vision
• Improper Integration
Opportunity Management
Sales process management
Pipeline optimization
Quotes
Order management
Sales force management
Sales literature
Direct Email
Campaign Management
Marketing list management
List segmentation
Campaign execution
Marketing reporting (track marketing information from response through the sales cycle)
Promotion codes
Target products
Service
Marketing
Microsoft Dynamics CRM for Marketing PDF
Microsoft Dynamics Marketing is an integrated marketing resource management solution for
marketing operation, planning, execution, and analytics across all channels—email, digital,
social, SMS, and traditional.
Marketing resource management
Multichannel campaigns
Lead management
Sales collaboration
Social marketing
Marketing intelligence
Social
Access teams: new type of team. Not the owner of that record but access records. Create any number
of access team to work on same record and also team members have different level of access right to
the record.
Business process flow: new type of the process (workflow) for creating visualizations to guide users
through various phases of business processes.
Real-time workflows: real-time (synchronous) workflows. Real-time workflows are not queued, but execute
immediately on-demand. Perform similar functionality to plug-ins, yet can be created by the end user through
the web application workflow designer. Developers can create real-time workflow through code. In addition,
real-time workflows provide the core processing functionality of actions.
https://msdn.microsoft.com/en-us/library/gg490659.aspx
Name endpoint comes from Enterprise Integration Patterns. You can work with CRM
through user interface it provides for you, but there is other option. Your own
software is able to interact with CRM, as with service. Interaction goes through the
messages, your client software sends to CRM services. So, in this case both,
software you are working on and CRM will have endpoints. Your software will have
client endpoints, but CRM will have server endpoints. I don't think you need to add
new endpoints in CRM, because there are already defined. Just use them sending
messages from your code.
5- Difference between Dialog and Workflow.
Dialog: are synchronize, must be run my user, while Workflow are both synchronize and
asynchronize. Run automatically and by the user.
Triggers are supported for workflow while in dialog they aren’t.
Workflow can be created or updates through outside the CRM using XAML while in
dialog they aren’t.
6- What is solution and Difference between Managed and unmanaged solution?
Solution are how customizers and developers author, package and maintain unit of software
that extend CRM. Customizers and developers distribute solution so that organization can used
CRM to install and uninstall the business functionality define by solution.
Managed Solution: are solution cannot be modify.
Unmanaged Solution: are solution that can be modify but can’t be uninstall.
7- What is field level security?
Field level security to restrict access of high business impact fields to specific users.
8- How can we create a custom Ribbon button? By using XML.
<button id=”Create_id” label=”GO” OnAction=”DO_IT” screentip=”Screen Class”
supertip=”Super Class” />
9- What is sandbox plugin?
Sandbox can make use of full power of crm sdk to access organization web service. Access to file
system, system event log, certain network protocols, registry.
13-
1. What is the use of String Map Table in MSCRM?
String map table basically used in MSCRM for storing the details of Option Set Fields exists in an
organization. It contains all the data (Attribute Name, Option Set name, option value, option name,
Object Type Code) of option set.
Requirement
Use Plug-in Use Workflow
Needs a synchronous
action to happen before or
No
after an event occurs
Or
Yes
Need to perform a task
that has to completed
within 2 Sec
Needs elevation of
privileges (impersonation)
Or
No
Perform data operations on
Yes
behalf of another system
user
Child
sub processes will be
No Yes
triggered
Entities form a vital piece of the Microsoft Dynamics CRM framework. Essentially, entities are used to
model and manage business data. Some common entities that most Dynamics CRM users are familiar
with are Account, Case, Campaign, Contact, Lead, and Opportunity. These entities deal with many of the
most common sales, service, and marketing data with which a CRM user frequently engages.
There are three main types of entities: system, business, and custom. In Dynamics CRM, system entities
handle internal processes such as workflows. It is important to note that system entities cannot be
deleted or customized. Business entities are the default entities within Dynamics CRM which include
Case, Account, and Opportunity. One of the most important elements in Microsoft Dynamics CRM
is customization. Custom entities provide organizations with a way to meet their needs head-on. One
example of this is that you can create a vendor entity if you are a retail business and then dictate how it
relates to different entities within your organization. Since each entity supports a variety of actions,
streamlining communications processes amongst your organization is now an attainable goal.
Ownership Description
Type
User Owned User-owned entities are associated with a user. User-owned entities typically
contain data that relates to customers, such as accounts or contacts. Security
can be defined according the business unit for the user.
None The entity is not owned by another entity. For example, the uom (unit-of-
measure) and workflowlog (workflow log) entities are not owned by another
entity.
In Microsoft Dynamics CRM you can create different types of relationships. Below are the
relationships that can be created:
1. 1:N
2. N:1
3. N:N
In a relationship you can configure relationship behaviors. Below are the different relationship
behaviors that can be configured in CRM:
1. Parental
In parental relationship, any action taken on the parent record is also taken on the child entity
record. For example if the parent record is shared with a user, all the child records will also be
shared with the same user.
2. Referential
In a referential relationship, the action taken on the parent entity record will not impact the child
entity record
3. Referential, Restrict Delete
In a referential, restrict delete relationship, the action taken on the parent record will not impact
the child entity record but you cannot delete the parent record until the parent record exists
4. Configurable Cascading
Configurable cascading allows the user to choose the behavior they want to be apply. Below are
the behaviors that can be configured:
Cascade All – This behavior performs an action on all the related child records. For example, if
my opportunity is assigned to an another user then all the child records should be assigned to
the same user
Cascade None – This behavior performs no action on the child records
Cascade Active – This behavior performs action only on the active records
Cascade User- owned – This behavior performs action on the child records which are owned
by the same user as parent
Remove Link – This behavior only removes the link for the child record without modifying
anything on the record.
Have you ever faced Performance related issue in MSCRM, How you have
resolved it?
Find : Normal Find is faster as it looks for one attribute and matches with that and
returns the result
Advanced Find: Advanced Find searches for all the attributes and conditions
while parsing through the records.
Find : Find is applicable on only active records and it finds only on 2 or 3 column
which we have defined in the find view and even it returns any those column
which is there in the view
Advanced Find : Advanced find is applicable to all the records and it finds all the
columns and even it returns all the column and filter criteria can be on any column
and most important
One of my colleagues faced a situation where he had installed a plugin assembly into
database but was not able to locate its DLL, and now he wanted to deploy it in some other
server.
In MSCRM all plugins related information like its name, content, createdBy, createdOn.
ModifiedBy, ModifiedOn etc store in PluginAssemblybase Table. You can get it by below
Query result :
select * from PluginAssemblyBase
Below are some column description of PluginBaseTable :
Column Description
Name
Name Store name of Plugin
Source Type Where the Plugin registered
0 - Database
1 - Disk
2 - GAC
content Store content of DLL
Get the encoded base 64 string representation of the plugin from PluginAssemblyBase table.
select name,content,*
from PluginAssemblyBase
Use that content and get the dll from the following site.
http://www.motobit.com/util/base64-decoder-encoder.asp
Set decode and export to binary file option there with filename having extension as .dll
Open the dll in the reflector tool and use the source code to build that assembly.
http://reflector.red-gate.com/download.aspx
2. Business Unit: WF will only run for those record whose owner is in the same BU of WF
owner.
3. Parent-Child Business Unit: WF will only run for those record whose owner is in the Child
BU of WF owner BU
Answer : There is no 'Owner' field available on the form when you create a Entity
has Organisation Ownership. while in User or Team Owned Entity this field will be
available.
Below is the screenshots which will clear what exactly happens:
Answer : NO,
In MSCRM, each user has User Access Level on Saved Views(Personnel View), even System
Admin cannot do any operation on Personnel View see below:
Why MSCRM ? Since so many CRM available in the market like ERP, SAP,
SIEBEL etc But How MSCRM is different from others ?
Answer : World-class customer experiences begin with your people. By giving your people the
right tools to multiply their productivity, multiply their impact, they can drive your organisation
to achieve your goals, multiply your revenue, and multiply your customers.
The top reasons, why organisations choose Microsoft Dynamics CRM instead of other CRM to
create world-class customer:
Ease of Use :
Since MSCRM is a Microsoft product which is very similar & integrated with other
Microsoft Products Like MS Word, MS Excel, MS Outlook, MS SharePoint, Internet
Explorer etc, so it is very familiar to all those businessman who use to spend 70% of his time
on these tools, To understand this CRM no additional tool need to be learn, no additional
software need to be install. Anyone could easily learn MSCRM with little training.
In other words we can also say that
it integrates with Microsoft Business Solutions for Financial Management, Microsoft Office, and
other systems to that you get a complete picture of your customer.
It's important to note just how easy it is to integrate Microsoft CRM with Microsoft Office.
Because it is so easy it enables your employees to access Microsoft Dynamics CRM right from
their Microsoft Office Outlook whether they are working online or offline. It's a great tool for
your sales department and it takes little training to make it happen.
Dynamic :
Since MSCRM hide Dynamic word inside itself its abbreviate as 'Microsoft Dynamic
CRM'. We can extend it at any level. Microsoft itself provides three modules (Sales, Marketing
& Service). But anyone could add its own module. Apart from this MSCRM is easy integrated
with other MS Products as well as various third party tool like Ava-ya etc.
The Cloud :
Microsoft invests over $2 billion US dollars in cloud infrastructure every year. Microsoft
Dynamics CRM is one of the quickest and one of the easiest ways for your business to take
advantage of the cloud and cloud economies, including helping to reduce systems management
and maintenance costs as well as meaning you pay only for the capacity you need.
Value :
When considering costs—including licensing, services, training, deployment, administration and
maintenance — customers, media, and industry analysts regard Microsoft Dynamics CRM as
one of the best value offerings in the industry.
Language Support :
MSCRM is only product available in the market which is Available in more than 40 languages.
Access Clients :
MSCRM is only product in the market which could be accessible through Mobile, Outlook and
Web client. MSCRM 2013 also accessible from Tablet also.
.Net Development Platform :
MSCRM use .net framework. All Plug-Ins, Custom WF written in either C# or VB. Even the
whole MSCRM Pages, forms has designed in .net(.aspx page). So its easy for .net developer to
write code in MSCRM and make it understandable for itself.
How can we restrict any 'Entity Field' from being shown in Advanced Find ?
Answer : Using Searchable Property of attribute(Entity Field.
Did you know that you can set each attribute of each entity to be able for advanced find or
not?
By doing this you can specify which fields the users can search on. That means that all the
fields which you do not use in your CRM system can be removed from the list to make using
the advanced find easier.
if user A is added to Field level profile where he is not able to read field A then
when user A does the advanced find, system will display this column in advanced
find but it will be blank column (meaning user will not see/read the value and field
level security will be applied).
How can we restrict any 'Entity' from being shown in Advanced Find ?
Answer ; Using Security Role:
Best way to achieve this is apply security settings if you remove the read/view
permission of unused entity in CRM security, then those entity will not available.
But if you have read privilege on the entity and still you want that entity not to be shown in
Advanced find or If you want permanently hide entity from Advanced Find then there is no
supported way.
But there is an unsupported way to achieve the same. CRM exposes below Boolean property
in EntityMetadata to identify which entity should appear in Advanced Find.
This will hide the entity for all users on the Advanced Find.
What are images. What are its types and Why are they used ?
When can infinite loop occur in a plugin. How do you avoid infinite loops in
plugin code.
if you delete a record from UI, what happens in database. can you bring the
record back?
Lesson: Relationships and Records - Entities are described as a record type, such as an Account or
Contact. Fields are specific data, forms are a collection of fields, and relationships are a dotted line
between records.
Async workflows run in the background, while synchronous workflows run and hold you up
until they're complete.
Workflows can update records with a N:1 relationship (a lookup on the record), but they
cannot run on 1:N relationships (those on the left navigation or in a sub-grid). So using a
workflow, you cannot automatically update all the contact addresses when the parent
account address changes. But this can be done with a plug-in.
https://crmbusiness.wordpress.com/2014/09/30/microsoft-dynamics-crm-not-working-check-these-
common-causes/
I started up the DEV server too start my CRM dev this morning only to be confronted with a big fat
error
Yesterday IT sent an email warning me they would be gently powering down the servers for some
maintenance (I bet they really just turned them off).
These common errors are another bonus of companies moving to the cloud because these problems
won’t occur or will be fixed by Microsoft.
Check the time on the server
Checking the time on the server seems an odd thing to do, but if the time on the server is greater than
5 minutes out from your PC then CRM will fail to authenticate the user. This is a common problem
which pops up and to resolve this you need to get the IT team (or you if you don’t have one) to make
sure you setting the time on the server properly (e.g. the same as the PC’s) so it stops the servers time
drifting.
This should be your first thing to check because if the ASYNC services have stopped then CRM will
stop working. If you want to learn more about CRM Asyncs, you can go here
The Async processing service is usually the cause of CRM not working.
If you have restarted the Asyncs and CRM is still not working
SQL Server
I often think of CRM as a web application to show the contents of the CRM SQL database. If the
SQL CRM instance is down, SQL server is off or can’t be contacted then CRM will stop working.
If CRM isn’t working you need to check the SQL server (usually on a different server) is up and
running and the CRM instances are running.
Windows Event Viewer
They are some common things to check if CRM isn’t working but you will also need to check for
some pointers for other errors. The place I usually start is by checking the Event Viewer log on the
CRM server.
Go to the CRM Server
or
Control Panel –> Administrative Tools –> Event Viewer
Look at the errors and warnings to see if there is anything which might point you in the direction of
the potential error. It’s unlikely you will actually get an error, usually I find it’s a warning and the
warning will point you in the direction of the cause of CRM not working.
here is the logs from the server for the error shown at the top of the blog
You can see there are a view warnings, a .NET, a sandbox. Be warned there is often a lot of noise in
the event logs (e.g. warning and errors which are not important).
I lookeda the .NET error
Process information:
Process ID: 5348
Process name: w3wp.exe
Account name: DEV\CRMAPPPOOL
Exception information:
Exception type: CrmException
Exception message: The plug-in execution failed because no Sandbox Hosts are currently
available. Please check that you have a Sandbox server configured and that it is running.
System.ServiceModel.EndpointNotFoundException: Microsoft Dynamics CRM has
experienced an error. Reference number for administrators or support: #72E41A64
atMicrosoft.Crm.Application.Platform.ServiceCommands.PlatformCommand.XrmExecuteInt
ernal()
atMicrosoft.Crm.Application.Platform.ServiceCommands.RetrieveMultipleCommand.Execute
()
atMicrosoft.Crm.Caching.DefaultSavedQueryIdCacheLoader.LoadCacheData(SavedQueryId
CacheKey key, IOrganizationContext context)
at Microsoft.Crm.Caching.CrmSharedMultiOrgCache`2.LookupEntry(TKey key,
IOrganizationContext context)
at Microsoft.Crm.Caching.DefaultSavedQueryIdsCache.TryLookupEntry(Int32objectType,
Int32 savedQueryType)
atMicrosoft.Crm.Application.Components.Sdk.FormControls.Web.LookupControl.Configure
Control()
atMicrosoft.Crm.Application.Components.UI.CrmUIControlBase.ConfigureControlInternal()
It pointed to the Sandbox service and when I checked the CRM services, I saw the sandbox service
was stopped. I started the sandbox service and CRM popped back into life.
How is CRM changing and what does the business owner need to be aware of?
At the heart of CRM is the benefit of having the customer record at the center of the data universe rather
than multiple galaxies of transactions held in separate, transaction-specific apps. So the innovation lies in
new and improved visibility for putting information to use in intelligent decision making. Companies that
used to serve 100 are serving 10,000, and with this kind of scaling, better top-level tools and custom
dashboards are where I see CRM continuing to morph and advance.
19. Who are the newcomers to the CRM landscape?
It is such a hot area right now, there are literally hundreds. But two I have been following are Zoho and
HighRise. Both are niche vendors that have garnered great contact lists with their other products and
created relatively simple implementations for their clients and others. They both illustrate the fact that
CRM is no longer esoteric — it is going mainstream, which is a great thing for business, particularly
customer service and data security.
20. How much should I plan to spend on a good solution?
That’s always a tough question, given that applications vary widely in price based on whether it’s a
hosted or installed delivery model, user-based or organization-wide subscription model, or a per-gigabyte
or other data model. I would use the cost-per-sale and cost-per-lead values to help determine what a
system is worth to a business. For most customers, services are going to be anywhere from $20 to $350
per month per user.
What are your expectations for CRM in the next five years?
First, I expect CRM to become much more commonplace. Players like Zoho and 37signals (Highrise) are
knocking down barriers to entry. I also expect to see some consolidation. I think the bigger players, like
Salesforce, Microsoft, and SAP, will buy up some of their smaller rivals to build into their suites and
migrate their user bases. As long as the acquiring provider keeps the connections intact during the
migration and meets a similar price point, it will be a win-win. I also think we’ll be seeing more mobile-
friendly applications, like Salesforce’s Visualforce and NetSuite’s iPhone, to maximize data access and
timeliness.