Thursday, 5 May 2011

Solutions in CRM 2011

Note : Deleting an Unmanaged Solutions will delete the Solution but will not delete the components.
Note : Deleting an Managed Solution will delete the Solution and Components both (except the Components that are the part of another solution including Default(System) solution )
The follow options are available for modifying Solution Components:-

Creating a New Component: When you will create the New Components in Solutions, this action will create the component on the system, and create a reference to it in the Solution.

Adding an Existing Component: When you will add an existing component, where you have the choice to include the related components or not , Two specific components can be added here for which there is no New option; Site Map and Application Ribbon.

Delete: This will remove the component from the system. It also removes any references to the component in unmanaged Solutions. You may not be allowed to do this if the component is part of managed Solutions.

Remove: This option removes the reference to the component from the Solution. If you are trying to Remove two or more components at the same time, you may see the error i.e. "You can only Perform this Action on Records with the same type."


Publish: Changes to components may need to be published before they take effect. This does not apply to all changes, but for those that need Publishing, this button will do it.


Show Dependencies: Components frequently depend on other components. For example, relationships depend on the entities they relate to, and charts depend on data from entities, and so on. For component X, this button will present a dialog box showing the components that depend on X, and the components upon which X depends. This is useful for checking before a component is deleted (you will not be allowed to delete it if other components depend on it). It also tells you what components must be in your Solution or guaranteed to present on the target System when the Solution is imported.


Add Required Components: Because of dependencies between components, you may need to include other components in your Solution to make the existing component function. When you add an existing component, the system will ask you if you want to include the components it depends on (if any). The Add Required Component button will check the current component and add to the Solution any other components it depends on.




Export/Import Solutions
  • For Export : Only Unmanaged Solution can be Exported
  • For Import : You can import the solution as Managed or as Unmanaged
  • When an unmanaged Solution is imported, the customizations it contains 
  • overwrite any customizations already in place. This applies only to 
  • customizations explicably present in the Solution.
  • EXAMPLE: Joe exports his Vacation Solution, which contains a custom entity, 
  • as unmanaged. He then adds a field to the entity named Special to store a bit 
  • value. He adds the field to the form for the entity as a check box. The form is used 
  • so that data in the Special field is accumulated for some records. Joe then 
  • imports his Solution from the file he exported. When he publishes the changes 
  • and looks at the form, he finds his Special field disappeared. However, the field 
  • is still available to add to the form.
  • In the preceding example, the customization placing the field on the form is 
  • overwritten by the import. However the field (and the data in it) is left intact 
  • since it is not explicitly referenced.
  • If an import contains changes that conflict with existing data, it will fail.
  • EXAMPLE: Connie exports a Solution as unmanaged containing a Customer 
  • Interest entity. The entity contains a field called Interest Time of data type 
  • Integer. After the export, Pete deletes the Interest Time field from the entity. 
  • Connie recreates the field but, although she specifies the same name, she makes 
  • the new field Date and Time. If Connie tries to import the Solution she exported 
  • earlier, the import will fail. The Import Summary screen will show that the 
  • failure occurred in the Customer Interest component.
  • In the preceding example,Connie can downloaded the log file to see the error.
Permissions Required
  • By default, only the System Administrator and System Customizer have these permissions, but you can set them on any other Security Role you choose.
EXAMPLE: A Solution is exported as unmanaged and includes System Settings under General. The Solution contains references to three new entities. The Name Format at the time the Solution is exported is set to First Name Last Name. The Solution is imported onto an organization for which the Name Format is Last Name First Name. The import changes the name format for all name fields in all entities, not just the three custom entities in the Solution.


CRM 2011 - Web Services Path


CRM 2011 Discovery and Web Service URL’s to use, based on the Developer Resources Page in CRM.
Here is the information that you need:
For CRM Online customers:

The following URLs should be used to access the discovery service (use the appropriate URL for your location):
https://dev.crm.dynamics.com/XRMServices/2011/Discovery.svc
https://dev.crm4.dynamics.com/XRMServices/2011/Discovery.svc
https://dev.crm5.dynamics.com/XRMServices/2011/Discovery.svc
For CRM On-premises customers:
http://{server:port}/XRMServices/2011/Discovery.svc for the Discovery service endpoint
http://{server:port}/{OrgName}/XRMServices/2011/Organization.svc for the Organization Service endpoint (SOAP)
http://{server:port}/{OrgName}/XRMServices/2011/OrganizationData.svc

