Friday, 29 April 2011

IME Mode in CRM


IME Mode in MSCRM attribute settings

When you create a new attribute for a MSCRM entity or open an exisitng one to see it's characteristics like data type, min-max values and schema name, you would have seen a property called IME mode.

An Input Method Editor (IME) lets you to enter and edit Chinese, Japanese, and Korean characters. These Asian writing systems have more characters than can be encoded for a regular keyboard. The IMEs for these languages use sequences of base characters that describe an individual character or group of characters to enter a larger set of characters. Base characters can be component letters from Hangul syllables, phonetic components for Japanese kanji characters, or various combinations for Chinese characters. You can use the IME mode option to quickly enter these characters and symbols into text boxes, avoiding the manual switch to IME mode that would otherwise be required.
Input Method Editors have two principle states, inactive and active. The inactive mode behaves like a regular keyboard and uses a limited set of characters. The active mode accepts Chinese, Japanese, or Korean characters.
The following IME modes are available:
  • auto (default)
    The IME mode is not affected with this choice.
  • active
    All characters are entered in the IME mode, but you can still deactivate it. For name-related fields and addresses, the default is active for detailed forms.
  • inactive
    All characters are entered without using the IME mode, but you can still activate it. For datetime type fields, the default is inactive for detailed forms.
  • disabled
    The IME mode is disabled, and you cannot activate it. For number type fields (money, int, float), the default is inactive for detailed forms.

CRM 2011 Dashboards

Following is the Demonstration on CRM 2011 Dashboards.

1) Open CRM. Click New in Dashboard Ribbon.

2) Choose your Dashboard Layout and Click on Create

3) Add you Data to Dashboard. In this Demo we will add 3 Charts
    and 1 List.

4) Click on the Chart Icon in the First Section and choose
    the following Fields.

5) In the Second Section , add a chart again with the
     following details :-

6) Add one more chard for Leads by Source

7) Add a list displaying All the Leads

8) Save and Close then Browse your Dashboard

9) See your Dashboard


CRM 2011 - Call Java Script in Workflows


Microsoft CRM 4 lacks call scripting features and customer especially call center customer will have to buy 3rd party add-ons like TK Dialogues, custom ASPX pages etc. to fulfill this requirement.
However, Microsoft CRM 2011 provides call scripting out of the box using processes. Processes are now used in place of workflows. Microsoft has categorized processes in Workflows and Dialogs. Workflows are same old workflows but dialogs can be utilized in various ways i.e. Call Scripting, Approval Processes, User Feedback Process and many more as CRM 2011 gets introduced in various industry sectors.
In this post, we will discuss processes from two perspectives. One is related to designing a process and other is execution of processes. Processes are located in Settings -> Process Center in navigation pane as shown below:
Microsoft CRM 2011 provides a designer tool for designing processes and this designer tool is very much similar to workflow designer but much more capabilities as compared to workflow designer. Now you have the options to prompt and get user input into process.
For the sake of clarification, lets design a script for call center representative to ask first name and last name of customer  whenever takes a call from customer.
This script will be designed to execute on phone call activity as shown in the category attribute.
Now we will add a page and then add two prompt and response steps for first name and last name and one prompt and response step for email.
We have almost designed are very simple Call script that will ask standardize our response when a call is received from customer. It will first ask for first name & last name. Then will ask for customer email address. Here we can specify as many steps as required to implement you call scripting needs and you can utilize the values gathered through this script to send emails. Create records as cases, contacts, activities, service activities etc.
Let’s Activate [published/unpublished is renamed as activated/deactivated] this process and Execute from Phone call activity. You can see from below screen that there are no more clicks involved to create a phone call activity. It’s pretty quick and easy. Thanks Microsoft for this consideration.
Now let’s execute the Call Scripting from phone call start Dialog as shown below:
Select the specific Dialog and click OK.
Click Finish at end of the process to and an email will be created.
and sent to customer upon completion of the process.

JavaScript Libraries in CRM 2011


In Microsoft Dynamics CRM 4, it is a very tedious task for system customizers to manage and track JavaScript. System Customizers/Developers have to write JavaScript on every event handler on the form. But Microsoft Dynamics CRM 2011 provides JavaScript libraries that can be utilized on events and forms across the solution. Now common JavaScript functions can be written at one centralized JavaScript file and utilized across solution.
Moreover, multiple JavaScript libraries can be created. For example, one common library for general CRM Service calls and one common library for UI manipulation and so on.
Let’s create a very simple JavaScript library and create a function to hide/show a tab/section on the form. JavaScript libraries are added as web resources in solution as shown below:

