CRM 4.0 to CRM 2011 Upgrade Error

Last week, while performing a Microsoft Dynamics CRM 2011 upgrade for a customer, we came across an error that caused all of our custom CRM 4.0 plugins to stop working.  As always, before the live upgrade, we performed a test upgrade and everything had worked just fine.  The only difference we could think of was that in the test upgrade, we had not applied any rollups to the CRM 2011 installation and in the live upgrade, we installed update rollup 6.

The error displayed was:

Unable to Process Request.
Message: Could not load file or assembly ‘Microsoft.Crm.Sdk, Version=4.0.0.0, Culture=neutral, PublicToken=31bf3856ad364e35’ or one of its dependencies.  The located assembly’s manifest definition does not match the assembly reference. (Exception from HRESULT: 0×80131040)

After spending a couple of VERY frustrating hours trying to troubleshoot this on our own or find any KB articles or blog posts out there referencing this error, we were no further along.    The plugins had been written for CRM 4.0 of course, but we had verified that everything worked correctly during out test upgrade.

To make a long story short, we started a support ticket with Microsoft and luckily were connected with the right person to help us out with this one.  It turns out there is a known issue with installing Dynamics CRM 2011 and then going straight to Update Rollup 6 (I was told, but have not verified, that if you install Update Rollup 5 then 6, this will not happen.)   At the time of writing this post, the KB article has evidently been written by the Microsoft CRM team, but has yet to be published.  I will update this post with a link when it becomes available.

The issue, it turns out, is that there is a missing re-direct in Rollup 6 which prevents it from handling code written for CRM 4.0.  Luckily, the fix for this is very simple.

  1. Open the CRM web.config file in notepad or similar text editor.  Normally located here: (C:\Program Files\Microsoft Dynamics CRM\CRMWeb\web.config) on your CRM server.
  2. Insert the following lines of code at the very bottom, just before the closing  “</configuration>” tag. Save the file and perform an IIS reset.

“<runtime>
<assemblyBinding xmlns=”urn:schemas-microsoft-com:asm.v1″>
<dependentAssembly>
<assemblyIdentity name=”Microsoft.Crm.Sdk” publicKeyToken=”31bf3856ad364e35″
culture=”neutral” />
<bindingRedirect oldVersion=”4.0.0.0-5.0.0.0″ newVersion=”5.0.0.0″ />
</dependentAssembly>
</assemblyBinding>
</runtime>”

Here is what it should look like when you are finished.

web.config edit

I was able to re-create and resolve this issue in another test environment by Installing Microsoft Dynamics CRM 2011, Installing Update Rollup 6, and following the steps I outlined above.  The fix only takes a few seconds and is actually faster than installing Rollup 5 first IF you know how to deal with it!

Notes from Convergence – 10 great features coming in GP 2013

If you attended Convergence last month, as I did, you certainly heard a lot about the enhancements that are going to be available in the next GP release – GP 2013 (affectionately referred to here as – the release formerly known as GP 2012).  While a major focus has been placed on the new web-based user interface, there are also lots of other great features being added to the core product.  I wanted to run through a few of the enhancements here, not in any particular order.

1. New web client

There’s no denying this is a major focus of the new release.  The new web client is being built on Microsoft’s Silverlight framework, and will provide browser based access to Dynamics GP over a secure connection.  It can co-exist in your environment with the desktop client, providing a way for remote users to access GP without the need for a Terminal Services architecture.  It’s still under final development, so I’m sure we’ll hear a lot more about it as it gets closer to release.

2. Ability to select a printer at the time of print

This one may have actually gotten the most audience response when it was presented…  You’ll now be able to choose your printer at print time, just like you do with other Microsoft products.  How novel!

3. Ability to print SQL Server Reporting Services (SSRS) reports directly from GP forms

In addition to selecting your printer at print time, the RS reports will be available from within the GP forms, just like the current Report Writer reports, freeing you from waiting for your browser to load Report Server.  This is all pointing towards Report Writer being replaced with SSRS for rendering the printed reports.

4. Mass Depreciation Reversal

For you Fixed Asset users – if you make a mistake and depreciate a large volume of assets, and need to back out your error, you will no longer have to back them each out individually.  GP 2013 will offer you the capability to perform a mass reversal of the depreciation, all at once.

5. Inventory Reason codes

This includes the ability to define a standard set of reason codes that can be applied to an inventory transaction as it’s entered.  By capturing the various reasons for a transaction, metrics can be generated and analysis performed to get a better handle on the various “why’s” behind your inventory transactions.  For example… what are the reasons that we are scrapping material?

