Armageddon It…
This week saw Microsoft start charging customers to use Windows Azure Platform, our big bet for Cloud Computing and a core component of our Software + Services strategy. However, when Ray Ozzie announced Azure at the Professional Developers Conference in October 2008, he talked about a layer of services that would be provided as part of Azure. As you can see below, one of these was “Microsoft Dynamics CRM Services”.

I have to say that this was a bit of a surprise to most of us in the Dynamics community, myself included. What exactly was Microsoft Dynamics CRM Services? Was it a replacement for Microsoft Dynamics CRM online, which was already up and running in the USA & Canada? Was it the Microsoft Dynamics CRM framework (minus the CRM functionality) that developers could use to build new applications (what we refer to as xRM today)? It became pretty clear that nobody really knew.
Now the problem with an information vacuum is that, very quickly, it gets filled with rumour, conjecture and opinion, which over time start to become accepted as fact. And this is exactly what has happened over the last year or so. I was at our UK Dynamics monthly sales team meeting yesterday, and pretty much all of my colleagues believed that the Azure Services Platform included the xRM framework. This is also a commonly held belief by many of our partners and even some customers.
First of all I would like to set the record straight. Windows Azure DOES NOT include Microsoft Dynamics CRM or the xRM framework. This doesn’t mean that we won’t develop additional services (i.e. Software + Services) for Microsoft Dynamics CRM using Azure (for example the Microsoft Dynamics AX team recently announced a range of value-added Connect, Commerce, Payments, and Sites services, built on the Azure platform), but it does mean that you can’t run CRM natively in the Azure cloud.
I must say that this is not entirely a surprise. For example, since early-2009, Ray Ozzie (Microsoft Chief Software Architect) and others have been playing down some of the original “Marketing” terminology so that references to “Microsoft Dynamics CRM Services”, “Microsoft SharePoint Services” and “Live Services” no longer appear with regard to Azure. Do you remember way back in the “noughties” when we first announced .Net and rebranded many of our products with the magic .Net “fairy-dust”? Enough said..!!!
So what exactly does that leave? Well, the Windows Azure Platform today looks more like the picture below.
So, will Microsoft Dynamics CRM ever run on the Windows Azure Platform? It’s hard to tell, but since CRM makes extensive use of enabling technologies such as SQL Server Reporting Services, SQL Server Analysis Services and Windows Workflow Foundation, none of which are provided by Azure, I would stick my neck out and say not in the short-to-medium term. Who knows, I’m not part of the product engineering or product marketing teams and have little insight into future product plans, and so in 5 years time I could be eating my own words. However, you won’t catch me holding my breath.
This posting is provided "AS IS" with no warranties, and confers no rights.
Laughing Boy Chestnuts Pre-School
Texarkana…
Prompted by an email from a CRM customer here in the UK (thanks Mike), I thought I would share my thoughts on how you could deploy CRM 4.0 today whilst preparing for the next version (codename CRM “5”). Before starting, I just want to point out that I am not part of the CRM product engineering or product marketing teams, and that I am merely puling together information that is already in the public domain with some common-sense recommendations.
Recommendation 1 – Go 64-Bit across all your Microsoft Dynamics CRM servers.
Back in May I wrote a post about Windows 7 & Virtual PC, in which I talked about our focus on 64-bit computing and how server products such as Exchange Server 2007 & 2010, Windows Server 2008 R2, and SharePoint Server 2010 no longer have 32-bit editions. Well, although not confirmed, I’m going to go out on a limb and bet that CRM “5” will continue this trend.
Recommendation 2 – Deploy Microsoft Dynamics CRM server on Windows Server 2008 or Windows Server 2008 R2.
Now this isn’t rocket science, but past releases of Microsoft Dynamics CRM tended to support versions of Windows Server that were still in their Mainstream Support phase. What do I mean by this? Well all Microsoft Business and Developer products (including Microsoft Dynamics CRM) are covered by the Microsoft Support Lifecycle, which offers a minimum of 10 years of support (5 years Mainstream Support and 5 years Extended Support). Well, as it happens, the Mainstream Support phase for Windows Server 2003 and Windows Server 2003 R2 is due to to end in July 2010, so it seems unlikely that CRM “5” will support them.
You can find out more information about the Microsoft Support Lifecycle (including support dates for all Microsoft products, past and present) here - http://support.microsoft.com/lifecycle
Recommendation 3 – Deploy SQL Server 2008 or SQL Server 2008 R2.
Although similar to the previous recommendation (mainstream support for SQL Server 2005 is due to end in April 2011), the dependency on SQL Server 2008 was confirmed by Andrew Bybee during his PDC 2009 session entitled Managing the Solution Lifecycle for xRM Applications. Again make sure this is a 64-Bit deployment.
Recommendation 4 – Use CRM 4.0 Update Rollup 7 (or higher)
Update Rollup 7 was a significant milestone for the CRM sustained engineering team, introducing support for Windows 7, Windows Server 2008 R2 and SQL Server 2008 R2 and well as many performance and stability improvements. You know this is important when we tell you that the Update Rollup 7 client package will be a prerequisite for all future Client Update Rollups. Starting with Update Rollup 8 the client updates will block installation if the Update Rollup 7 client is not found.
Recommendation 5 – Roll-out CRM 4.0 today, don’t wait for CRM “5”
Andrew Bybee also mentioned during his PDC session, that the current target for CRM “5” is the 2nd half of 2010. Now since the Mainstream Support phase for CRM 4.0 is not due to end until April 2013 (with Extended Support available until April 2018), you have plenty of time to get value from Microsoft Dynamics CRM now, safe in the knowledge that you are not under pressure to upgrade to CRM “5” in the near future (unless you wish to).
So there you have it. If you follow my recommendations for deploying CRM 4.0, then you may just have saved yourself a lot of time and effort when you do decide to upgrade to CRM “5”. Enjoy.!!!
This posting is provided "AS IS" with no warranties, and confers no rights.
Laughing Boy Chestnuts Pre-School
Naomi's Solar Pumpkin…
It has been a full year since we got our first glimpse of CRM5 (the catchy codename for the next version of Microsoft Dynamics CRM) at the Microsoft Professional Developer Conference (PDC) 2008, and a lot has changed since then. Last week at PDC 2009, Andrew Bybee, Nikhil Hasija, Barry Givens and others from the Microsoft Dynamics CRM product team, presented more cool CRM5 information, and many of the developer and platform features which were just prototypes last year are now fully baked features which seem pretty certain to make it into the final release.
If you would like to see what’s new in the world of CRM5 and xRM, then recordings of these sessions are available on the Microsoft PDC web site here:
Just one note of caution. These sessions don’t really have any details on CRM5 functional changes, and are targeted at developers – enter at your own risk..!!!
This posting is provided "AS IS" with no warranties, and confers no rights.
Laughing Boy Chestnuts Pre-School
Desert Rose…
I was chatting with Tom Brookes (UK Partner Technology Specialist for Microsoft Dynamics CRM) about his Q&A slot at the upcoming UK CRM User Group meeting on Wednesday 2nd December. I suggested it might be a good idea to extend this by arranging 1:1 meetings where any Microsoft Dynamics CRM customer could come along and discuss anything at all to do with their current CRM system.
To my surprise he thought this was a good idea. So I went ahead and booked a couple of rooms (along with plenty of tea/coffee/biscuits) here at the Microsoft Campus in Thames Valley Park (click here for directions) from 1pm to 5pm on 2nd December (directly after the CRM User Group). We're now set up to hold a number of meetings with no formal agenda, just some face time with me, Tom and anyone else from the UK CRM team who happens to be around on the day.
So all we need are customers…
Are you a Microsoft Dynamics CRM customer here in the UK? Would you like to speak directly with someone from the CRM team about anything CRM-related? Then drop me a line via the Contact Form, with a brief outline of what you would like to discuss, and I will book meetings on a first-come, first-served basis. I’m not sure what to expect, but if I get a huge response then I think this might be a good reason for doing something like this on a regular basis around the country (Manchester, Edinburgh etc.). I’ll check my inbox every couple of days for any requests that come through (I still have a day-job), so don’t worry if you don’t hear back from me straight away.
If I don’t get much take-up, I’ll just pretend this never happened and slip quietly back into obscurity :-)
This posting is provided "AS IS" with no warranties, and confers no rights.
Laughing Boy Chestnuts Pre-School
High Landrons…
Having just posted details about the Microsoft BizSpark programme for start-up ISVs, I received an email from John O’Donnell (US Dynamics ISV team) to tell me about a series of webinars running between Monday 7th and Friday 11th December. These sessions are designed to help ISVs understand how they can take advantage of Dynamics CRM and Dynamics AX to build compelling solutions.
Here’s the content of John’s email
Dear Partner
Are the costs and time to develop compelling business solutions holding your company back? Have you wondered if there is a better way to build business solutions? If your company could save up to 70 percent of their development time and therefore get to market faster, would that be of interest? If the answer to these questions is yes then consider attending a series of webinars focused on why you should consider building your next solution on a Microsoft Dynamics platform.
Over the course of a week our Microsoft Dynamics experts will take you through an overview of the Microsoft Dynamics message and will drill into two of our solutions, Dynamics AX and Dynamics CRM. During these sessions you will gain insight into the capabilities these platforms offer out of the box as well as how they can be extended to meet you customer’s unique business needs. In addition to Microsoft presenters, you will also see independent software vendors who have developed applications on the Dynamics platform. They will talk about their real world experiences with the platform.
Microsoft Dynamics offers a way to empower your organization with the ability to react quicker to your clients needs and offer solutions built on a proven development platform. You owe it to your existing and future clients to watch this webinar and to learn how you can take advantage of Microsoft Dynamics.
Sign up today at - Introduction to Microsoft Dynamics – Why ISVs are Partnering with Microsoft Dynamics
If increasing your developers productivity and time to market by building solutions on a Microsoft Dynamics development platform is something you would like to discuss now, please consider reaching out to the Microsoft ISV team now by emailing dynusisv@microsoft.com with your contact details and industry focus. We will have a Microsoft ISV specialist contact you to start you on the road to a faster and more streamlined time to market and above all work with you to become a successful Microsoft ISV Partner.
See you there.!!!
This posting is provided "AS IS" with no warranties, and confers no rights.
Laughing Boy Chestnuts Pre-School
All England’s Eyes…
…No? Me neither until this week.
“BizSpark provides fast and easy access to Microsoft tools and technologies, for their immediate use in design, development, testing, demonstration, and hosted application production and deployment.”
What this means is that if you are a start-up or small business who meets certain criteria, then joining the BizSpark programme will enable you to obtain and use Microsoft software at pretty much zero cost. An eligible business must have the following characteristics at the time of joining:
- Actively engaged in development of a software-as-a-service that will form a core piece of its current or intended business
- Privately held
- In business for less than 3 years
- Less than US $1 million in annual revenue
So what do you get if you meet these criteria and sign up to the programme? Well firstly, you get Design, Development, Test and Demonstration licenses for up to 25 developers at NO CHARGE for pretty much all Microsoft development tools (Visual Studio Team System etc.), all server products (SQL Server, SharePoint Server etc.) and all Microsoft Dynamics products (including CRM).
This in itself is great value, however you also get Production licenses that you can use to host customer applications also at NO CHARGE..!!! That’s right, you can develop and host SaaS applications at NO CHARGE whilst you are a member of the programme, using any or all of the following products:
- Windows Server 2008 Web, Standard and Enterprise editions
- SQL Server 2008 Web, Standard, Enterprise and Workgroup Editions
- BizTalk Server 2006 R2 Branch, Standard and Enterprise Editions
- Office SharePoint Server 2007 for Internet Sites
- *** Microsoft Dynamics CRM 4.0 (coming soon) ***
So why are we doing this? Well most software start-ups have limited working capital, and many choose to build solutions on free technology platforms simply because they cannot afford the upfront software costs of our software. BizSpark removes this barrier to entry, and will help start-ups by providing access to Microsoft software when they most need it and can least afford it.
You can find out more details (including terms & conditions) and sign up for the programme here – http://www.microsoft.com/bizspark
Sign up today and you will be joining a worldwide community of more than 25,000 other start-ups and small businesses, including over 1,500 here in the UK.
This posting is provided "AS IS" with no warranties, and confers no rights.
Laughing Boy Chestnuts Pre-School
Don’t Wake The Lion…
As a follow-up to my previous post regarding SharePoint 2010, I just saw that we published more than 20 modules of free-to-access webcasts regarding SharePoint & Office development here:
Enjoy.
This posting is provided "AS IS" with no warranties, and confers no rights.
Laughing Boy Chestnuts Pre-School
Steppin' Out (Concerto For A Rainy Day)...
I can't believe how time has flown these last few months. It seemed like just the other day that Rod Gordon (Gordon Associates) was holding the last UK CRM User Group, when in fact it was back in March. Well, an e-mail dropped into my Inbox this week to let me know about the next meeting being held on Wednesday 2nd December between 9.30am and 1pm, here at the Microsoft Campus, Thames Valley Park, Reading RG6 1WG.
Sessions Include:
- Building Dashboard Style Reports in CRM, Rob Peledie, Chorus IT
- CRM & Sharepoint, Tony Sloggett, Ascentium
- Alternative Options for Document Management, Peter Bromley, Root3
- Q&A/Discussion, Tom Brookes, Microsoft
The meeting is open to all Microsoft Dynamics CRM customers and partners and is free of charge. To make a booking or for further details contact Rod Gordon; e-mail: rod@gordonassociates.co.uk; phone: 01242 529820.
As an added bonus, I shall also be coming along (customer meetings permitting). See you there.!!!
This posting is provided "AS IS" with no warranties, and confers no rights.
Laughing Boy Chestnuts Pre-School
Sláinte Mhath…
We took the NDA off SharePoint Server 2010 at the SharePoint Conference 2009 this week. There are some great new capabilities, but my personal favourites are:
- SQL Server PowerPivot for Excel and SharePoint – Formerly codenamed “Gemini”, this is a powerful new in memory database technology that lets Excel users navigate massive amounts of information without having to create or edit an OLAP cube. Imagine an Excel spreadsheet with 100 million rows of business data, that lets you sort, slice and pivot in real-time, then publish to SharePoint as a browser-rendered dashboard.
- Visio Services – In SharePoint Server 2007 we introduced the concept of Excel Services which allowed you publish Excel workbooks, complete with data connections and complex formulas, and render them as web-based applications. Well, now we have done the same with Visio. With Visio you have been able to design rich representations of different kinds of business processes (e.g. supply chain, sales or customer service processes), linked to real time business data sitting in ERP, CRM and other Line of Business applications. Now, with Visio Services, we can publish these to SharePoint and render real-time process information in the browser.
- Install on Windows 7 – This is really important for those of you who do a lot of SharePoint development. Now you can install SharePoint 2010 on your desktop PC without the need for a Server.
Here are some good webcast resources I recommend you take the time to watch:
For more information, why not head over to the SharePoint Team Blog to find a detailed breakdown of all the new functionality. Enjoy the collaborative goodness..!!
This posting is provided "AS IS" with no warranties, and confers no rights.
Laughing Boy Chestnuts Pre-School
Not Just For The Dead…
Now that Menno has let the cat out of the bag regarding the new Microsoft Dynamics CRM Accelerator for Social Media, I thought I would create my very own twitter account as an extension of my blog for those times when I just don’t have the time or inclination to post at length. It may be that this experiment ends up in the same way as Philip’s experience, but let’s see what happens.
You can find me at http://twitter.com/ukcrm.
This posting is provided "AS IS" with no warranties, and confers no rights.
Laughing Boy Chestnuts Pre-School
Strange Magic....
As part of my pre-sales work, I inevitably assemble a collection of customer-ready presentations and whitepapers that I can use to help support the business case for Microsoft Dynamics CRM. Analyst reports from the likes of Gartner and Forrester can be very useful when positioning our solution for different functional requirements (e.g. sales force automation or customer service) or market segments (e.g. mid-market or enterprise), but they generally come with a price tag if you wish to purhase them for redistribution.
A couple of weeks ago I discovered that Microsoft has secured all copyright and publishing privileges with firms such as Gartner and Forrester, to include their reports on our website here - http://www.microsoft.com/presspass/itanalyst/default.mspx.
At the time of writing there are more than 70 reports available, covering all manor of Microsoft product areas from Mobile to Data Warehousing, but of particular interest to me are the CRM-related reports:
Now you have no excuse not to use these reports when putting together your business case for Microsoft Dynamics CRM.
This posting is provided "AS IS" with no warranties, and confers no rights.
Laughing Boy Chestnuts Pre-School
In The Lap Of The Gods…
Every so often I come across a feature in CRM that makes me wonder “why was it designed like that?”. The one that catches me out almost every time I demo is the inability to close or cancel a incident when there are associated open activities. This wouldn’t be so bad except that many of these activities are generated automatically by workflow, so when you cancel these activities manually, workflow processes continue to run and create still more activities.
Solving this problem requires a a plug-in that will first cancel any running workflows (to prevent new activities from being created) and then cancel any open or scheduled activities before closing or cancelling an incident,
On the incident entity, Microsoft Dynamics CRM 4.0 fires a CloseIncident message when a case is resolved and a SetStateDynamicEntity message when a case is cancelled or reactivated. So to start with we need to implement the IPlugin.Execute method and check for the “SetStateDynamicEntity” or “Close” messages.
It is good practice to check straight away that the plug-in is running in the correct context to avoid unnecessary code from executing and minimise performance bottlenecks. Here we are checking that we are running synchronously against the incident entity in the pre-processing stage of a parent pipeline.
Public Sub Execute(ByVal context As IPluginExecutionContext) Implements IPlugin.Execute
' Exit if any of the following conditions are true:
' 1. plug-in is not running on the 'incident' entity
' 2. plug-in is not running synchronously (context.Mode = Synchronous)
' 3. plug-in is not running in the 'pre-processing' stage of the pipeline (context.Stage = BeforeMainOperationOutsideTransaction)
' 4. plug-in is not running in a 'parent' pipeline (context.InvocationSource = Parent)
' 5. plug-in is not running on the 'Close', or 'SetStateDynamicEntity' messages
If (context.PrimaryEntityName = "incident") Then
If (context.Mode = MessageProcessingMode.Synchronous) Then
If (context.Stage = MessageProcessingStage.BeforeMainOperationOutsideTransaction) Then
If (context.InvocationSource = MessageInvocationSource.Parent) Then
If context.MessageName = "SetStateDynamicEntity" Then
HandleSetStateDynamicEntity(context)
ElseIf context.MessageName = "Close" Then
HandleClose(context)
End If
End If
End If
End If
End If
End Sub
The “SetStateDynamicEntity” event generates a context with an InputParameters property collection that contains a State property. Before continuing, we should check that this property equals “Cancelled”. We can then check for the EntityMoniker property for the id field which contains the ID of the case.
Private Sub HandleSetStateDynamicEntity(ByVal context As IPluginExecutionContext)
If context.InputParameters.Properties.Contains("State") And context.InputParameters.Properties.Contains("EntityMoniker") Then If TypeOf context.InputParameters.Properties("State") Is String And TypeOf context.InputParameters.Properties("EntityMoniker") Is Moniker Then If CStr(context.InputParameters.Properties("State")) = "Canceled" Then Dim moniker = CType(context.InputParameters.Properties("EntityMoniker"), Moniker) If Not moniker Is Nothing Then
Dim incidentid = CType(context.InputParameters.Properties("EntityMoniker"), Moniker).Id CancelChildWorkflows(incidentid, context)
CancelChildActivities(incidentid, context)
End If
End If
End If
End If
End Sub
Similarly, the “Close” event generates a context with an InputParameters property collection that contains an IncidentResolution property. Before continuing, we should check that this property is a DynamicEntity and then check for the incidentid field which contains the ID of the case.
Private Sub HandleClose(ByVal context As IPluginExecutionContext)
If context.InputParameters.Properties.Contains("IncidentResolution") Then If TypeOf context.InputParameters.Properties("IncidentResolution") Is DynamicEntity Then Dim incidentresolution = CType(context.InputParameters.Properties("IncidentResolution"), DynamicEntity) If incidentresolution.Properties.Contains("incidentid") Then If TypeOf incidentresolution.Properties.Item("incidentid") Is Lookup Then Dim incidentid = CType(incidentresolution.Properties.Item("incidentid"), Lookup).Value CancelChildWorkflows(incidentid, context)
CancelChildActivities(incidentid, context)
End If
End If
End If
End If
End Sub
Notice I have included quite a bit of error checking to make sure that we don’t hit any errors such as ArgumentNullException.
Now that we have the ID of the case record, we need to loop through all the active child workflows and open child activities, and cancel them. Since the process is almost identical for activities as it is for workflows, I’ll just cover off the process for cancelling workflows.
First up, we need to define a QueryExpression that queries the asyncoperation entity and requests all records where the operationtype = 10 (i.e. workflow), the regardingobjectid equals the case id, and the statecode is either “Suspended” or “Ready”. Unfortunately, if a workflow is being processed by CRM, it will be in a “Locked” state, which means that no other process can access it. It might not therefore be possible to cancel all active workflows if the plug-in executes at the same time a workflow is locked.
Private Function RetrieveChildWorkflows(ByVal parententityid As Guid, ByVal context As IPluginExecutionContext) As List(Of BusinessEntity)
Dim filterStateCode As New FilterExpression
filterStateCode.FilterOperator = LogicalOperator.Or
filterStateCode.AddCondition("statecode", ConditionOperator.Equal, "Suspended") filterStateCode.AddCondition("statecode", ConditionOperator.Equal, "Ready")
Dim filter As New FilterExpression
filter.FilterOperator = LogicalOperator.And
filter.AddCondition("regardingobjectid", ConditionOperator.Equal, parententityid) filter.AddCondition("operationtype", ConditionOperator.Equal, 10) filter.AddFilter(filterStateCode)
Dim qe As New QueryExpression
qe.ColumnSet = New ColumnSet(New String() {"asyncoperationid", "statecode", "statuscode"}) qe.EntityName = "asyncoperation"
qe.Criteria = filter
Dim request As New RetrieveMultipleRequest
request.ReturnDynamicEntities = True
request.Query = qe
service = context.CreateCrmService(False)
Dim response = CType(service.Execute(request), RetrieveMultipleResponse)
Return response.BusinessEntityCollection.BusinessEntities
End Function
Finally we need to loop through each asyncoperation in turn, and cancel by updating statecode = “Completed” and statuscode = 32 (i.e. Cancelled).
Private Sub CancelChildWorkflows(ByVal parententityid As Guid, ByVal context As IPluginExecutionContext)
For Each asyncoperation In RetrieveChildWorkflows(parententityid, context)
If TypeOf asyncoperation Is DynamicEntity Then
If Not CType(asyncoperation, DynamicEntity) Is Nothing Then
CancelWorkflow(CType(asyncoperation, DynamicEntity), context)
End If
End If
Next
End Sub
Private Sub CancelWorkflow(ByVal entity As DynamicEntity, ByVal context As IPluginExecutionContext)
If entity.Name = "asyncoperation" Then
If entity.Properties.Contains("statecode") And entity.Properties.Contains("statuscode") Then If TypeOf entity.Properties("statecode") Is String And TypeOf entity.Properties("statuscode") Is Status Then
entity.Properties("statecode") = "Completed" entity.Properties("statuscode") = New Status(32)
Dim target As New TargetUpdateDynamic
target.Entity = entity
Dim request As New UpdateRequest
request.Target = target
service = context.CreateCrmService(False)
Dim response = CType(service.Execute(request), UpdateResponse)
End If
End If
End If
End Sub
Great, so now we’re done cancelling active child workflows we can do something very similar with open child activities. I’ve uploaded the Visual Studio 2008 project here for you to get the full source code.
Also, to make life easier for those of you who just want to install the plug-in “AS-IS”, I’ve used the SDK plug-in installer sample code, and created two batch files, install.cmd and uninstall.cmd, which you can use. All you need to do is edit these files and modify the orgname, url, domain, username and password parameters to match your own crm environment.
So is that it? Well, not quite! This plug-in works as expected when you select Cancel Case from the Actions menu, but when you select Resolve Case things don’t go according to plan.
The main problem is the that the Resolve Case form checks for any open activities during the OnLoad event, and if it finds any, a dialog box is opened with a warning message. When you click OK to acknowledge the warning, the Resolve Case form is helpfully closed as well – The upshot is that no “Close” event is ever fired.
!!!…WARNING: UNSUPPORTED CUSTOMISATION ALERT…!!!
So you probably guessed from the warning that you can fix this issue, but only by modifying one of the files on each CRM server in your environment. I would strongly urge you only try this in NON-PRODUCTION environments. For more details about the bad things that occur when you step outside the supportability rules, please read the following SDK article: Unsupported Customizations.
OK, so now you understand the ramifications of going unsupported, here’s how to fix the problem.
- In the CRMWeb\CS\cases\ folder on your CRM server, locate the file dlg_closecase.aspx
- Using Visual Studio, Notepad, or any text editor of your choice, edit this file.
- Find the statement if (typeof(LOCID_CONFIRM_ACTIVITIES)!="undefined") statement
- Directly below this statement, comment out the lines alert(LOCID_CONFIRM_ACTIVITIES); and window.close();
- Save the file.
Your modifications should look something like this.
if (typeof(LOCID_CONFIRM_ACTIVITIES)!="undefined")
{//alert(LOCID_CONFIRM_ACTIVITIES);
//window.close();
}
Now, when when you select Resolve Case from the Actions menu, you get to fill out the Case Resolution form without the warning. When you click OK to save your information, the “Close” event is fired, and the plug-in works as expected.
This posting is provided "AS IS" with no warranties, and confers no rights.
Laughing Boy Chestnuts Pre-School
Ministry of Lost Souls…
A question came up recently from a customer who wanted to use the “Address Book”, “Task/Contact/Calendar Synchronisation” and “Track In CRM” functionality from the CRM Outlook Client, but avoid using the CRM navigation folder and so forcing their staff to use web client. They wanted to know if there was a supported way to hide or remove the whole Outlook Client Navigation.
Unfortunately you can’t simply delete the Microsoft Dynamics CRM folder (a Custom MAPI Message Store) from Outlook as this will disable all CRM client functionality.
However, you can customise the SiteMap XML configuration file by specifying Client='Web' for each SubArea element. That way, you will only see the top level "Microsoft Dynamics CRM" folder in Outlook, with no subfolder. I just tested this in my demo environment, and you can see the results below. The best part is that this is a fully supported solution.