How to Change Language in CRM 2011


Hi,
I am going to share here how to install a language pack, enable it and then change the UI language of the logged user. In essense, all the steps required to change the language. In particular, some steps may be not so easy to realize how they are in 2011.
So, I decided to share here the step by step. The example is based on the installation and configuration of the Spanish language pack (my native language BTW) but it does apply to any other language.

Step by step: changing the language in Dynamics CRM 2011

1. Download the corresponding language pack from here.
It’s important to note the following:
  • before downloading the packacge, you have to select the language in the 'Change Language' combo box and press ‘Change’ as shown below:
clip_image001
  • Language pack has to be installed not only in the server but also on the clients which are using Outlook. This will apply localization to CRM client actions (i.e. Track button)
  • Labels and entity-level actions strings come from server, so that will be localized without installig language pack as far as the user changes his/her language preferences. 
  • Another way is: if user still didn't installed Outlook client and sets his personal language setting in the web client first (to say Spanish for example) and then clicks on the “Get CRM For Outlook” button in the web, the installation is automatically redirected to the Spanish version of the client and user gets all UI (coming from the server like ribbons and local to the client like Track in CRM form region) in Spanish.
  •   
2. Once downloaded, start the installation of it. In the first step, we will be asked to select a folder to extract the content of the package to.
clip_image001[6]
clip_image002
3. After extraction, setup wizard starts automatically and asks us to accept the licensing terms and conditions. Press ‘Install'  to continue.
clip_image001[8]
4. Installation starts..
image
5. Installation continues and succeeds. Just press ‘Finish’.
image
6. Once installed the package we need to enable it so it can be used by the users and also us as administrators. For doing so, logged as administrator, go to Settings->Administration and press 'Languages'.
image
This is an only once operation (unless you decide to disable it later for any reason).
7. A new dialog pops up where we are able to choose the language or languages to enable. (spanish in the example)
image
8. Press ‘Apply’ to enable the language pack. A new dialog pops up asking for confirmation and warning that the operation may take sevaral mins..
image
9. Press ‘OK’ to enable the package…
image
10. Once finished, the package should change its state to ‘Enabled’.
image
Now, it’s available to be chose by you and the rest of the users.
11. Up to this point we enabled the package but still didn’t change the UI language at all. To actually change the UI language in the CRM web application, you have to click on File->Options in the ribbon, as shown here:
image
Note: In case of Outlook, you need to go to File->CRM->Options.
12. Within Options window, go to ‘Languages’. Now you can choose the new language both for the UI and the help pages as shown below.
image
Base language (english in this case) is shown only for information purposes, in read-only mode as it cannot be changed once the organization is created.
13. Press ‘OK’ to apply the change.
14. Now, the web application is automatically refreshed and we should see the UI in the desired language.
image
Important:
Bear in mind that as administrators / customizers if we need to customize any entity and/or solution, this can only be done if the logged user is using the base language(english in this case).
Hence, if we will need to change the language back to base language in case we changed our default preference. On the contrary, the customization options will be disabled as shown below:
clip_image001[10]
clip_image002[4]
Hope you find this useful,

Monday, 2 May 2011

CRM Certifications


Note Microsoft Certified Business Management Solutions Professional certifications have been renamed to Microsoft Certified IT Professional certifications.

Microsoft Dynamics CRM 2011 Customization and Configuration

Exam MB2-866:

  • About this Exam
    This certification exam measures your ability to understand and articulate how to customize and configure Microsoft Dynamics CRM 2011 including configuring a Microsoft Dynamics CRM organizational structure, managing users & teams and security, customizing attributes and entities, customizing relationships and mappings, configuring auditing, managing forms & views and charts, and implementing a Microsoft Dynamics CRM solution. 
    Exam Topics Covered
    The following list includes the topic areas covered on this exam.
    •  Configuring a Microsoft Dynamics CRM Organizational Structure
    •  Managing Users & Teams and Security
    •  Customizing Attributes and Entities
    •  Customizing Relationships and Mappings
    •  Configuring Auditing
    •  Managing Forms, Views, and Charts
    •  Implementing a Microsoft Dynamics CRM Solution
    Audience Profile
    This exam is intended for Microsoft Dynamics CRM Implementation Consultants and Customizers who will configure the application’s organizational settings and customize the application using built-in customization tools.   

    Additional Skills Recommended:
    Must have a working knowledge of Microsoft Dynamics CRM 2011 usage and of solving real-world business problems by using Microsoft Dynamics CRM 2011. It is recommended, but not required, that examinees have completed Microsoft Dynamics CRM 2011 Applications training.

