« February 2009 | Main | April 2009 »
March 2009
March 31, 2009
Preventing users from executing subreports
Recently a reader of the CEI blog posted a question. Her question was how to deploy subreports through Microsoft Dynamics CRM and prevent users from running them outside of the parent report. For example, if you have an account summary report with an embedded contact subreport, you don't want users running the subreport outside of the context of the master account summary report.
The first thing to understand is that you do have to publish the subreport through CRM, if the subreport is embedded in the report. For more information on uploading subreports and linking them to their parent, see this post.
If your subreport is launched from a hyperlink in the parent report, you do not have to upload the subreport through CRM--you can upload it directly to the report server and link the hyperlink to the URL of the report on the report server. You will need to use the "jump to hyperlink" option instead of the "jump to report" option in SSRS 2005.
For the context of this post I am assuming an embedded subreport that is uploaded via CRM. How can we upload subreports through CRM and make them unavailable for users to run outside of the context of the parent report?
1. Remove the subreport from the main report menu. In Microsoft Dynamics CRM 4.0, the default view for reports is "Available Reports." If you change the view to "All Reports, including subreports," you will see a much larger set of reports. This view includes subreports for the canned CRM reports, such as the "Account Distribution Detail" subreport, which is the subreport for the standard Account Distribution report. By selecting to not display the report in the "Available reports" view, the majority of users will never find it, and you won't have to worry about them running the report outside of the context of the parent report.
To prevent a report from being displayed in the "Available Reports" view, clear the "Display in" lookup field on the report information record when you upload the report (or click "edit report" from the report entity view and clear it out for an existing report).
2. Strategically name the subreport. When you create a subreport for a complex report, naming of the subreports can be an important decision. You want a name that makes sense to you, but not one that will be confused for a different report. For example, in the Account Summary report, name the contact summary subreport something like AS-CS subreport. Then in the description provide full details of what the purpose of the report is. Anyone who was updating the report from visual studio would be able to see what the name of the subreports in the report are; however, an end user would probably not select this report outside of the context of the parent report.
3. Disable the subreport. In the context of our account summary report, we are embedding the contact summary subreport in the parent account and passing the GUID of the account to a parameter in the subreport. Let's call that parameter "accountid."
One trick to make the subreport unusable unless executed from the parent report is to make the contents of the subreport hidden when executed outside of the parent report. Here's how I do it:
a. Set the parameter to "allow null values." In Visual Studio on the Layout tab, click the Reports menu and select "Report Parameters." Select your report parameter from the left. From the report parameters screen, click the "Allow Null Values" checkbox, and under "Default Values" select "Null."
b. Set your report table or matrix to hide if parameter is null. Select a cell in your table, then right click on the outer border of the table and click "properties" to open the table properties. Go to the "Visibility" tab.
Under "Initial Visibility:" select "Expression:," then enter an expression to hide the table if the accountid parameter is null. It is important to remember that in the case of SSRS visibility expressions, True=hidden, and False=visible.
For example, the following expression will hide the table if the accountid parameter is null:
=iif(Parameters!accountid.Value is nothing, true, false)
The result will be that the subreport will be unusable by most users if not executed from the parent report.
Summary
I have described three approaches to insuring that subreports are used in the correct context. The first option will work in most cases, the second will further obscure subreports from availability to end users, and the third should only be necessary in extraordinary circumstances.
Posted by Joel Lindstrom on March 31, 2009 at 09:05 AM in Microsoft CRM Reporting | Permalink | Comments (3) | TrackBack (0)
March 28, 2009
Preventing an opportunity from being closed (lost, won or cancelled) until opportunity form is complete.
It’s common to want to make sure conditions are met (e.g. revenue fields have values) before an opportunity can be closed (marked as ‘won’, ‘lost’ or ‘cancelled’).
There are multiple ways to accomplish this, but one simple way would be to prevent a user from closing the opportunity unless specified fields are completed. (Making the fields mandatory would force a user to fill in information that may not be known just to save a new opportunity. – What we’re after is preventing the user from closing an opportunity if a field is not completed.)
For this example we’ll add a field to the opportunity “Gross Profit” and hide the “Close Opportunity” option from the Action menu, until the “Gross Profit” field has a value and the opportunity has been saved.
Posted by Scott Sewell on March 28, 2009 at 09:22 PM in Microsoft CRM Tricks and Tips | Permalink | Comments (5) | TrackBack (0)
March 25, 2009
Testing Dynamics CRM Customizations in IFD Mode
Lately, I’ve been spending a good amount of time developing customizations for Dynamics CRM that need to be fully compatible with an Internet-Facing Deployment (IFD) environment. I utilize a customized version of the CRM 4.0 VPC for testing my code and I wanted to try and configure it for testing IFD implementations.
Reconfiguring my setup took just a few seconds to get the scenario to work, but other environments may need some additional adjustments that I didn’t have to do. Therefore, I’ll go over how I have networking set up on my VPC as that is one of the main pieces of the puzzle.
Continue reading "Testing Dynamics CRM Customizations in IFD Mode" »
Posted by Will Wilson on March 25, 2009 at 03:59 PM | Permalink | Comments (1) | TrackBack (0)
March 23, 2009
CRM and Social Networking - Customer Effective style
The team at Customer Effective is probably like a lot of you out there - we blog, we tweet, we Facebook, we LinkedIn, we attempt to embrace it all. We have learned quite a bit and have had a lot of fun over the last few years embarking upon our professional and personal social networking journeys. From the initial footprint to the ongoing experience, it's simply amazing to see these tools and platforms grow in popularity thru mass adoption. We are excited to continue our education and learn from others to find the best methods for building our brand, cultivating a following, and creating a collaborative learning environment.
With that said, we welcome the opportunity to have you join us on our journey and in return allow us to learn from your journey.
Become a CE Fan - CEI Facebook Group
Hear us tweet - CE CRM Twitter Account
Get LinkedIn with - Customer Effective
Posted by Mike Rogers on March 23, 2009 at 03:01 PM in Customer Effective News | Permalink | Comments (0) | TrackBack (0)
Technorati Tags: Customer Effective, Facebook, LinkedIn, Microsoft CRM, Social Networking, Twitter
Tips for increasing Scribe DTS performance
Earlier this month I had the pleasure of participating in several sessions at Convergence 2009 in New Orleans. One of my favorites was a CRMUG session on data migration and integration. I was on a roundtable panel with Tim Thorpe and Leslie Guffey from YRC Logistics and Brendan Peterson from Scribe Software.
There were a lot of great questions asked, and I learned several tips that can really help speed up DTS performance for migrations and integrations with Scribe.
1. Multiple DTS--One thing I've always wondered about is what is the effect of running multiple instances of the Scribe workbench on one machine? For example, if you have three data loads that you need to import, is it faster to run them in parallel, or would it take just as long as running them separately?
Brendan confirmed that it is supported to run multiple instances of the workbench simultaneously, and that if you have a powerful server with multiple processors/cores, this will be much faster than running each job individually.
2. Picklist validation--Like it sounds, this is a feature in the Microsoft CRM adapter that validates that picklist values are valid. This also adds some overhead to the DTS. If you know that the picklists values in your source are valid, or if your source does not contain any picklist data, disabling picklist validation can significantly decrease DTS execution time. To disable picklist validation, In Scribe Workbench click Target then select "Adapter Settings." on the General Settings tab uncheck the "Validate Microsoft Dynamics CRM picklist fields."
3. Increase batch query size--This is the size of the cache used for queries. If you have a beefy server with lots of ram/processor available, you can increase this value as high as 5,000, and this can improve the performance of your DTS. Query Batch size settings are located in the Adapter general settings (same place as #2)
Your results may very based on your specific DTS and the available resources in your environment. Have any additional data migration tips (doesn't have to be Scribe related)? Leave a comment or send me a message and I will post a follow-up.
Posted by Joel Lindstrom on March 23, 2009 at 01:20 PM in Scribe | Permalink | Comments (3) | TrackBack (0)
March 19, 2009
Microsoft Dynamics CRM integration with StrikeIron Web Services makes for a powerful quality data combination
Data, Data, Data. We require quality data input from end users of Microsoft Dynamics CRM on a daily basis. We need this data to populate reports, a KPI dashboard, or maybe a marketing list for an upcoming campaign. Unfortunately what we desire is not always what we get. How do we address it? One programmatic way is to leverage data feeds from providers such as USPS, Thomson Reuters, D&B, etc to verify or even append existing Microsoft Dynamics CRM data.
Customer Effective recently completed a discovery project, working with the team at StrikeIron, to develop a solution for integrating Microsoft Dynamics CRM with their extensive porfolio of web services. Our first project involved leveraging their US Address verification service. We reviewed several potential use cases in this initial effort and will enhance the integration as we continue to work with the oustanding team at StrikeIron. More to come on this topic.
Posted by Mike Rogers on March 19, 2009 at 05:05 PM in Microsoft CRM Customizations | Permalink | Comments (1) | TrackBack (0)
Technorati Tags: CRM web services integration, Microsoft Dynamics CRM customizations, StrikeIron
Three reasons why any Microsoft Dynamics CRM 4.0 user should love IE 8
Today, Microsoft officially released Internet Explorer 8. There are many reasons to like IE8, including improved standards compliance, better performance, accelerators, and improved security; however, there are three things that CRM users should especially like about IE 8.
1. It is fully tested and supported. IE8 has undergone a rigorous 12 month beta, and Dynamics CRM was one of the key "test products" for the IE team when working through their validation and tests. The IE team and CRM team worked closely together to insure that Dynamics CRM worked with IE8, and IE 8 is now an officially supported browser for Dynamics CRM 4.0.
2. Built in development tools. If you are the developer type, you probably used tools like DOMspy or the Internet Explorer Developer Toolbar to identify CRM page elements, like Nav Bar links, to use in creating javascript. With IE 8, there is no more need for these tools, as the developer tools are built into the browser (under Tools menu-->Developer Tools)
3. Color coded tabs. This is a major usability enhancement for Dynamics CRM. As any user of Dynamics CRM can attest, CRM can open many IE windows. For example, when you open up an Account, a new window is launched, then if you open an activity associated with the account, another window opens. Tabbed browsing in IE 7 helped get control of these windows by allowing users to have one IE window open with multiple tabs. However, one potential problem is that if you also have some other sites open, perhaps researching a potential customer on MSN Money, the CRM windows can get lost among all of your other sites.
Another issue arises if you work with multiple CRM environments. If you are a CRM configurator, it is not uncommon to be working in both a dev and prod environment. This was very difficult since if records from multiple environments were open, it was nearly impossible to identify which environments those records belonged to, without checking the URL of the window.
IE 8 solves these problems by grouping tabs from related sites together, and color coding them, so you will never mix up your CRM tabs with your Twitter tabs.
Here is a pretty extreme example of three CRM environments open in one IE 8 window:
Quote from Microsoft:
“We’re thrilled to have IE8 in market and released. During the past 12 months we have worked closely with the IE team and Dynamics CRM has been one of the key “test products” for the IE team when working through their validation and tests. During the process we naturally identified issues and resolution to those were vigorously pursued and implemented. At this point we only have 1 known issue and we’re happy to be able to state that IE8 is an officially supporter browser for Dynamics CRM 4.0. We expect the Implementation Guide to be updated in April 2009 to reflect this supported status for IE8.”
Posted by Joel Lindstrom on March 19, 2009 at 04:25 PM in Web/Tech | Permalink | Comments (6) | TrackBack (0)
Troubleshooting Offline Synchronization with Microsoft Dynamics CRM 4.0 for Outlook
So you are deploying Microsoft Dynamics CRM 4.0 for Outlook, and when you go offline, one of the following happens.
- The offline synchronization stops/freezes
- You receive the error "Failed move data for entity [EntityName] during action saInsert, countRows=[CountNumber]. Contact your system administrator for assistance"
- You see the following error in the event log: "An error occurred during Offline Synchronization. Try going offline again, or restart Microsoft Outlook. SoapException happened Request timed out.."
These kinds of errors can be pretty frustrating. However, the following simple troubleshooting process can usually help identify the problem and how to solve it.
- In Outlook, go to CRM-->Modify local data groups
2. Deactivate all rules. Select all local data rules and click the red square "deactivate" icon
3. Re-activate one rule. After the rule is activated, go off-line, then go on-line.
4. Repeat # 3 for each rule, until you come across the rule that is causing the issue (the problem re-appears).
5. In Microsoft Dynamics CRM, test the logic of this local data rule using advanced find. This will probably show you what the problem is--for example, if your query criteria is too complex to run efficiently, it may be timing out.
6. Recreate the rule. For example, if you found that you have a rule that contains multiple related entities in the query criteria and multiple conditions grouped by "or," and this logic was too complex to be run without timing out, you may want to split this rule into multiple rules, one for each criteria. You can have multiple local data rules per entity, and it will work, as long as they don't conflict.
I have found that this troubleshooting process can identify the problem rule in many cases where offline synchronization with CRM 4.0 is failing.
For additional troubleshooting suggestions for offline synchronization, see KB 916165.
Posted by Joel Lindstrom on March 19, 2009 at 12:51 AM in Microsoft CRM Tricks and Tips | Permalink | Comments (3) | TrackBack (0)
March 16, 2009
CRM 4.0 Update Rollup 3 Considerations
On Friday we posted about Microsoft Dynamics CRM 4.0 Update Rollup 3. I thought it would be helpful to post some further details about it, and some recommendations that really apply to any update rollup.
The best advice is to read the knowledge base article prior to downloading and installing the update. The knowledge base article contains details about what fixes are included. Also worth noting is that there is an ever growing list of fixes included in the hotfixes that need to be manually applied with a registry change after the update is installed.
The reason that some fixes are applied automatically while others are hidden in a registry change has to do with whether the fix is a bug fix or if it is a change in the application design. Bug fixes are automatically applied, while design changes require a registry change so users who like the old design are not forced to change.
Here is the list of changes with rollup 3 that have to be enabled or configured manually:
955452 (http://support.microsoft.com/kb/955452/ ) Line feeds are not used when you send an e-mail message that uses an e-mail template to render data that has line feeds in Microsoft Dynamics CRM 4.0
955745 (http://support.microsoft.com/kb/955745/ ) Error message when you try to configure the Microsoft Dynamics CRM 4.0 client for Outlook: "This implementation is not part of the Windows Platform FIPS validated cryptographic algorithms"
956527 (http://support.microsoft.com/kb/956527/ ) The Microsoft Dynamics CRM client for Outlook consumes three times as much memory in version 4.0 as in version 3.0
959248 (http://support.microsoft.com/kb/959248/ ) Microsoft Dynamics CRM 4.0 slows to unacceptable levels when you process e-mail messages by using the Microsoft Dynamics CRM E-mail Router
957871 (http://support.microsoft.com/kb/957871/ ) The Workflow Expansion Task records cause the AsyncOperationBase table in the MSCRM database to grow too large in Microsoft Dynamics CRM 4.0
950175 (http://support.microsoft.com/kb/950175/ ) You cannot use Outlook as expected until all Microsoft Dynamics CRM 4.0 add-ins are loaded
953340 (http://support.microsoft.com/kb/953340/ ) E-mail messages from a CRM user to a queue are not delivered in Microsoft Dynamics CRM 4.0
958562 (http://support.microsoft.com/kb/958562/ ) The default precision of a money field is set to two when you use the Korean language or the Japanese language in Microsoft Dynamics CRM 4.0
955138 (http://support.microsoft.com/kb/955138/ ) You experience slow performance or timeouts when you try to access some views in Microsoft Dynamics CRM 4.0
956330 (http://support.microsoft.com/kb/956330/ ) Slow performance and high CPU utilization occur when you import customizations in Microsoft Dynamics CRM 4.0
968515 (http://support.microsoft.com/kb/968515/ ) The existing custom security roles are not granted hidden privileges after you apply hotfix 950886 in Microsoft Dynamics CRM 4.0
958601 (http://support.microsoft.com/kb/958601/ ) In Microsoft Dynamics CRM 4.0, the notes are lost if a duplicate record is detected when you try to save a record
968672 (http://support.microsoft.com/kb/968672/ ) The recipient does not see the Microsoft Dynamics CRM tracked e-mail icon when a Microsoft Dynamics CRM user sends another Microsoft Dynamics CRM user a Microsoft Dynamics CRM tracked e-mail message
968755 (http://support.microsoft.com/kb/968755/ ) The AsyncOperationBase and WorkflowLogBase tables grow very large and performance issues occur when you use many workflows in Microsoft Dynamics CRM 4.0
Additional considerations:
- It's ok to skip a rollup if you are not experiencing any of the issues addressed by the update
- Rollups are cumulative--update rollup 3 inculdes the fixes from rollup 1 and rollup 2, so if you install new clients, you only need to install rollup 3.
- If you have previously published rollup 1 or rollup 2 via auto updates, and you now are publishing rollup 3, you can remove rollup 1 and rollup 2 from autoupdates by using the <Delete> element in your update xml file, so new client installs will not be forced to download rollup 1 and rollup 2. For example:
<ClientPatches>
<Delete>
<PatchId>{FB10E341-BAB3-4687-A719-1AC1BF43EC92}</PatchId>
</Delete>
</ClientPatches>
- If you install an update rollup, you need to also update the clients, router, and the dmm to keep all of your components in parity.
Posted by Joel Lindstrom on March 16, 2009 at 09:34 AM in Microsoft CRM Tricks and Tips | Permalink | Comments (2) | TrackBack (0)
March 13, 2009
Microsoft Dynamics CRM 4.0 Update Rollup 3 released
Today Microsoft has released update rollup 3. This update includes the latest hotfixes and patches for CRM 4.0.
You can download it here. For more details about the release, see Knowledge Base article 961768.
Posted by Joel Lindstrom on March 13, 2009 at 03:11 PM | Permalink | Comments (0) | TrackBack (0)
March 09, 2009
Newsfeed Business Productivity Accelerator Released
The latest accelerator for Microsoft Dynamics CRM 4.0 was recently released. This accelerator is a combination of a dashboard report and a collection of workflows that give you a great way to track user activity in CRM.
Out of the box, the following events are included in the dashboard report:
- New case created
- Case reassigned
- New campaign created
- Sales opportunity closed
The most exciting thing about the Newsfeed Dashboard report is that it is extremely easy to configure additional events to show up on the dashboard. The report works by querying the Notes (annotation) table looking for subjects that begin with "Newsfeed:" To add additional events to the dashboard, just create a workflow to create a note against the selected entity and make the subject begin with "Newsfeed:" This even works with custom entities.
The dashboard report also includes drill through hyperlinks to the record, so you can click on an event on the dashboard and open the record in Dynamics CRM, and it is formatted very nicely to include CRM colors, fonts, and icons.
Based on my initial tests, the Newsfeed Business Productivity Accelerator is very complete and could be easily deployed with little or no modification (other than creating workflows for your specific CRM events).
Posted by Joel Lindstrom on March 09, 2009 at 02:39 AM in Microsoft CRM Implementation | Permalink | Comments (0) | TrackBack (0)
March 07, 2009
New version of the CRM 4.0 SDK available for download. (v.4.0.8)
This release of the Microsoft Dynamics CRM SDK includes new documentation and sample code to support server-to-server authentication with Microsoft Dynamics CRM Online.
Posted by Scott Sewell on March 07, 2009 at 03:33 AM in Microsoft CRM Customizations | Permalink | Comments (0) | TrackBack (0)
March 05, 2009
CRM Incubation Week 2
Earlier this year, Sanjay Jain with Microsoft coordinated CRM Incubation Week, which allows entrepreneurs the chance to work with a team of experts and design a solution using Microsoft Dynamics CRM 4.0, get advice from business leaders/investors/VC's, and get help with a marketing plan.
Week 1 was very popular, and received great coverage by many non-MS sources, such as Paul Greenburg. Given the current economic climate, this is a great opportunity for small companies to get some free assistance with building their business.
Sanjay has announced Incubation Week 2 to be held in Boston the week of 4/20. Companies wanting to participate should contact Sanjay.
This is a good opportunity not only for someone looking to build a software solution to sell, but also for a company that is looking to rapidly develop a platform for their internal line of business use.
Posted by Joel Lindstrom on March 05, 2009 at 07:59 AM in Web/Tech | Permalink | Comments (0) | TrackBack (0)
March 02, 2009
Client-side Web Service Calls for Microsoft Dynamics CRM 4.0: Calling the CRM Service with Javascript
This is the second part of a 3-part series on utilizing client-side javascript in Microsoft Dynamics CRM 4.0 to call the CRM web services. In my previous post, I focused on working with the CRM Metadata web service.
I’m going to take the same approach with creating the code to work with the CRM web service as I did with the Metadata service. I’ll have a generic function that constructs and sends the full SOAP message to the service and returns the response xml.
Posted by Will Wilson on March 02, 2009 at 11:51 PM | Permalink | Comments (6) | TrackBack (0)




Recent Comments