6. Business Analyzer on the Home page / Customizable Area pages

This was one of the cooler features I saw at Convergence (which unfortunately lends itself much better to live demoing!).  But, with the ease of drag and drop, I saw the Key Metrics from Business Analyzer being moved around and resized on the GP Home Page (both in the web and desktop client!).  It really made those metrics jump out at you when you landed on your Home Page.  Furthermore, the Area pages could be similarly moved around and customized, instead of being a static list of application options in the collapsible “window panes” as it is in GP 2010.

7. Tolerance Handling for PO Receipts

For Purchase Order receiving, you will be able to set Tolerance Levels for quantities being received.  If you set up a tolerance level, any quantities not received but within the tolerance limits, can be cancelled from the Purchase Order. You can choose to set this up to occur automatically or be prompted.

8. Sub Ledger Reconcile – BR to GL

Worried about your checkbook balance and GL cash account not matching?  This new option will attempt to match Bank Reconciliation and General Ledger records on transaction source, date, and amount and will report matched transactions, unmatched transactions, and potentially matched transactions, with the capability to drill back to the document and/or journal entry.  This is in alignment with the reconciliation options currently available in Payables and Receivables Management.

9. Bank Administration Institute (BAI) format for Electronics Fund Transfer (EFT)

If you are not using GP’s EFT capabilities, and the holdup was due to no support for the BAI standards, fear no more.  In GP 2013 the capability to set up an EFT file based on BAI standards will be included.

10. SOP/POP Drop Ship for Serial/Lots

Need the ability to track serial/lot numbers from vendors on drop ships?  This feature will allow users to enter the serial numbers for any product being drop-shipped, unlike current released versions of GP.  And, if you have a SOP invoice linked to a PO, the Serial/Lot will come across onto the SOP invoice.

There are many more enhancements slated for the core product beyond what I’ve listed here.  One of the slides I saw indicated “100+” features being added to the core product!  These are just some of the ones that caught my eye.  (Of course, content is always subject to change until we see the actual release.)  We will continue to keep you posted as we hear more about “the release formerly known as GP 2012”!

Technology Roadmaps – It’s not a GPS device.

Technology Roadmap…

As I consider the term “Technology Roadmap”, I begin to think about what that term could mean.  Is it part of a research and development process for designing new products or processes?  Or, is it collaboration among countries to develop the means to integrate like-technology for a common goal?  Or, is it used by NASA to identify a wide range of pathways to advance the Nation’s current capabilities in space?

Truth is… it’s all of the above and more.  Technology Roadmaps, originally developed by Motorola in 1987, were a way to provide business managers a comprehensive assessment of their technologies and everyone else a long-range perspective of future product needs.  Since that time, Technology Roadmaps (TRs) have been used in various forms of business to provide a framework around the management of technology improvements.

A quick Internet search provides a plethora of information about how various organizations from software developers, to foreign countries, to NASA have adopted the use of TRs within their respective industries.

At Pinnacle, we have adopted the Technology Roadmap to use as a tool in managing customer expectations to meet their goals and objectives.  The TRs are the result of a collaborative effort between the customers’ team and Pinnacle.

Following in-depth meetings (whiteboards) where the customer and Pinnacle discuss, identify and document the technology goals and objectives for the up-coming year, the TRs are created.  The Pinnacle Account Manager will create the TR in a 90-day, 1-year and 3-year (as applicable) timeframe.

During the course of the timeframe, the Account Manager will update the TRs as the projects move from initiation to completion.  The TRs keep both the customers’ and the Pinnacle teams’ expectations of project completion on the same page.

The Technology Roadmap offers a snap-shot of the future technology projects to assist in making key business decisions such as resource allocation and budget commitments.

How to Spend Money

With a title like that, many of you are likely thinking that I will be authoring a biographical article about my wife.  However, that is not the case.  What I would like to discuss are some different “styles” of spending specifically related to IT Hardware and Software.

In the past, it was common for companies to have a very sporadic spend style.  For example, a Company may desire to purchase a new ERP Software system – that required updated Hardware, so they would go to their Management / Board of Directors and ask for approval to spend up to $100,000 on the project.  The Board (with much deliberation and stress) considered the request and would ask if this was a one-time spend, or if it was going to have recurring annual costs to the Company.  It was typical that the response would be that it was a “one-time” spend item.  Then the Company would try to go 3 or 4 years without spending any additional money on IT Hardware or Software.  After 4 years, the computers would get slow or breakdown and then another Capital Spend request would be sent to the Board asking for a very “material” amount of money so that all of the equipment could be replaced.  Then the realization set in that the new hardware would not be compatible with the old software – so now a software upgrade was necessary – which made the spend request even higher.  This was greeted with much tension and stress again because of the amount of money being requested.