Microsoft Certified IT Professional – Applications for Microsoft Dynamics CRM 4.0

Note You must pass the one required exam and two elective exams to obtain a certification.
Exam title
Exam number
Required: Microsoft Dynamics CRM 4.0 Applications
Elective: Microsoft Dynamics CRM 4.0 Customization and Configuration
Elective:
Microsoft SQL Server 2005 – Implementation and Maintenance
Or
Microsoft SQL Server 2008, Implementation and Maintenance
Elective: Configuring Windows Vista Client
Elective: Deploying Business Desktops with Windows Server 2003 and Microsoft Office 2003

Microsoft Certified IT Professional – Developer for Microsoft Dynamics CRM 4.0

Note You must pass two required exams and two elective exams to obtain a certification.
Exam title
Exam number
Required: Microsoft Dynamics CRM 4.0 Customization and Configuration
Required:
CRM 4.0 Extending Microsoft Dynamics
or
Extending Microsoft Dynamics CRM 3.0
or
Elective: Microsoft Dynamics CRM 4.0 Applications
Elective: Microsoft .NET Framework – Application Development Foundation
Elective:
Developing and Implementing Windows-Based Applications with Microsoft Visual Basic .NET and Microsoft Visual Studio .NET
Note This exam is retired, but if you already passed it, you can apply it toward this certification.
Or
Developing and Implementing Windows-Based Applications with Microsoft Visual C# .NET and Microsoft Visual Studio .NET
Note This exam is retired, but if you already passed it, you can apply it toward this certification.


Exam 70-306


Exam 70-316
Elective:
Microsoft .NET Framework 2.0 – Distributed Application Development
Or
Microsoft .NET Framework 3.5 – Windows Communication Foundation Application Development
Elective: Microsoft .NET Framework 2.0 – Web-Based Client Development
Elective: Microsoft .NET Framework 2.0 – Windows-Based Client Development

Microsoft Certified IT Professional – Installation and Deployment for Microsoft Dynamics CRM 4.0

Note You must pass the one required exam and three elective exams to obtain a certification.
Exam title
Exam number
Required: Microsoft Dynamics CRM 4.0 Installation and Deployment
Elective: Microsoft Dynamics CRM 4.0 Customization and Configuration
Elective:
Microsoft SQL Server 2005 – Implementation and Maintenance
Or
Microsoft SQL Server 2008, Implementation and Maintenance
Elective: Exchange Server 2007, Configuring
Elective: Windows Server 2008 Network Infrastructure, Configuring
Elective: Windows Server 2008 Applications Infrastructure, Configuring
Elective: Windows Server 2008, Enterprise Administrator

CRM 2011 - Mobile Express


