Skip to content

Here is an updated list of available CRM 2011 downloads. It is good practice to have these files on a portable drive but it’s also recommended to have an updated list of download links.
Server: http://www.microsoft.com/download/en/details.aspx?id=27822

Outlook Client: http://www.microsoft.com/download/en/details.aspx?id=27821

Language Pack: http://www.microsoft.com/download/en/details.aspx?id=27819

Email Router: http://www.microsoft.com/download/en/details.aspx?id=27818

Report Extension: http://www.microsoft.com/download/en/details.aspx?id=27823

SharePoint List: http://www.microsoft.com/download/en/details.aspx?id=5283

Software Development Kit: http://www.microsoft.com/download/en/details.aspx?id=24004

Implementation Guide along with additiional Planning Tools: http://www.microsoft.com/download/en/details.aspx?id=3621

Update Rollup 5: http://www.microsoft.com/download/en/details.aspx?id=27820

iOS 5

Oct 17

Terribly sad news: Apple founder and CEO Steve Jobs has died at the age of 56. Steve was one of the most remarkable entrepreneurs and inspirational leaders in history.
His death is a tremendous loss, not only to the company he founded and built, but to the country and to hundreds of millions of people around the world. Along with everyone else who has  benefited from Steve’s amazing life, we are deeply saddened by this news. Our thoughts go out to Steve’s family.

“Apple has lost a visionary and creative genius, and the world has lost an amazing human being. Those of us who have been fortunate enough to know and work with Steve have lost a dear friend and an inspiring mentor. Steve leaves behind a company that only he could have built, and his spirit will forever be the foundation of Apple.” (Apple Team)

R.I.P. Steve Jobs!

One of the best CRM platforms, by Microsoft, with Romanian Language pack. Here’s a sneak preview, of the Active Accounts, with sample data:

 

Microsoft Dynamics CRM 2011

My new personal blog is up and running. Enjoy reading random thoughts :)

Long story short, this article teaches you how to easily implement skinning and language modules for Windows Presentation Foundation (WPF).
To download the main xaml for WPF and the associated C# class, click here.
All the required dll files can be downloaded by clicking here.
For the required Skin Manager and Language Manager source files, click here.
For the required Skins and Languages resource files, click here.
And the last very last thing you  need for this to work, is the Transitions.cs class.
Based on all of the above, the final output should be something like this:

 

Preview

 

Also, in CWS.Controls.dll you can find a primary version of a custom configurable DateTimePicker. Good luck and have fun implementing / using this for your own projects. I’m up answering any question regarding this article.

To download the full project, click here.

Thank you

Aug 24

A very special thank you to all the people supporting me during this period, especially the xRM team and my employer!

Dear all,

I’m glad to announce you that our staff has a new award: Microsoft Community Contributor:

Thank you all for your support and encouragements.

The solution applies for CRM 2011 Beta, RC, RTM and RTM (with Rollup 1): http://social.microsoft.com/Forums/en/crm/thread/1b164a2f-d2a2-4a6a-813e-716c8771ee78

Hello,
Unfortunately, if you want to use the sharing dialog in an IFrame, you’ll receive several errors (most of them regarding _a.length object).

To solve the issue, you can try the following workaround. It’s not supported, but it’s safe. Still, I recommend you backup any file before modifying it.

Go to %programfiles%\\Microsoft Dynamics CRM\\CRMWeb\\_grid\\cmds and edit the dlg_share.aspx file with administrative privileges (so you can overwrite it).

We’ll alter the window.onload() function and the acceptchanges() function (this one is called when the OK button is clicked).

And here’s the code:

 // Custom code - Variables 
