November 28, 2007

Computer playing random music

Another post that has absolutely nothing to do with CRM. I just gotta share this.

On channel 9 I found this link to the Microsoft's KB article:;en-us;261186

I'm really thinking of installing Windows 95 and crashing the CUP fan. :)

November 22, 2007


I just have to share this. There is a new type of number in .NET Framework 3.5 called BigInteger [System.Numeric.BigInteger]. What is so cool here? Now you don't have to write special code to work with really really really big numbers. This type is infinite, as big as you want (until you run out of memory).

Read more here.

November 15, 2007

Workflow Changes in CRM 4.0


Today I'm going to compare CRM 3.0 and CRM 4.0 workflows:

The web interface is much better designed than the previous one. As I wrote in my previous post, you have more space for description and you can add notes and attach files to the workflows. Moreover you can add a comment to every step of the workflow.

I will say it again. Major improvement was on the workflows in this version. Good job CRM team.


Major change has been made is at the basic workflow properties. No more sales process. Now workflow equals sales process. You can select multiple triggering events for a single workflow. These events are:

  • Create
  • Status change
  • Assign
  • Attribute change (update)
  • Delete

Also you can set if this workflow can be run on demand (manually) and / or as a child workflow. For the update, you must choose which attributes trigger the workflow.



Actions are now called steps. So let's take a look at the actions ... uh err ... steps.

  • Create Activity => Create Record - Not only activities. You can create any entity you want. Set their properties in a form.
    image  image

  • Send E-mail - This action stays. Again more flexible, again a form for new email opens. Templates stay - of course.
  • Create Note => Create Record - Note is actually an entity.
  • Update entity record - Of course, this action stays. In version 3.0 you could update only one attribute, in version 4.0 a form opens and you update any attribute you want.
  • Change status - Not only you can change status to a fixed value, now you can set it to a status of a related entity and even to a status of a previously created task.
  • Assign entity record - Again a major improvement here. Not just to the Manager, User or Queue. You can use any dynamic value of related entities. And there's more: You can assign related records as well. This means that you can reassign previously created task to a different user or a queue.image
  • Post URL - This action was deprecated in version 3.0. There are several reasons I won't talk about them here. No more Post URL for you guys.
  • Run Subprocess => Start Child Workflow - Still here of course, but with improvements. You can start a workflow on any related entities.
  • Stop Workflow - Previously you could define what to do with sub-workflows, but in this version you can just stop it and set the status of the workflow to Completed or Canceled. This is kinda logical, since you are starting subworkflows asynchronously and for other entities.
  • Call assembly - What happened to this guy? It is not in the list anymore... Can anyone help me with this? Can you call an external assembly from the workflow?

Some changes have been made on conditions as well:

  • Check condition - This has been divided into three sub-elements: Check condition (if), Conditional branch (else if) and Default action (else). You can add as many else-ifs as you want. And of course you can check the values from related entities as well.
  • Wait for timer - This has been mover to general wait conditions group.
  • Wait condition - As before you can wait for changes in an entity or created activities. Now you can also check related entities. What is more. You can create more wait conditions, that are similar to the if - else if conditions. This is condition is called Parallel Wait Branch. Now you can wait for different conditions to appear and then execute the first one that is met. The others are ignored.
    Timers - Create a wait condition and select Workflow - Timeout. You can use dynamic values as well.


Stages - There is no more difference between Sales process and Workflow rules. You can insert stages into normal workflows as well, although they are not displayed in the entity's status bar.

In Sales processes you can actually look at the workflows that are running on a specific entity and see where they are or what they are waiting for. Notice the green circle.

 image image


The same workflow status is available of you open a workflow from the list of workflows in the Settings area and open the workflow list. Every workflow has a list of all instances that were started. Just open an instance and see the status.



This post has been written solely on my own discovery of CRM 4.0 CTP3. I'm just writing what I discovered. Maybe I missed something. Maybe it is important. Please correct me if I'm wrong.

November 13, 2007

Super duper CRM 4.0 workflows

I must say I'm pleased. A lot has been done on the workflows since version 3.