If you’ve worked with Mobile Express in CRM 4.0, then you’re probably used to navigating to Settings –> Customization –> Customize Mobile Express.  In CRM 2011 the navigation has changed so that Mobile Express configuration exists within each entity.
For example, if you want to enable Accounts for Mobile Express, go to Settings –> Customization –> Customize the System –> click on the Account entity, and make sure that the checkbox for Mobile Express is checked:
image
Then, navigate to Forms underneath the entity and find the mobile form:
image
Open the form and select the fields you want to appear within Mobile Express and remove unnecessary ones. 
image
Publish your changes and test on your mobile device by entering the URL of your organization with a “/m” after the URL (example: http://crm/AdventureWorksCycle/main.aspx/m)

Dynamic Queries in CRM 2011 Dialog Processes


Dialog processes give you an important new way to create flexible, interactive business processes in Dynamics CRM 2011. In this article I provide a quick review of the new functionality they support and contrast them with the traditionalworkflow process, which are still available and function much the same as they did in the previous version. After reviewing the basics, I cover something that might seem a little confusing at first, but that turns out to be important: how you can create queries of Dynamics CRM data within your dialogs, and how you can make one query dynamically dependent on the results of a previous one.

Backgrounder

In Dynamics CRM 2011, workflows work much the same as they did in the 4.0 version. But now, in addition to workflows, an important new kind of business process has been added: Dialogs can do many of the same things as workflows, but they are different in several important ways. The following table contrasts these two different kinds of processes (which incidentally, are each considered a specific kind of Processand exposed that way in the UI):
Workflows Dialogs 
Asynchronous Synchronous 
Can be triggered by events or run on-demandCannot be triggered by events; always run on-demand
Never require user interaction to completeAlways require user interaction to complete
Can be run on multiple recordsCan only be run on one record at a time
Cannot build interactive queries of CRM data CAN build interactive queries of CRM data

The most fundamental way dialogs differ from workflows is in their support for a user interface; in the design environment it’s the Page that provides the basic container for the UI. In fact, you cannot save a dialog process without at least one page.
In turn, the page is a container for one or more Prompt and Response pairs. Together, pages and prompt/response pairs provide the UI and allow you to create a wizard-style experience for your users. For example, Figure 1 displays, in the design environment, a very basic dialog process.
Figure 1: An Interactive Dialog Process in the Design Environment


Figure 2 shows what that will look like this to a user running the dialog process:
Figure 2: The User Experience for a Basic Dialog

Although this dialog process will run, it doesn’t do much other than illustrate the basic Page and Prompt and Response components. But even in the most basic dialog process you can tell there are some significant differences between dialogs and workflows. For example, here’s a side-by-side comparison of the options available from the Add Step menus in, respectively, the workflow design environment and the dialogdesigner:
Figure 3: Add Step Drop-Down Menu for WorkflowsFigure 4: Add Step Drop-Down Menu for Dialogs

You can develop some intuition on the differences between workflows and dialogs from this comparison: for example, notice that dialogs don’t have the Wait Condition and Parallel Wait Branch conditional constructs that workflows do. This ties back to the fact that dialogs always run synchronously and always require a user to interact with them through to completion. You couldn’t very well add a six-month wait condition in a dialog and expect a user to sit around and wait for it!

Querying CRM Data in a Dialog Process

But the topic of this article is what you can do in dialogs that you cannot in workflows. We already reviewed the Page and Prompt and Response constructs for the UI, but what I want to focus on here is the Query CRM Data action. You can use this to allow users to select, in one of the Prompt/Response pairs, from a list built from a query. For example, you might create a dialog process as a substitute for the standard form experience in creating a case record. Instead of filling in a form, you walk a customer through a series of prompts, record the responses, and after the dialog finishes, the rest of the process creates the appropriate records. One of the prompts might be “What’s the name of your company?”, for which you can use Query CRM Data to build a query of accounts, allow the user to select from a list of accounts eligible to open a case, and then create a case record attached to the selected account.
I’ll illustrate this with an example. Suppose cases are opened for accounts, and for accounts with “Preferred Customer” in the category field, cases get routed to a special queue. Here’s an Advanced Find view that will return all Preferred Customer accounts:

Now we’ll see how to build a dialog that presents the user with a list of accounts based on that query, allows the selection of an account, and creates an appropriate case record for the selected account. In this example, we’ll assume that a phone call kicks off the case intake process, and base the dialog on the phone call entity. Follow these steps to …
  1. Create a new process (click Settings, then click Processes, and then clickNew)
  2. Give it a name, select Case in the Entity drop-down, select Dialog in theCategory drop-down, select New Blank Process in the Type section, and then click OK.
  3. When the process design window opens, click where it says Select this row and click Add Step, click the Add Step drop-down list, and select Query CRM Data.
  4. Then click the set Properties button and you’ll see the Define Query dialog
  5. You can see that this is just a specialized version of Advanced Find, so selectAccount in the Look for drop-down.
  6. Next you can take a couple of different approaches. If you don’t mind building your query on the fly, you can simply build it here; on the other hand, if you’ve saved it as a view, you can select it in the Use Saved View list. In the end, it amounts to the same thing, as you can see in the following figure:

  7. Click Find to verify the query works as expected, and then click Back to Query when you’re satisfied.
  8. As you will see shortly, the Statement Label is important, so I’ll be careful and give mine a good name, say, “Preferred Accounts”, then click Save and Close.
    Now it’s time to build the UI for the dialog process, starting first by adding a Page, which will be the container for the Prompt and Response pairs:
  9. Click Add Step and select Page from the list.
  10. Provide a name for the page, and then click the line below it. Now click Add Stepagain and this time select Prompt and Response.
  11. Click Set Properties and you’ll see the Prompt and Response dialog. Following this example, set the following properties:
    1. Statement Label: “Selected Account”
    2. Prompt Text: “Which Account are you with?”
    3. Response Type: Option Set
    4. Data Type: Text
    5. Provide Values: Query CRM Data
    6. After selecting that, you’ll see that Query Variables lights up, and you can select the Query built previously (hence the importance of good naming!). Select at least one field to return by checking in one of the columns, and when finished you should see something like this:
    7. Click Save and Close.
  12. Now the query’s built, and the dialog can do something with the value contained in Selected Account, which functions like a variable.
Since this article is about using queries in dialog processes, I’ll take a shortcut and build out the rest of the simple version of our case creation dialog. The simple version will ask another question, and then use the information gathered to create a case record, with the Selected Account entered in the Customer field. Here’s what the rest of the dialog looks like:

Figure 5: Dialog to Create Case Record

If you click the Set Properties button I highlighted in the figure, you’ll see the Create Case dialog. Use Dynamic Values to create a subject/topic, fill in the Customer field with the Selected Account (from the dialog), and fill in the Description field:
Figure 6: Create Case Record with Dynamic Values

Finally, refer back to Figure 5 and notice that records are routed to queues differently in CRM 2011 than they were in CRM 4.0, using the Create action to create a newQueue Item record.




Building Dynamic Queries

OK, that’s all well and good, but how do dynamic queries work? To continue the case-creation scenario, consider the following requirements:
  • Case records created using this process will be associated with the selected account entered in the Customer field. You saw this in the previous section.
  • The case form will be customized to add a lookup field to the Contactrecord type. The dialog process will construct a query to allow the selection of contacts associated with the selected account record. This is thedynamic query, so-called because it will be constructed dynamically within the dialog process, using the value selected for account (in the first query) as a parameter for the dynamic (second) query.
Because the second (dynamic) query depends on the account selected from the first query, dialogs like this one always have a characteristic structure:
The Gather Information stage will be structured like this:
  1. Construct the first query with Query CRM Data
  2. Insert a Page.
    1. The Page contains at least one Prompt and Response, and the label of the Prompt and Response will be used later in the dynamic query,
  3. Immediately after the Page created in step 2, insert another Query CRM Data. This will be the dynamic query. In the current example, it will have a name such as “Contacts for Selected Account”.
  4. After the dynamic query, insert another Page.
    1. This page will contain (at least) one more Prompt and Response, which will allow the user to select one of the contacts associated with the previously selected account.
The Post-Dialog Processing stage will use the information gathered to do whatever the process is supposed to do.
The following figure illustrates this structure for the current example:

The first query is the same as the one in the previous example. The first Prompt and Response allows the user to select an account, and stores the selection in theSelected Account variable. The second query is the dynamic one, and constructing it is the tricky part. Assume for now that all you have is the first part: the query for preferred customers and the prompt and response allowing a user to select one:

Follow these steps to create the dynamic query (Contacts for Selected Account in the example):
  1. Click Add Step, and select Query CRM Data.
  2. Click Set Properties and select Contacts in the Look for drop down.
  3. Select Parent Customer from the list of fields, and then in the second column, select Begins With.
  4. In the third column, enter a placeholder value – anything you want, since you’ll delete it in a minute. For example:

  5. Now, click the Modify Query Variables tab. Until I learned this trick I always wondered what that tab was for! You’ll see something like this, which is the FetchXML you may have been hearing about lately:

  6. Finally, delete the placeholder text, and select Selected Account in the Local Values section of the Look for drop-down, and then be sure to select Account Name, click the Add button, and then OK. After jumping through those hoops, hopefully it should look like this:

  7. Finally (this time I really mean it!), provide a good name for the Statement Label, like this:


    It takes a few steps to get it done, but at this point you can see that Variable1 is a parameter in the FetchXML, and that the value of the Account Name gets substituted into it at runtime, filtering the list of contacts appropriately.
I recorded a video that demonstrates how to make dynamic queries in CRM 2011 dialog processes. It’s in the customization section on the Trick Bag Video page.

Summing Up

Seeing as how you got this far, the least I can do is summarize the most important points:
  • This is a general technique, and can be used any time a value selected from one query can be used to filter another.
  • The FetchXML used here is the same as that used in custom SSRS reports for Dynamics CRM Online, so skills developed in one application will pay off in the other.
  • If you liked this, you’ll love the updated edition of my workflows book, coming soon with comprehensive coverage of workflow and dialog processes in Dynamics CRM 2011!