This posting is provided "AS IS" with no warranties, and confers no rights.
Laughing Boy Chestnuts Pre-School
Deep In The Motherlode…
As part of my development work I sometimes need to test applications using both IFD and Windows authentication on my Virtual PC demo environment. However, looking through the various blog posts here and here, it seemed that no-one had come up with a solution to be able to run both authentication models side-by-side when the CRM client and CRM server are on the same virtual machine. After a couple of days playing around with various network settings, DNS entries and the IFD Configuration Tool, I stumbled upon the magic configuration that enables this to work.
I tend to build my own Virtual PC images (my current environment is 32-bit Windows Server 2008 SP2, SQL Server 2008 SP1, SharePoint Server 2007 SP2, Visual Studio 2008 SP1 and CRM 4.0 Update Rollup 4), and I use a variation on the two network adapter configuration that Menno described recently in his blog – You can get details of this configuration from my May 2006 blog post here.
STEP 1 – Set up a second static IP address on the same subnet as your primary IP address. You can do this by opening the network adapter properties, navigating to the Advanced TCP/IP Settings page and adding a second IP address. In this example, my primary IP address is 192.168.0.1 with subnet mask 255.255.255.0, and my second IP address is 192.168.0.2 with the same subnet mask.
STEP 2 – Add a couple of additional DNS Server entries. In this example my server name is “server” and my domain name is “demo.com”, and I access CRM through the URL http://server:5555/orgname. When using IFD authentication, I decided I wanted to use the URL format http://orgname.crm.demo.com so I needed to create three new entries in the DNS Manager console.
- In the “demo.com” domain, create a new child domain called “crm”
- In the “crm.demo.com” domain, create a new host (A) record with a blank hostname and IP address 192.168.0.2 – this allows you resolve the address “crm.demo.com”, and you can test this works by opening a command prompt and running the command “Ping crm.demo.com”.
- In the “crm.demo.com” domain, create a new host (A) record with a hostname of “*” and IP address 192.168.0.2 – This allows you to resolve any address in the “crm.demo.com” domain. You can test this works by opening a command prompt and running the command “Ping orgname.crm.demo.com”.
STEP 3 – Install and run the IFD Configuration Tool
- Selecting “IFD+On Premise” as the authentication strategy.
- Add the IFD internal network address 192.168.0.1 and subnet mask 255.255.255.255 – It is really important the you use 255.255.255.255 subnet mask, since this means that IFD will work from our second IP address.
- Select “crm.demo.com:5555” as the IFD App and SDK root domains.
- Select “localhost:5555” as the AD App and SDK root domains. Unfortunately I haven’t been able to get this to work when using “server:5555” as the root domain.
That’s it, and you should be good to go – obviously you need to use your own IP address ranges and DNS domain names, but the principle is the same. As you can see below, I can access my CRM org “Microsoft CRM” using either method, simply by typing in a different URL.
URL http://localhost:5555/microsoftcrm for Windows Authentication
URL http://microsoftcrm.crm.demo.com:5555 for IFD authentication:

This posting is provided "AS IS" with no warranties, and confers no rights.
Laughing Boy Chestnuts Pre-School
The Glass Prison…
I just did a quick scan of the latest downloads from http://www.microsoft.com/downloads and noticed that the CRM team have just released Update Rollup 4 for CRM 4.0 which you can download from here.
It’s good to see that we are sticking to the predictable, 8-week, update rollup schedule outlined earlier this year on the CRM product team blog.
This posting is provided "AS IS" with no warranties, and confers no rights.
Laughing Boy Chestnuts Pre-School