Now let’s create a JavaScript Common Library by adding a web resource in the solution. Then attach a JavaScript file this web resource.

Now let’s open the file in Text Editor available in web resource to add a function to show/hide a section/tab on form.

Microsoft Dynamics CRM 2011 provides new xrmPage model to access UI and data at client side. Here is a snapshot of the hierarchy.

Now let’s go to the account form in solution and then go to form properties to set JavaScript library and function to execute on form load event handler as shown below:

Now let’s add library from solution library.

Now let’s call the HideShowSection function in JavaScript Library by selecting appropriate JS library and typing the right function.  Enable the event handler by setting Enable flag to true. Also pass parameter to function by comma separated list of parameters i.e. 1, false which in turn sets tab 1 to visible false.

You can see that Details tab is now hidden and alert.

Thursday, 28 April 2011

CRM 4.0 Installation

Following is the Installation Procedure for CRM 4.0 :-

Start the Setup.exe

Choose weather you want to upgrade the setup or not
Type the Product Key
This message will come if you are using a Trial Key
 Click on I Accept the licence agreement
 Click on Install Prerequisites

 Choose Installation Type (Typical for Single Computer & Custom for Multiple Machines )
 Type the Name of SQL Server Instance
 Type the Organization name and Choose the Base Currency


 Choose the Website for CRM
 Type the Report Server url
 Choose the Organizational Unit (OU)
 Type the User Account (this account will be the System Administrator in CRM)
 Type the Name of Machine Hosting the Email Router




Installation Complete

CRM Web Service v/s CRM DLL

In CRM Web Services if you are making some changes in CRM Entities they will not get reflected until you will not update the Web Reference but In case of Dynamic Entity Class they will get effected immediately.

Please refer the following code :-
Lead Creation through CRM Web Service
Note : Please add you web reference first
=========================================
using System;
using System.Collections.Generic;
using System.Text;
using TestCRM.CrmSdk;
namespace TestCRM
{
    class Program
    {
        static void Main(string[] args)
        {
            CrmAuthenticationToken token = new CrmAuthenticationToken();
            token.AuthenticationType = 0;
            token.OrganizationName = "AdventureWorksCycle";
            CrmService svb = new CrmService();
            svb.CrmAuthenticationTokenValue = token;
            svb.Credentials = System.Net.CredentialCache.DefaultCredentials;
            //svb.Url = "http://crm/mscrmservices/2007/crmservice.asmx";

            lead l = new lead();
            l.subject = "From Normal Code";
            l.lastname = "Singh";
            l.firstname = "Kuldeep";
            l.companyname = "Koenig";
         
            Guid id = svb.Create(l);
            Console.WriteLine("Created");
            Console.ReadLine();
        }
    }
}

Lead Creation through CRM DLL’s
Note : Please Add you DLL references first
===========================================
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Crm.Sdk;
using Microsoft.Crm.SdkTypeProxy;


namespace Ch4_61_Example
{
    class Program
    {
        void abc()
        {
            CrmService svc=new CrmService();
            CrmAuthenticationToken token=new CrmAuthenticationToken();
            token.AuthenticationType=0;
            token.OrganizationName="AdventureWorksCycle";
            svc.CrmAuthenticationTokenValue=token;
            svc.Credentials=System.Net.CredentialCache.DefaultCredentials;
            DynamicEntity dyn = new DynamicEntity();
            dyn.Name = "lead";
            dyn.Properties.Add(CreateStringProperty("subject","New Lead using Dynamic Entity Class"));
            dyn.Properties.Add(CreateStringProperty("lastname", "Jones"));
            dyn.Properties.Add(CreateStringProperty("firstname", "Devi"));
            dyn.Properties.Add(CreateStringProperty("companyname", "Koenig"));
            dyn.Properties.Add(CreateStringProperty("salutation", "Dear,"));
            dyn.Properties.Add(CreateStringProperty("new_description", "Test dll"));
            TargetCreateDynamic target = new TargetCreateDynamic();
            target.Entity = dyn;
            CreateRequest req = new CreateRequest();
            req.Target = target;
            CreateResponse res = (CreateResponse)svc.Execute(req);
            Console.WriteLine("Created");
       
        }
        static void Main(string[] args)
        {
            
            new Program().abc();
            Console.ReadLine();
        }
        private Property CreateStringProperty(string Name, string Value)
        {
            StringProperty prop = new StringProperty();
            prop.Name = Name;
            prop.Value = Value;
            return prop;
        }
    }
}