Category Archives: Customization

How-to series: Send SMS messages from CRM 2011 (part 3)

Finally! This is the final part of my how-to series on how to send and track SMS messages in Microsoft CRM 2011.

The first post explained how to prepare the solution.

The second post talked about the Web front-end customization.

This last post will explain how to communicate with Clickatell’s gateway to send your SMS messages.

Continue reading How-to series: Send SMS messages from CRM 2011 (part 3)

How-to series: Send SMS messages from CRM 2011 (part 2)

In the first part (see part 1), I explained how a SMS could be better to communicate with your customers and contacts, since it is instantly dispatched on the cell phone.

In this part, I’ll deal with customizing the CRM as to enable this kind of communication.

Continue reading How-to series: Send SMS messages from CRM 2011 (part 2)

How-to series: Send SMS messages from CRM 2011 (part 1)

In a time where the information must be available quickly, there is an alternative to feeds, tweets, walls and emails….this alternative is called SMS, for Short Message Service.

Of course, one can always say that an SMS is the same thing as a tweet with roughly the same text length but who can say that its cell phone is always connected to the Internet? Not me, it is way too expensive here in Belgium!

On the same note, all cell phones can receive basic text SMS messages so this is an interesting alternative to emails and so on.

So in this series, I wanted to focus on a small plugin that would allow any of your customers to be alerted by SMS instead of by email, SMS that should be sent from Microsoft CRM of course Smile

This first part will focus on customizing Microsoft CRM to prepare for the plug-in that I’ll develop on the second part.

Pre-requisites to this series

For this SMS integration to work, you should consider using a Clickatell account ( and their set of APIs to connect to their SMS gateway (APIs available through HTTP, SMTP, SOAP, XML, COM, …)

This company offers 10 free SMS to test your code, then you can buy credits for sending ‘real’ messages throughout the world (I don’t have any acquaintance with them but I find that their site is clear and easy to understand; on the other hand, there are no real C# code samples).


If you need help signing-up with them, please contact me and I’ll try to help you.

How is this series divided?

This series will be divided in 3 parts:

  • Part 1 of 3: Expressing the requirements and creating the CRM solution
  • Part 2 of 3: Customizing the CRM for the new SMS activity
  • Part 3 of 3: Developing the CRM plugin for sending the SMS

Expressing the business needs

Ok, down on the needs now Smile

Let’s assume you want to be able to send SMS to your customers just like you would send an email from Microsoft CRM, how would you that?

Well thankfully, Microsoft CRM 2011 allows you to create new activity types (see previous post New activity types for dummies) so I’ll use this new awesome feature.

Creating the CRM solution

Ok, in this first post I’ll show you how to properly prepare a solution for your SMS implementation but you are free to do as you wish.

  • Make sure you have a backup of your original CRM customizations before you start customizing your system
  • Within Microsoft CRM, create a new solution called SMSMessaging; this solution will host our customizations for the new SMS functionality


  • Open your new solution and add the following entities for now:
        • Account
        • Activity
        • Contact
        • Lead
        • User

OK you’re ready to go…’s very easy for now but stay tuned and watch for the second part of this series, where I’ll show you some cool stuff! Winking smile

CRM 2011: Hide a button in a custom entity’s form ribbon

For all of you who wanted to know how to do this, here are the steps:

  1. Make sure the custom entity is part of the solution you want to export and modify
  2. Export the solution and edit the customizations.xml file
  3. In this file, each entity has its own <Entity> tag so you need to find the one that suits your needs (example: if your custom entity is called new_test, you should look for the node
    <Name LocalizedName="Test" OriginalName="Test">new_test</Name>

  4. In this node, you should see a sub-node starting with <RibbonDiffXml>, which is the node containing the ribbons elements for your particular entity
  5. In this new section, you should only modify the <CustomActions /> node, which is the node containing all the custom actions for the entity’s ribbon: add a new button, hide a button, change the behavior of a particular button, etc.
    1. Under <CustomActions>, place the following code if you want to hide the ‘Save as complete’ button
      <HideCustomAction HideActionId="CA_HideSaveAsComplete" Location="Mscrm.Form.new_test.SaveAsComplete" />

    2. Do not forget to close the <CustomActions> tag after it!
  6. The complete code should look like this:


            <HideCustomAction HideActionId="CA_HideSaveAsComplete" Location="Mscrm.Form.new_test.SaveAsComplete" />



            <RibbonTemplates Id="Mscrm.Templates"></RibbonTemplates>


        <CommandDefinitions />


            <TabDisplayRules />

            <DisplayRules />

            <EnableRules />


        <LocLabels />


After having saved the modified customizations.xml file, compress all the solution files in a new ZIP package and import it back in Microsoft CRM.

Once the package has been published, you should “see” that the ‘Save as complete’ button has disappeared on your entity’s form Winking smile

How-to series: Change activities’ status when closing opportunities

Okay, this post is a response to a good question made by someone on the Microsoft Dynamics CRM forum (for Partners).

The initial question was:

“Hi All,

When an opportunity is cancelled, the activities (tasks, appointments, etc.) are not being flagged as cancelled and staying considered as “open” items. We need to  find a solution that when an opportunity is closed (or cancelled) that all associated activities tied to that opportunity be deleted. Can i automate the above process? I tried using workflow, but i am not able to trigger an Activity record.



A response from Dylan Haskins pointed to a really cool workflow plugin called ‘Distributed Workflow’ and available on Codeplex here.

Continue reading How-to series: Change activities’ status when closing opportunities

How-to series: Generate auto-numbers on custom entities (part 2)

In the first post of the series (see Part 1), I was dealing with the creation of a new entity which can be used to store the autonumbering parameters such as: which entity must get a number, which attribute must store the number, the number length, the prefix & suffix, etc.

Continue reading How-to series: Generate auto-numbers on custom entities (part 2)