Slickgrid is a JavaScript grid component by Michael Leibman. This is a great grid which is very flexible and customizable and very fast to load and display data. Over the next few weeks we will be blogging about Slickgrid in general as well as a few areas in which we have extended its functionality. This blog will address one of those areas where functionality was extended.
I recently came across the need to display pricing information for products and could not find information on a currency column formatter. The raw data returned from my web service displayed the data as 0.0000. So there was no currency formatting ($ symbol) and the decimal precision was returned to four places. I wanted the data to be formatted like typical US currency with a $ and to two decimal places, like this: $0.00. Maybe I didn't look hard enough to find a ready-made solution, but at any rate, I quickly wrote my own currency formatter and thought it might help someone else looking to do something similar.
The column formatting functions for Slickgrid are contained in the slick.formatters.js file. I appended this file with a new function by adding the following bit of code:
function CurrencyFormatter(row, cell, value, columnDef, dataContext) {
if (value === null || value === "" || !(value > 0)) {
return "$" + Number();
} else {
return "$" + Number(value).toFixed(2);
}
}
Additionally, you will need to modify the top section of the script to register the newly created namespace. I added the following code (highlighted in yellow) to the existing function:
(function ($) {
// register namespace
$.extend(true, window, {
"Slick": {
"Formatters": {
"PercentComplete": PercentCompleteFormatter,
"PercentCompleteBar": PercentCompleteBarFormatter,
"YesNo": YesNoFormatter,
"Checkmark": CheckmarkFormatter,
"Currency": CurrencyFormatter
}
}
});
Now when you define your columns in your html page that will display your Slickgrid control, you need to add the following bit of code to the column definition to reference the currency formatting function that we just created above:
columns = [
{ id: "Price", name: "Price", field: "Price", width: 80, cssClass: "cell-title", formatter: Slick.Formatters.Currency }
];
That's it. Now the data shown in the currency formatted column will display as "$0.00", rather than the raw, unformatted data that may be returned in your web service or database call. If the value being evaluated is null, an empty string or an empty object, the data will be rendered as $0. This did the trick for me! Stay tuned for more Slickgrid information in future blogs. Happy coding.

The next major release of Microsoft Dynamics CRM 2011 will be the second quarter of 2012. Currently available is Roll-Up 6 for CRM 2011. This next release will have some major functionality enhancements as part of the release. The primary theme of the release is "CRM Anywhere". This will include but not be limited to:
1. Groundbreaking Mobility (better mobile applicable enabled by CWR technology). This will now be available on many mobile platforms. That being said, there will be an additional fee from MS to enable this new mobile client.
2. Cross Browser Support (Safari Firefox and Chrome) well overdue but happy to have it finally!
3. Enhanced Social Capabilities (leveraging the RU5 What's New area and more)
4. General Enhancements (this includes self-service BI capabilities and more)
You can read all the details in the attached document. This release should be easy to enable and have many nice bells and whistles.
ReleasePreviewGuide.pdf (910.83 kb)
Ah, JavaScript...we all love to hate it. But the fact is that JavaScript is one of the most popular programming languages in the world and its widespread use will continue to grow with the increased use of popular JavaScript libraries like jQuery. It is the language of the web. JScript, Microsoft's implementation (really just a different name) of JavaScript, is an integral part of developing and extending the capabilities of MS CRM. CRM 2011 is particularly geared toward the extended use of JavaScript with the inclusion of web resources and the REST endpoint/Odata web service architecture. The recommended (and provided SDK samples) interaction with the new REST endpoint is with the jQuery library and using JSON formatted data, both of which are JavaScript based.
Given this popular and ever growing use, there are a few (many actually) things that should be taken into consideration when writing JavaScript code. Douglas Crockford provides an extensive and in-depth discussion of these items in his book "JavaScript: The Good Parts". I would highly recommend this book for anyone who works with JavaScript frequently. One of my favorite quotes from the book is this:
"The amazing thing about JavaScript is that it is possible to get work done with it
without knowing much about the language, or even knowing much about programming."
But this ease of use doesn't necessarily mean that the code will be consistently reliable or will be using best practices. This is very true with its use in MS CRM...there is plenty of information available on the web and just about anyone can copy-n-paste a code snippet or two and bam you are programming! But there are risks with proceeding this way, as there are many code samples out there that may not be written with best practices in mind. To help mitigate this risk, I would like to discuss a couple easy items that can help clean up your JavaScript and may save time troubleshooting and tracking down mysterious issues.
Here's a couple key points that I'd like to talk about to get you started with better JavaScript code:
- Declaring variables, not using the var keyword
Common practice (at least sometimes):
Best practice:
- var myVariable = "Jerry";
Why: JavaScript lets you use a variable even when you have not explicitly declared it. However, this makes the variable a global variable, which means that it is accessible to the program outside of the scope in which it is being used. This can easily lead to naming conflicts and unintentional reassignment of a variable's value. Bottom line: always declare variables with the var keyword.
- Placement of curly braces {}:
Common formatting, especially for C# users, is to format a statement like so:
If (test)
{
//code here
}
Best practice:
If (test) {
//code here
}
Why: JavaScript will try to automatically correct and insert semicolons where it thinks they belong. In certain situations, this can yield incorrect results, like when trying to set an object's value and it is inadvertently turned into a statement when a semicolon is automatically added.
- Testing for equality and inequality
Common practice:
- != to test for inequality
Best Practice:
- !== to test for inequality
Why: When testing for equality or inequality, if the operands (the objects being compared) are of a different type, then == may yield incorrect results in certain instances. For example, ' ' == 0, will return true, when in fact it should be false. The === will correctly return false. Bottom line: use === and !== instead of == and !=.
Yeah, I can hear it now…"these things are so uncommon that they're not even worth talking about". But, like constructing a good building, its better to start with a strong foundation than to continue building upon minor mistakes, which over time may cause it to collapse. And furthermore, if the JavaScript guru Crockford says it’s a good idea, well, then I will faithfully follow in pursuit! Happy coding.
The Need
Our client already deployed a very robust set of solutions to run all facets of their business including manufacturing, distribution, sales, marketing, and customer care. These systems supported hundreds of employees in multiple facilities as well as having deployments in multiple countries.
Our client was seeking a new solution to address their current issues including:
· The need for a faster way to locate the caller within the multiple enterprise application databases. This occurs thousands of times on a daily basis.
· There were too many applications open on the User’s desktop to perform daily tasks with copy and paste happening constantly between applications
· One dynamics screen to perform all operations from
· Cases management was executed with heavy reliance on Email communication within various departments
· An easy way to report Case life cycle history for all Customers which was less labor-intensive
· Capitalize on the capabilities in the latest and greatest CRM solutions in the marketplace today
· Remain on the Dynamics CRM platform to capitalize on the seamless integration to other Microsoft technologies
· A more streamlined and efficient process for customer issue resolution
· A solution which could be easily deployed and maintained in multiple countries
Research was conducted to examine various CRM solutions available including both salesforce.com and Microsoft Dynamics CRM. In the end, our client selected Microsoft Dynamics CRM due to functional footprint, the cost of ownership, and integration to various other Microsoft applications the company already had in place.
The Toolset
· Deployed Dynamics CRM 2011 on-premise solution to replace legacy Dynamics CRM 3.0
· Use of the CRM 2011 Outlook Client for Outlook 2010
· Deployed the Microsoft Customer Case Accelerator (CCA) framework for CRM 2011
· Used Scribe software for data migration and integration to backend ERP
· CCA integration to Avaya telephony solution
· Integration to SAP ERP for Customer and related Contacts feeding CRM
· SharePoint to allow for seamless integration to client document repository
· Various other Enterprise Applications including BPM
Project Execution Highlights
Some of the work performed during the engagement included:
· Reviewed current Dynamics CRM 3.0 design and future state design for CRM 2011
· Analyzed current business processes and how future state processes would be improved when new technologies deployed
· Reviewed project requirements and incorporated into future design
· Delivered requirements documents definition the blueprint for the build
· Reviewed existing reports and developed future state reporting requirements
· Documented requirements for legacy data migration and integration
· Performed all CRM 2011 configurations
· Authored code and script necessary to meet functional gap
· Authored tests scripts for UAT
· Authored migration and integration jobs using Scribe software
· Authored custom training guide
· Conducted live train the Trainer training
· Participated in Go Live cutover activities to ensure Go Live went smoothly
The entire implementation from initial requirements definition until Go Live took five months to complete. This included building, testing, training, and performing migration of legacy data into the newly delivered solution. Neudesic follows a proven implementation methodology which ensures that the project is delivered both on time and within budget.
The Results
· CRM experience vastly improved using CRM 2011 capabilities
· Inbound calls open corresponding CRM and ERP records whenever possible via integration with Avaya phone solution
· The Customer Care Accelerator allows for robust searching across multiple enterprise applications
· The Customer Care Accelerator strategically opens specific enterprise applications based upon the Process selected and stores data form various screen and uses then to populate CRM 2011 records automatically, thus dramatically reducing keystrokes and Copy/paste actions
· Seamless integration to web sites of Shipping Company websites for easy package tracking
· Greatly reduced the overall time necessary to open and resolve a case
· Improved Reporting Capabilities with automatic report creation based on CRM database detail

Microsoft has published a preview of their Q4 2011 Microsoft Dynamics CRM release. There are many exciting and innovative items in the release. This is a feature release so there will be many items that did not make it into the initial CRM 2011 release. These changes affect CRM Online and On-premise. One undocumented but talked about new feature is multi-browser support for the desktop (NEW UPDATE_ THIS IS COMING Q2 2012). Hopefully this is still part of the release.
Summary of New Features
- Unified Office 365 Experience
- Enterprise Cloud – Identity Federation
- Enterprise Cloud – Enhanced Disaster Recovery
- Feature Enhancements to Dialogues, Business Intelligence (Dashboards) and De-Duplication
- Social Investments: First wave of investments from Microsoft along with a mobile client specifically to view postings (though if you want real Social interaction with CRM check out
- Available today)
To read all the details check out the white paper. (Dynamics_CRM_Release_Preview_Guide_August_2011_FINAL.pdf (873.79 kb))
+
Microsoft Dynamics CRM 2011 and Microsoft Office 365 a compelling argument for the cloud. This eliminates the need for many servers in a companies infrastructure and makes it easier than ever to deploy robust technology quickly, easily and at a low price point. Check out this five minute video to give you a nice overview. CRM & Office 365

There has never been a better opportunity to switch from Salesforce.com to Microsoft Dynamics CRM. Microsoft has announced a "switcher" offer for companies that are still on Salesforce.com switch easy to CRM Online. Not only do you get a world class enterprise-ready system but you can get it with some of your implementations fees paid for. All a company needs to do is go and sign-up for a free 30 day trial and then go to the site to apply for the incentive dollars. $150 off per user towards anything you want to use it for (data migration, training, etc). Minimum 50 seats and two year commitment. For 100 seats for example, you can get $15,000 towards your implementation.
Not to mention the fact that CRM Online is far less expensive than Salesforce.com. CRM Online is only $44/user per month versus Salesforce.com below

For 100 Users, just in the monthly fees, over the two year period, you can save almost $200,000.

By now most should know that Microsoft releases "Rollups" (RU) for CRM server and client side applications. These rollups traditionally called "Service Packs" (SP) by other systems, in the past have been applied in a very manual way. Starting with the release of CRM 2011, updates can now be handled in two ways. One is your traditional manual way on both the client and server-side. A CRM/IT administrator can go the Microsoft download site and download the updates for each component installed. Thus far for CRM 2011 all roll-up components have been cumulative, so all that needs to be done is to install the most recent roll-up. Microsoft has currently released RU3 which can be found here.
Now to the automated way. With CRM 2011, CRM updates (both client and server-side) are done through Windows updates. This makes it very simple to get updates out to users. This automatic update is released approximately 30 days after the release of the roll-up on the Microsoft Download site. This morning for example I received RU3 in my Windows update on my laptop- nice surprise.
I would suggest testing updates once released against your customizations to know if the auto updates are going to cause any issues. Microsoft is on a schedule to release roll-ups every 60 days or sooner. In the fall 2011 we will see a major release from Microsoft with feature enhancements to the system (bigger than a RU/SP for sure). If you are wondering on the client side what update you have installed, go to File, CRM and click on "About Microsoft Dynamics CRM". You will see the window below and you can compare it to the chart below.

| |
Release Date |
Version # |
| Rollup 1 |
4/4/2011 |
5.00.9688.1045 |
| Rollup 2 |
6/6/2011 |
5.00.9688.1155 |
| Rollup 3 |
7/26/2011 |
5.00.9688.1244 |