var sharingEntityType = -1; 
var sharingEntityId = null; 
// End of Custom code
function window.onload()
{
...
 
// Custom code - IFrame Sharing Record Support
// Check if the passed ids array is null or undefined
if(_a == null || _a == undefined) {
	// Define the ids array
	_a = new Array();
 
	// Get the record id and store it into the array
	//_a[0] = parent.document.crmForm.ObjectId; // CRM 4.0
	_a[0] = parent.window.Xrm.Page.data.entity.getId(); // CRM 2011
 
	sharingEntityType = _iObjType;
	sharingEntityId = _a[0];
}
// End of Custom code
 
...
}
function applychanges()
{
...
 
// Custom Code
if(sharingEntityType != -1 && sharingEntityId != null)
{
	// Set the Record URL to be reopened 
	// Refresh will be somehow simulated. 
	// A better refresh version, in which the closeWindow() method won't do whatever it wants is yet to come ;)
	var entityURL = "http://" + parent.window.location.host + "/Novensys/main.aspx?etc=" + sharingEntityType + "&extraqs=%3f_gridType=" + sharingEntityType + "%26etc=" + sharingEntityType + 
 
"%26id=" + sharingEntityId + "%26rskey=47983894&pagetype=entityrecord";
	window.open(entityURL, "CRMEntityPopup", "status=0,toolbar=0,scrollbars=0,resizable=1");
}
// End of Custom Code
}

To download the full dlg_share.aspx file, click here.

Here are two Media Players you can use in your WPF projects:

Video Player

Video Player
***
Video Player

 

Audio Player

Audio Player

And here are the most expected links:
Video Player & Audio Player Demo
Video Player & Audio Player Source Code

The 3D SoccerBall model for WPF can be placed in a transparent window, as simple as possible, like shown in the following code:

1
2
3
4
5
6
7
8
<window x:Class="SoccerBall.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:cws="clr-namespace:CWS.Media.Media3D.Geometry.SoccerBall;assembly=SoccerBallLibrary"
        Title="BallWindow" ShowInTaskbar = "False" Background="Transparent" AllowsTransparency = "True" WindowStyle ="None" WindowStartupLocation = "Manual" Width="220" Height="240">
 
    <cws:soccerball x:Name="soccerBall" MouseMove="soccerBall_MouseMove" />
</window>

Use the mouse left button to move the ball or the right button to rotate it.
To download a Demo project, click here.
To download the Source Code, click here.

The final output should look like this:

3D SoccerBall Model for WPF

To generate a random serial number, based on a given mask, you can use the following code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
// Serial Number Generator
// Generates a random number in a certain interval
function GenerateRandomNumber(min,max)
{
	return Math.floor(Math.random() * (max - min + 1)) + min;
}
 
// Generates a random alphanumberic character
function GenerateRandomChar() {
	var chars = "1234567890ABCDEFGIJKLMNOPQRSTUVWXYZ";
	var randomNumber = GenerateRandomNumber(0,chars.length - 1);
 
	return chars[randomNumber];
}
 
// Generates a Serial Number, based on a certain mask
function GenerateSerialNumber(mask)
{
	var serialNumber = "";
 
	if(mask != null)
	{
		for(var i=0; i < mask.length; i++)
		{
			var maskChar = mask[i];
 
			serialNumber += maskChar == "0" ? GenerateRandomChar() : maskChar;
		}
	}
 
	return serialNumber;
}
 
// Generate a new Serial Number for a given mask
alert(GenerateSerialNumber("00000-00000-00000-00000-00000"));

Starting with this great article, I’ve created a JavaScript Library with several useful functions & methods for CRM 2011, such as:
- CRM Service class to Create, Update, Retrieve, RetrieveMultiple, Delete records in CRM (SOAP based);
- Custom Runtime Advanced Filtered Lookup support;
- Set Lookup Value programmatically support
- Guid Generator
- CRM Form Buttons for CRM 4.0 & CRM 2011
- Date Format prototype
- Dynamic create support for Notes
- Array Contains prototype
- String EndsWith prototype
- Check if the logged-in user has a certain role
- Automatic Dialogs (launch in runtime) support
- much more to come…

You can download the full library here.

Also, here are some examples of how to use it:

// CWS.CRM.Utils.js Examples
 