Due to the weak economy of the last few years, many of our clients have become more “budget” driven and the above sporadic spend style has fallen out of favor.  Most businesses are looking for a more consistent spending style, which is more in line with budgeting concepts.  Below would be an example of the transition that we are witnessing:

Spend Style 2009 2010 2011 2012 2013 TOTAL SPEND
Old-Sporadic $100,000 0 0 0 $75,000 $175,000
New-Balanced $35,000 $35,000 $35,000 $35,000 $35,000 $175,000

This new style of spending makes so much more sense, and is much more reflective of the way almost ALL of the other expenses of a Company are managed.  For example, if the “Sporadic” way of investing made financial sense, why don’t we just pay all of our expenses for the next 4 years with a check today?  Another benefit of the balanced spend style is that in many companies, a financial threshold is established for items that require Board approval.  If that amount is $50,000 for the fictitious Company described above, then no one will ever have to approach the Board again and ask for money.

We are working with many of our clients to develop formalized “Technology Roadmaps” that manage the spend process for the future – can we help your Company do the same?

File Server Resource Manager

Since Windows Server 2003 R2, there has been a hidden gem called the File Server Resource Manager (FSRM) and I’d like to take a few minutes to talk to you about it.

Even though the FSRM has been around for a while, it is still widely unknown.  So, what is so great about this obscure tool? Well, I’m glad you asked. With this tool you can:

  • Create quotas to limit the space that is allowed for a volume or folder, and generate e-mail and other notifications when the quota limits are approached or exceeded.
  • Generate and apply quotas automatically to existing and new subfolders in a volume or folder.
  • Create file screens to control the type of files that users can save, and send notifications when users attempt to save blocked files.
  • Create quota templates that can be easily applied to new volumes or folders.
  • Schedule periodic storage reports to help identify trends in disk usage.
  • Create scheduled tasks that apply actions to subsets of files.
  • Create File Expiration dates (well they are really Tasks).
  • Generate storage reports (my personal favorite).

Before you can get started, you need to get FSRM installed. In server 2008 and 2008 R2 you can add the FSRM by launching the Server Manager. In most cases, the FSRM isn’t installed, so you’ll want to install it by clicking the Add Role Services.

While adding it, you’ll come to the Set Report Options Screen where you’ll want to configure where you save the storage reports and where to email the reports once they are generated.

Once you have the FSRM installed, you’ll see it in the Server Manager under Share and Storage Manager.

There are so many things you can do with this tool that I can only touch the tip of this mighty iceberg in this post. With that said, I’ll walk you through the Storage Reports tool and then let you spend some quality time getting to know this new friend on your own.

As you can see below, I’ve highlighted the Storage Reports Management in the Left Pane, in the far Right Pane, I clicked the “Generate Reports Now…” link which launched the wizard in the middle.

I’ve chosen to Add C:\ as the scope since I’m not doing any file sharing on the Exchange server in my lab. If I were working in a production environment, I most certainly would have had file shares that would have Quotas enabled on even if they were not enforced.  Here in my lab, things are very exciting when it comes to users files so I checked all the check boxes for reports and looked though them.  Here are some of the highlights:

This first one is Duplicate Files and even though this is just an Exchange Sever in my Lab, I was surprised to find Duplicates but there they were 4GB of them.

This second shot is of Large files:

And this last one is of the File Owners:

I’m certain the reports you’ll generate will be a lot more exciting than the ones from my Lab.

Hope to see you here soon!

Coupling and Cohesion: An SOA Challenge

Cohesion and coupling are two fundamental concepts in software development at least since Stevens, Myers and Constantine published their seminal article “Structured Design” in 1974.[1] Since then, however, there has been a great deal of metamorphosis, metastasis and other alterations to the basic definitions depending upon the context and the application.

Stevens, et al. defined coupling as “the measure of the strength of association established by connection of one module to another.” In the context of most current Service Oriented Architecture implementations, this is defined by the association between the services that make up the application itself. Since loose-coupling is often viewed as one of (if not the) fundamental values Service Oriented Architecture (SOA) brings to the enterprise, it is somewhat more well-defined in the SOA context than cohesion.

