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
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:

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

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


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:

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 < 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 && productId != null && 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 + "&EntityName=task&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 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