Mitch Milam's Dynamics CRM Discussions

Knowledge found and lost while working with Microsoft Dynamics CRM
RSS icon Home icon
  • Working with Azure Queues: Learning things the hard way.

    Posted on January 20th, 2010 mitch Print Print No comments

    There are times when I do something so stupid that I feel the need to share with everyone, just to reinforce the point that I don’t need to do it again. :) 

    Today would be one of those days.  Here is what I did:

    I was working on my new web site which uses a Windows Azure Queue as a Message Processing System.  Basically I drop a specifically formatted string into a queue and a Azure Worker Role retrieves the message and processes it based on the contents.

    I was adding a new message type today it it wasn’t being processed.  Not because the message wasn’t being decoded properly, because the message was never being seen.

    What the heck, over?  It’s worked for the past two weeks, what would make the messages just disappear from the queue or maybe not be added?

    Well, after wasting about 30 minutes tracing the message through the system, I realized what I was doing wrong ( and where the stupid part comes in ).

    Since my site is still under development I haven’t broken the internal mechanisms into Development and Production versions.  I do, however, have Development and Staging version of my application running on Azure.

    And that was the problem.

    I was running my site locally but pointing to the Cloud instances of my storage.  Every time I placed a message in my queue, either the Production instance or the Staging instance would see the new message and process it.  The last part of processing involves deleting the message from the queue.

    Since two other instances of my site were running, by the time my local instance woke up to look at the queue contents, one of the other instances had already processed it.  This made me think things were not working.

    Anyway, note to self: Make sure the instance of the application you are working on is in sole control of any assets required to properly build and test it

    Azure, Development
    1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
    Loading ... Loading ...
    241 views
  • CWR Mobility Ships Clients for Microsoft Dynamics CRM for BlackBerry, iPhone and Windows Mobile

    Posted on January 20th, 2010 mitch Print Print No comments

    CWR Mobility has released version 4.2 of its flagship product CWR Mobile CRM which includes a native mobile CRM client for BlackBerry and iPhone.

    Read the full article here.

    Dynamics CRM, Mobile
    1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
    Loading ... Loading ...
    310 views
  • Using Workflow to Create Marketing Lists

    Posted on January 19th, 2010 mitch Print Print 4 comments

    One of the more obscure facts when working with the CRM 4.0 workflow engine is the ability to actually create a marketing list.  Actually, you can create records for almost any entity, but I always found it interesting that Marketing Lists were on that list.

    So why would this be useful and how would you use it?

    That’s the question I have been asking myself for quite some time and to be quite honest, I really didn’t have an answer until a couple of weeks ago.  Here’s what I’m doing:

    The Scenario

    I am starting a new venture which involves providing Internet-based training for CRM users.  The training will be broken down into courses and lessons – pretty standard stuff.

    I decided that I would like to have a marketing list for each course so that I could communicate with each person who had purchased the course.

    The Solution

    Create a workflow that will automatically create the Marketing List when a new Course is created.  Here’s what the main workflow screen looks like:

    image

    The workflow needs to fire when the Course is created.  I also added On demand so that I could start the workflow manually.

    There is only one workflow step involved, which is the actual creation of the Marketing List record, and I’ve supplied the following fields:

    image

    The name is the Title from the Course.  The Member Type is Contact, since all of my users are Contacts. And finally, the Purpose is just a summary of reason for the Marketing List exists.

    Conclusion

    While it has always been easy to create new records using CRM workflow, I think the use of automatically created Marketing Lists is pretty unique and I hope this inspires you to rethink the use of CRM workflows.

    Finally, you are probably wondering how members of the Marketing List are maintained.  This is pretty simple: When you purchase a course, the code-behind the web site automatically adds you to the Marketing List for the specified course. This means there is zero used-intervention in this entire process.

    Dynamics CRM, Workflow
    1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
    Loading ... Loading ...
    488 views
  • New CRM case study released: Access MediQuip

    Posted on January 18th, 2010 mitch Print Print No comments

    One of my customers is the subject of a new Microsoft case study which describes how the implementation of Microsoft Dynamics CRM has benefited their company.

    I’ve been working with them for almost a year and the amount of “cool stuff” we’ve implemented within Dynamics CRM to help them improve their business is immense and the case study barely scratches the surface.

    You can find the case study here:

    http://www.microsoft.com/casestudies/Case_Study_Detail.aspx?casestudyid=4000006368

    Dynamics CRM
    1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
    Loading ... Loading ...
    308 views
  • New CRM Case Studies

    Posted on January 13th, 2010 mitch Print Print No comments

    Girish Raja has pointed out several CRM/xRM-related case studies that you may find interesting:

    xRM ISV Case Study: CSSI

    xRM ISV Case Study: Spenta

    xRM ISV Case Study: Peak 15 Systems

    xRM ISV Case Study: Client Profiles

    Dynamics CRM
    1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
    Loading ... Loading ...
    251 views
  • Working with Windows Azure Queues

    Posted on January 12th, 2010 mitch Print Print No comments

    Since Windows Azure was only officially released in the past month, you may find a lot of the prior examples do not work because of changes made between the CTP versions and the production version. The StorageClient sample included in the Windows Azure SDK is no exception.

    There are many issues you’ll face getting this working, but the first involves recompiling the StorageClient assembly using the production-level Windows Azure references.

    This article walks you through what’s required to make that happen.

     

    Connecting to Your Production Queues

    One of the biggest problems I faced was actually connecting to the production queues on my Windows Azure Storage instance.  After spending quite a bit of time troubleshooting and browsing the Internet, I realized that StorageClient was looking for the storage endpoints, which you place in your configuration file, in a very specific format. 

    Within your ServiceConfiguration.cscfg file, your role configuration should look something like this:

    <Role name="WorkerRole">
      <Instances count="1" />
      <ConfigurationSettings>
        <Setting name="AccountName" value="myaccountname" />
        <Setting name="AccountSharedKey" value="secretkey" />
        <Setting name="TableStorageEndpoint" value="http://table.core.windows.net/" />
        <Setting name="QueueStorageEndpoint" value="http://queue.core.windows.net/" />
      </ConfigurationSettings>
    </Role>
    

    All you really need to change is the AccountName and AccountSharedKey settings. 

    If you look at your Windows Azure management console, the AccountName is the name of your account as represented in the storage URL ( basically the first word after the http:// ). 

    Note: I’ve not seen documentation on this, but it appears the only accepted format is all lower-case.

    The AccountSharedKey is the Primary Access Key for the storage account.

    The TableStorageEndpoint and QueueStorageEndpoint are the base URLs for your services.  The StorageClient will actually prepend your account name to the base URL to create the proper endpoint.

     

    Connecting to Your Local Development Queues

    It appears that you connect to your local development queue using the following configuration:

    <Role name="WorkerRole">
      <Instances count="1" />
      <ConfigurationSettings>
        <Setting name="AccountName" value="devstoreaccount1" />
        <Setting name="AccountSharedKey" value="Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==" />
        <Setting name="TableStorageEndpoint" value="http://127.0.0.1:10002" />
        <Setting name="QueueStorageEndpoint" value="http://127.0.0.1:10001" />
      </ConfigurationSettings>
    </Role>
    

     

    Final Notes

    I also found the Windows Azure Management Tool (MMC) to be of great assistance when needing to work with Queues.  It also has Blob support, but I’ve been using CloudBerry Explorer for Azure Blob Storage for uploading blobs.

    Azure, Development
    1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
    Loading ... Loading ...
    339 views
  • Exporting data from Excel for Importing into CRM

    Posted on January 11th, 2010 mitch Print Print No comments

    It’s quite common to use Microsoft Excel for the manipulation of data prior to it being imported into CRM.

    I have found that the best format for exporting an Excel worksheet to a .CSV file ( comma-separate values ) is:

    CSV (MS-DOS) *.csv

    This format places extra quotes around string fields and headers and CRM seems to like it much better than the plane CSV format.

    Dynamics CRM
    1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
    Loading ... Loading ...
    299 views
  • Working with Windows Azure and CRM Online

    Posted on January 9th, 2010 mitch Print Print No comments

    One of my new ventures will be run on Windows Azure and store data in CRM Online. This will require that I use the Microsoft.crm.sdk.dll assemblies to communicate with CRM.

    Technically, there are four sets of these assemblies in the SDK:

    • One set for CRM On-premise
    • One set for CRM Online. 
    • 32-bit versions
    • 64-bit versions

    It turns out that Windows Azure is a 64-bit operating system.  Here is how I had to configure Visual Studio to properly generate my new web site:

    Platform Target

    This needs to be set to Any CPU, which will create code that can be run on either 32-bit or 64-bit operating systems.

     

    Microsoft.crm.sdk.dll Assemblies

    You need to reference the 64-bit assemblies.  Otherwise, you’ll end up with the yellow screen of death and a message about unable to load assembly because of an invalid format.

     

    I hope that helps.  Good luck with your own Azure development

    Azure, CRM Online, Development, Dynamics CRM
    1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
    Loading ... Loading ...
    409 views
  • Happy Anniversary to Me

    Posted on January 4th, 2010 mitch Print Print No comments

    It is really hard to believe, but 26 years ago today, I started my career as a IT professional.  I was attending DeVry University at the time and found a job just down the street at a small company that provided IT services for local businesses.

    Here is the conversation between me and Brook, their other technical guy:

    Brook: I need you to replace a floppy drive in an Eagle.

    Me: Cool.  What’s an Eagle?

    This is an Eagle:

    eagle-III

    Yep.  Then genuine article.  It ran an operating system called CP/M and had two double-sided, double-density floppy drives.

    A step up from there was this monster:

    DMS-server

    This was a network server, again running CP/M and servicing semi-intelligent terminals.  The top box is the server, the bottom, unless I’m mistaken, is the tape backup unit.  The server had a 10 Megabyte hard drive.  The terminal on the left is just a dumb terminal used for server maintenance.

    Things have changed quite a bit since 1984 and the change has not always been for the good.  But, I can honestly say, it’s never been boring.

    Peace out.

    Misc
    1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
    Loading ... Loading ...
    249 views
  • MVP Renewed

    Posted on January 1st, 2010 mitch Print Print 3 comments

    This is always a special time of the year for me because it is when my MVP was awarded and when it renews.

    Today, Microsoft renewed my MVP title for the 4th year.  It is still one of the highest honors that I have ever received and I am in great company.

    Happy New Year everyone.

    Dynamics CRM
    1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
    Loading ... Loading ...
    296 views