Applying the principles of high cohesion to SOA is not so readily apparent, but one way to understand it is through its relationship to coupling. Cohesion is usually described through variations of the list originally defined in “Structured Programming” [2] and consist of six or seven levels of increasing cohesion[3] from Coincidental (no significant or discernible relationship between elements in a module) to Functional (elements of a module are grouped together because they all contribute to a single well-defined [and described] task).

In the realm of SOA the same cohesion principles still pertain, but they need to be applied in new ways. There are three different aspects to achieving functional cohesion in an SOA which we suggest should be divided into two categories—“particular” cohesion on the one hand and a “holistic” cohesion on the other. Particular cohesion mirrors the way architects have thought about cohesion for years, while holistic cohesion is more of a reflection of the unique nature of SOAs.

Particular cohesion is an application of the principle of cohesion to services themselves in a manner typical to how it is applied to objects. There are two types of services to which this form of cohesion applies:

  • Atomic services
    • Atomic services are the single grains in overall granularity of services. They are the smallest, business-oriented service that is required. Such a service might be a GetProductName or GetInventory service.
    • This is roughly equivalent to the OO Single Responsibility Principle.
    • It also supports the principle of service autonomy.[4]
  • Composite services
    • A composite service should also do “one thing” even though it may access many other services
    • This technically violates the principle of autonomy, but per the definition of functional cohesion in which “occurs when a routine [service] performs one and only one operation,”[5] from a business perspective and SOA perspective a CheckOrder service that utilizes a ProductCatalog service, a Customer service and an OrderRetrieve service is serving a functionally cohesive role.

Holistic cohesion is an animal of different species within the same genus of cohesion. It is an effort to ensure that consumers (applications, other services, etc.) that are communicating with a service maintain cohesion through the vehicle of the message, even though the services themselves are loosely coupled. In order to achieve the goals of reliability, re-usability and understandability, services need to be able to communicate efficiently; improving that efficiency is the purpose of holistic cohesion.

In order to achieve this, the messages themselves must provide the “glue” that makes such cohesion possible. The list below provides examples of how holistic cohesion could be achieved in the context of web services from the least cohesive (1) to the most (3).

  1. Sending un-typed or generic messages impedes that efficiency and limits cohesion.
  2. Utilizing messages with explicit internal relationships (i.e. .xml files with internal relationships between data elements defined by an .xsd) improves the cohesion between services without adding additional coupling.
  3. One of the highest forms of inter-service cohesion is to utilize known business entities described by .wsdl and .xsd with internal relationships between data elements fully described. These entities themselves should be “functionally” cohesive.

The use of business entities ensures that composite services, such as those in the CheckOrder example above, maintain their semantic “sameness,” despite loose-coupling.


[1] W.P Stevens, G.J. Myers, and L. L. Constantine, IBM Systems Journal 13(2): 115-139, 1974.

[2] Along with later works such as Steve McConnell, Code Complete, 2nd Ed. (Redmond: Microsoft Press, 2004), 168-171.

[3] In this context “module” refers to a defined entity such as a class, routine, etc. while “elements” refers to methods, subroutines, etc.

[4] John Evdemon, Principles of Service Design: Service Patterns and Anti-Patterns, (MSDN Solution Architecture Center, 2005) http://msdn.microsoft.com/en-us/library/ms954638.aspx .

[5] McConnell, 168.

The importance of the free Office 365 for Education.

Over the last couple of months and even weeks, we have seen how competitive the push for “the cloud” has gotten.  From Amazon making changes to Microsoft adjusting pricing for Azure.  Well, Office 365 has been no stranger to those adjustments, even more so if you are in the Education Sector.

I have strongly believed for the last number of years, when my involvement in the SharePoint community increased, SharePoint would make a great platform for Education.  Students are working with homework, pushing those documents out to teachers, and perhaps having research worth sharing with other individuals within the school corporations.

Now, for the free part, it is focused on students, faculty and staff.  That, in a nutshell, gives you Office Web Apps (a version of the Microsoft Office tools such as Excel, Word, OneNote and PowerPoint, hosted in Office 365, with no need for a client download), Lync, SharePoint Online and Email.  To me it sounds like a great tool-set.  There are other plans and tiers, but those will come at a cost, but even then the cost does not go past $6.00/month.  For more information, see the link: http://www.microsoft.com/liveatedu/learn-about-office-365.aspx?locale=en-US&country=US

If you are an Education Sector Organization in K-12 specifically, talk to us.  Let’s work together in bringing in a great solution to back your great efforts in shaping our nation’s future.