-
Field Level Security White Paper Released
The Microsoft Engineering for the Enterprise team has released another white paper this week:
Brief Description
While Microsoft Dynamics CRM does not provide for true field-level security, there are a number of options available for using supported custom logic to control of access to data at a more granular level than provided out of the box. This document discusses some of the key options and constraints available for implementing this type of solution.
Overview
This white paper, Field-level Security in Microsoft Dynamics CRM: Options and Constraints, provides selected aspects of the conceptual application of the security model in Microsoft Dynamics CRM. While Microsoft Dynamics CRM does not provide for true field-level security, there are a number of options available for using supported custom logic to control of access to data at a more granular level than provided out of the box. This document discusses some of the key options and constraints available for implementing this type of solution.
Administration, Customization, Dynamics CRM 394 views -
Viewing How Users Have Configured CRM
We ran into an issue last week where a user was creating an Order directly, instead of from the Opportunity, where they should have been creating it. We traced the problem to the fact that the somehow, the user’s CRM profile had been changed and they were seeing navigation items normally hidden from them.
Reporting on your user’s configuration
I created the following process to review how each user had their CRM environment configured.
I started by running the following SQL script:
SELECTs.fullname,
u.homepagearea,
u.homepagesubarea,
u.userprofile
FROMusersettingsbase u
INNER JOIN systemuserbase s ON u.systemuserid = s.systemuserid
ORDER BY
s.fullname
Which results in a report something like this:
So what does this tell us?
Well, the first column is the user’s name, of course.
The second and third columns instruct CRM what to display as the user’s “Home” page when they first start CRM. These settings are found on the General tab of the Personal Options dialog when the user selects Tools, Options:
The final column defines how the user’s Workplace will appear:
When you select one of the checkboxes in the Select Workplace Areas box, it will add that group to the user’s Workplace area. The Preview area on the left allows the user to see how the Workplace will look after the changes have been saved.
When you look in the database, the Profile column will contain a comma-delimited list of those groups that should be shown in the Workplace. Here is the list:
Display Value Internal Value Sales SFA Marketing MA Service CS Scheduling SM Changing the User’s Environment
The only problem with knowing how the user has their CRM environment configured is there is no way to make a global change unless you write an application to do it. If you don’t feel like writing an application, you’ll need to fix the any issues by logging into CRM as that user.
Security Considerations
If you would like to prevent your users from changing their settings, you can remove the Write right from the User Settings section in their security role:
Administration, Dynamics CRM 393 views -
Enabling Quick Find of Disabled Records
This week we discovered a requirement to allow the user to perform a Quick Search on both active and close Opportunity records. Engage Incorporated has an article on how to do this, but for some reason, when I tried their technique, it didn’t work. So, here is my alternative.
1) Export the Entity in question. In my case, it was Opportunity.
2) Locate the Quick Find view.
3) Change filter type from this:
<condition attribute="statecode" operator="eq" value="0" />
to this:
<condition attribute="statecode" operator="not-null"/>
4) Save the customizations.
5) Import and publish the customizations.
This will allow the Quick Find operation to find Opportunity records no matter what their state is ( active, canceled, closed, etc. ).
And yes, this is unsupported.
Administration, Dynamics CRM, Unsupported 545 views -
Testing Customizations as a Normal User
This will probably be old news to most of you, but for those who are just starting with CRM, you should have a methodology in place to test your customizations as a normal user.
The Basics
You should have at least one test user for each role in which normal users exist. Normal being not-CRM Administrators. This will allow you to test the functionality of your customizations and custom solutions as each type of user.
While this may not seem like a huge issue, you need to keep in mind that CRM alters the environment and the user interface based on the user’s security. This means that sometimes they will not see things you expect them to or they will have permissions issues where you least expect them.
How to Test
Prior to Windows Vista and Server 2008, you could simply right-click on the Internet Explorer icon, select Run As, then supply the credentials of whatever test user you wished.
Unfortunately, Microsoft changed that behavior and according to this article, it no longer works. Thanks guys.
A possible work-around is using the ShellRunAs commandlet found here.
It is supposed to provide this functionality but I’ve had mixed results ( probably didn’t follow the directions properly ).
So if you’re using Vista or Server 2008, should nothing else work, you can always just Switch Users and log into the machine as the test user.
What to Test
Here are the usual suspects for testing customizations within CRM:
- The Site Map ( left-hand navigation )
- ISV.Config ( buttons and menus )
- JavaScript ( does your custom JavaScript work with all users )
- Custom Solutions ( any custom ASP.NET code you have written and added to CRM )
- Processes. If you have a process that moves data through the system, test it from start to finish as the particular user or users who actually perform the work to make sure you’re covering the whole process as a “normal” user and experiencing what they experience.
Conclusion
This is, at the very least, the minimal amount of testing you need to perform on a customized system. You can get as comprehensive and complex as you desire.
If you will document your testing procedures and steps and repeat those each time a change is made, you should be able to more quickly identify problems and create solutions before your changes reach the hands of the users.
Administration, Customization, Dynamics CRM, Installation 473 views -
Free Utility: Run CRM Deletion Service
Shortly after CRM 4.0 was released I discovered a need to have a utility to run the CRM Deletion service on-demand and not wait for it to automatically cycle.
This functionality is extremely useful when perfecting data import processes where you are supplying the IDs of the item being imported.
So, I wrote a utility that would call the internal CRM Deletion Service function to run the service against a specific CRM organization.
You will find this utility in the Free Utilities section.
Caveats
This utility utilizes and internal and undocumented CRM function call.
Undocumented translates to unsupported by Microsoft so you will be using this utility at your own risk.
That being said, I’ve used this utility for well over 18 months and have never had an issue. It’s a fairly binary equation: it runs the deletion service or it doesn’t.
I’m finally publishing it because I continue to run into situations where i need this functionality and I figure that if I need it, other people might as well.
Alternatives
If the above statements make you a little uncomfortable, you can always download the CRM 4 ScaleGroup Job Editor. Which can perform roughly the same functionality as this utility.
Administration, Dynamics CRM 798 views -
Monitoring your AsyncOperationsBase Table
One of my customers started having huge performance issues related to the database. We were also seeing SQL Timeout errors in the Application Event log and sometimes within the CRM client ( web or Outlook ).
After verifying that the database checked out without errors, we traced down the problem to the Microsoft CRM Asynchronous Processing Service ( Async Service, for short ).
I turns out that the AsyncOperationsBase table was huge:
Data space was 944,789 MB
Index space is 90,258 MB
Some digging produced the following Microsoft KB Article:
The AsyncOperationBase and WorkflowLogBase tables grow very large and performance issues occur when you use many workflows in Microsoft Dynamics CRM 4.0
It describes a hotfix, which is included in Hotfix Rollup 3 for CRM 4.0, that allows you to add a registry key to the CRM server to remove old, successfully completed bulk operations.
Within that article, another article is mentioned:
Performance is slow if the AsyncOperationBase table becomes too large in Microsoft Dynamics CRM 4.0
Which gives you a SQL script to removed these old records. After running the script in the development environment to make sure it ran correctly we ran it in production. This resulted in the size of the AsyncOperationsBase table:
Data space was 182.063 MB
Index space is 29.813 MB
Quite a difference, huh?
Anyway, if your server starts slowing down, you may wish to give these two articles a good read-through.
Administration, Dynamics CRM 555 views -
Workflow: How to Determine the error state of a System Job
I ran into something unexpected this week at a customer site: Internal system jobs, like Matchcode Updates, stuck in with a waiting status. For workflows, this usually means there are errors preventing the workflow from proceeding. But, I've never seen it on internal jobs before.
After asking around, Mahesh at Microsoft pointed out a method for attaining additional information regarding the status of a System Job. Follow these steps:
[ as a CRM Administrator ]
1) Select Settings, System Jobs to display a list of currently running or ran jobs.
2) Click the Advanced Find button and the following dialog will be displayed:
3) Click Edit Columns then add the column Message, as shown below:
This will display the actual status message and allow you to determine if a workflow or system job is waiting because it is supposed to, or if it is waiting because it encountered an error.
The following is a sample of system jobs – Matchcode Updates – that have failed because of an environmental change:
Note: The status is canceled because I manually canceled these jobs after I located and corrected the issue. Their normal status would have been Waiting.
This surely helped my troubleshooting. I hope it helps yours.
Administration, Dynamics CRM 1,616 views