// Gets all the offers associated with an opportunity
function GetOffersByOpportunity(opportunityId)
{
	try {
		if(opportunityId != null)
		{
			var entityName = 'quote';
			var outputColumns = [new CRMField('name'), new CRMField('quoteid'), new CRMField('closedon')];
			var filters = [new FilterBy('opportunityid', LogicalOperator.Equal, opportunityId)];
 
			var items = RetrieveRecords(entityName, outputColumns, filters);
 
			if(items != null)
				return items;
		}
	}
	catch(err) {
	}
 
	return null;
}
 
// Gets all the offer products associated with an offer
function GetOfferProductsByOffer(offerId)
{
	try {
		if(offerId != null)
		{
			var entityName = 'quotedetail';
			var outputColumns = [new CRMField('quotedetailid'), new CRMField('new_invoicingdate'), new CRMField('productid')];
			var filters = [new FilterBy('quoteid', LogicalOperator.Equal, offerId)];
 
			var items = RetrieveRecords(entityName, outputColumns, filters);
 
			if(items != null)
				return items;
		}
	}
	catch(err) {
	}
 
	return null;
}
 
// Updates certain fields of the offer product
function UpdateOfferProductInfo(offerProductId, newInvoicingDate)
{
	try {
		if(offerProductId != null)
		{
			var entityName = 'quotedetail';
			var fields = [new CRMField('new_invoicingdate', newInvoicingDate.toCRMFormat())];
 
			return UpdateRecord(entityName, offerProductId, fields);
		}
	}
	catch(err) {
	}
}
 
// Copies the opportunity close date to all associated offers
function ComputeOffersCloseDate()
{
	var closeDate = new Date(Xrm.Page.getAttribute("actualclosedate").getValue());
 
	if(closeDate != null)
	{
		try {
			var opportunityId = Xrm.Page.data.entity.getId();
 
			if(opportunityId != null)
			{
				var offers = GetOffersByOpportunity(opportunityId);
 
				if(offers != null)
				{
					var entityName = 'quote';
					var fields = [new CRMField('closedon', closeDate.toCRMFormat())];
 
					for(var i=0; i &lt; offers.Rows.length; i++)
					{
						var offerId = offers.Rows[i].GetValue("quoteid");
 
						if(offerId != null)
						{
							var entityName = 'quote';
							var fields = [new CRMField('closedon', closeDate.toCRMFormat())];
							var updated = UpdateRecord(entityName, offerId, fields);
						}
					}
				}
			}
		}
		catch(err) {
		}
	}
}
 
// Generates supplier order products, for a certain order - supplier combination
function GenerateSupplierOrderProducts(orderId, productId, vendorId)
{
	if(orderId != null &amp;&amp; productId != null &amp;&amp; vendorId != null)
	{
		try {
			var fields = [new CRMField('new_supplierorderid', orderId), new CRMField('new_productid', productId), new CRMField('new_supplierid', vendorId)];
 
			CreateRecord('new_supplierorderproduct', fields);
		}
		catch(err) {
		}
	}
}
***
***
// Launches a Dialog Popup
function LaunchDialog(organizationName, dialogId, objectId)
{
	if(organizationName != null && dialogId != null && objectId != null)
	{
		var url = "http://" + window.location.host + "/" + organizationName + "/cs/dialog/rundialog.aspx?DialogId=" + dialogId + "&amp;EntityName=task&amp;ObjectId=" + objectId;
 
		window.open(url, "AutomaticDialog", "status=0,toolbar=0,scrollbars=0");
	}
}
}

A very handy tool to convert your custom CRM Scripts has been released and can be downloaded from here.

CRM JavaScript Converter Tool

CRM 2011:

// No Constraint
Xrm.Page.getAttribute("field_schema_name").setRequiredLevel("none");
 
// Business Required
Xrm.Page.getAttribute("field_schema_name").setRequiredLevel("required");
 
// Business Recommended
Xrm.Page.getAttribute("field_schema_name").setRequiredLevel("recommended");

CRM 4.0:

// No Constraint
crmForm.SetFieldReqLevel("field_schema_name", 0);
 
// Business Required
crmForm.SetFieldReqLevel("field_schema_name", 1);
 
// Business Recommended
crmForm.SetFieldReqLevel("field_schema_name", 2);

Analytics Plugin created by Web Hosting