First of all workflows are now administered in a web client. This had to be done because of CRM Live. But I must say that workflow management is much easier and better.

  • File attachments - now you can attach a file to the workflow. I like it! Now I can attach a Visio diagram to the workflow, maybe some other documentation. There is a lot more space for description. And yes. There are notes too.
  • Availability - You can set the workflow to be run on demand, as well as a sub-workflow.
  • Triggering events - Now workflows support also Delete and Update events. On the Update event you can choose the actual fields that trigger the workflow.
  • Wait for ... otherwise wait for - Did you ever want to branch the workflow based on a condition. Now you can use so called "Paralel Wait Branch" and choose different wait conditions and run the first rule that matches.
  • List of workflows - Open one workflow and see status of all workflows (of this type) that were started.


More on workflows later. Now I have to go home.

November 8, 2007

CRM 4.0 - 4 hours after first 5 minutes

To be clear first: I still think that version 4 is a good improvement and it really is what version 3 ought to be.


This is a list of impressions after 4 hours of playing with new features:

Many-to-many relationships: Yeah! Finally! Yeah! No more "custom connecting relationships". Relationship editor now divides the relationships in 3 groups: 1-to-many, many-to-1 and many-to-many. Great for entities with a lot of relationships. What is missing are attributes on relations. And I couldn't find a way to start a workflow after assigning a many-to-many relationships. Is it really not possible or did I just miss it? I heard that version 5 will dealt with it.

System-to-system relationships: Yeah again! And not only that! You can have more relationships with the same entity.

Self-referential relationship: Yeah again! You can relate entity to itself.

Multi tenant support: From developers point view I thought it was different. I thought that you could manage two sites at once, but as it seems that multi tenant is almost no different than installing another version of CRM. Sites have different metadata, data, ... I admit that it is practical if you want to host CRM for others, but in my case it is almost the same as before. Oh. Another thing that is better: You can have only one login for multiple organizations. Good post about this if from Mr Dave.

Reporting architecture: Because CRM went from intranet to Internet, there is no direct access to the SQL Report server. This eases up the configuration of the servers because of the impersonation things. Now the CRM server requests the report from the SRS directly with CRMAppPool credentials (e.g. NetworkService) The SQL Report server has add-in called CRM data connector which supports use of filtered views. Then the intermediate report is sent to the CRM server, that displays the report to the user. Now it is a CRM server, who actually allows viewing the report to the user. In version 3 this was a SRS thing. A good post about this is here.

Advanced find: You can actually display columns from related entities! Now you can, let's say, see a phone number of the primary contact in the account list. Way to go!

Mail merge: Finally you don't need outlook to perform a mail merge.

Duplicate checking: I'll say better than nothing, but it could be better :)  You can define fields that are checked if there is a duplicate. You can say how many first or last letters define a duplicate and that's it. MS could actually implement some additional methods. Soundex is actually implemented in SQL server (but it is not very good). In my applications I use the following methods: Double metaphone (sounds-like algorithm better that Soundex) and Levenstein distance (detects typos). Yes. I know that you could implement it by yourself, but hey! Why not get it out of the box? First you could run a double metaphone check and then do a Levenstein difference on the results.

Import data wizard: Now supports most record types. Good thing is that it automatically maps picklist values with display values. No need to know the actual values of the picklist options. You can reuse mappings - a good thing if you have a constant import process in your company. Duplicate detection works when you are importing things. And you get an email when the job ends.

Typing in lookup field: Now this is a neat feature. Now you can type in a value in a lookup field. After losing focus, the value is checked and if the value is OK, it becomes underlined, otherwise it turns to RED. Great functionality.

November 7, 2007

CRM 4.0 - first 5 minutes

I finally had time to take a look at it. The CTP version. Virtual PC image is almost 8GB big and needs slightly more than 1GB of RAM.

Just a quick look for 5 minutes - I'm satisfied.

Workflows are now designed in web client, they support update (you can choose columns) and delete actions.

Duplicate detection - not perfect, but still better than nothing.

User interface - better looking, but still some icons missing

Multiple languages - Cool feature for exporting and importing the published field names, attribute values, ... for translation purposes

Web services - Now you can download WSDL from web client. I'm not sure if this is really useful feature. Or is it?

Will write more later.

Update: David stressed a good point about downloading WSDL in comments: CRM Live