Quantcast
Channel: Microsoft Dynamics CRM Team Blog
Viewing all 592 articles
Browse latest View live

Custom Charting Capabilities in Microsoft Dynamics CRM 2011

$
0
0

Microsoft Dynamics CRM 2011 comes with in-built visual analytics. You can create charts to view aggregations of your CRM data over various dimensions, providing nice visual and interactive tools to analyze data. But, there is more to it.

It also provides you with some space alongside the records-grid. While this space is generally used for the built-in charts, it can potentially be used for well, anything. CRM 2011 also goes a long way in defining an extensibility story – a way to deploy your own custom pages on the server. Yes, you’ve got it right – I am referring to web resources. Would it not be great if you could get your web resource to show up alongside the grid? Well, that is precisely what we let you do.

Create your own custom chart

Let us start by creating a simple “Hello World” page, and making it show up alongside the Accounts grid.

1. Open your favorite text-editor, and type in the following HTML:

<html>
  <head>
    <title>Hello World Page</title>
  </head>
<body>
  <div style="height:49%" ></div>
  <div style="text-align:center">
  <b>A 'Hello World' web resource for the Accounts grid</b>
</div>
</body>
</html>
!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->

This is an elementary HTML page that shows a line of bold text centered horizontally as well as vertically.

2. Create an HTML Web Resource on CRM Server by uploading the above page. In case you are not familiar with web resources, you will need to do the following:

a. Navigate to Settings Customizations. Click on Customize the System to open up the Default Solution.

b. Click on New → Web Resource on the grid tool-bar to launch the Web Resource form.

c. Upload the file created in (1) above. Give the web resource a name, say new_helloWorld.

d. Click Save.

clip_image002

3. Now we will create a custom chart that uses this web resource. We can do so easily by using the Import Chart feature:

a. Navigate to Accounts grid and open the chart pane.

b. Click on Import Chart in the Charts tab of the ribbon.

clip_image004

Here’s the XML we want to import:

<visualization>
  <primaryentitytypecode>account</primaryentitytypecode>
  <name>Hello World</name>
  <webresourcename>new_helloWorld</webresourcename>
</visualization>
!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->

Note that the XML definition above contains a reference to the web resource created in (2).

Once the chart is successfully imported, we will see the following:

clip_image006

That was pretty easy, wasn’t it? But that was not a very useful chart though. Let us move on to something better.

Multiple charts sharing the same web resource

Consider a hypothetical problem. Let us say, I have accounts spread across different countries in the world and I would like to see their locations on a map beside the accounts grid. I would not want one map cluttered with all the accounts – rather I would want to focus on one country/region at a time, and see accounts located in only that country. To solve this problem, I would want to create different charts – each centering the map on a particular country (with a zoom factor according to the size of the country) and displaying only accounts from that country.

It would be possible to create multiple web resources addressing different map regions – however, that is not a very scalable solution. Creation of a web resource is generally a system customizer’s job – we would not want a system-customization for every new country/region that we would want to include.

Instead, what we will do is create a single ‘parameterized’ web resource. The web resource will contain the general logic for plotting accounts on a map – however, this logic would be driven by certain parameters which would be provided at runtime by the chart that is being rendered.

How does a web resource know which chart is being rendered?

If you have worked with web resources placed on forms/dashboards, you would be aware of the data query-string parameter. This parameter essentially lets the same web resource render differently in different contexts – you specify the value of this parameter (if required) at the time of adding the web resource to a particular form/dashboard.

For web resources rendering as charts, we do not let you explicitly specify a value for this parameter. Instead this parameter is always set to (a URL-encoded form of) the following format:

visid=<Visualization ID>&vistype=<Visualization Type>&viewid=<View ID>&viewtype=<View Type>

Therefore, we can get the ID and type of the chart being rendered by parsing the data query-string parameter.

Data and Presentation Descriptions of the Chart

Both System and User Charts have the following two fields.

  • DataDescription: This defines the data that is to be shown in the chart.
  • PresentationDescription: This defines the presentation and formatting of the chart.

For charts that use the in-built charting capabilities of CRM 2011, the values of the above fields have well-defined syntax and semantics. For our custom set of charts, we will continue using these fields to represent the data and presentation properties of the chart – however, we will define our own syntax and semantics for these fields based on our needs.

  • DataDescription: The country/region whose accounts are to be shown on the map.
  • PresentationDescription: This will need to convey two things: the coordinates of the center of the map, and the zoom factor. Let this be a comma-separated list of three numbers – a latitude, a longitude, and a zoom factor.

So here’s the basic idea – the web resource first figures out which chart is being rendered, then it reads the data and presentation descriptions of that chart, and parses them appropriately to extract the parameters that it needs to render the map at runtime.

Going into more detail, we will be doing the following in sequence.

  • Parse the query-string to extract the value of the data parameter. Parse this value again to obtain the ID and type of the visualization being rendered.
  • Retrieve DataDescription and PresentationDescription fields of the visualization using CRM oData end-point.
  • Parse the PresentationDescription to obtain the values of latitude, longitude and zoom-factor. Use Bing Map APIs to load a map with these values.
  • Get the country/region specified in DataDescription. Retrieve all Accounts from this country/region by making a GET request to a CRM oData URI with appropriate filters.
  • Geocode each of the retrieved account locations using Bing Map APIs, and plot them on the map.

Here’s one way you may write the web resource.

<html>
<head>
    <title>Accounts on Bing Maps</title>
    <script type="text/javascript" src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6.3"></script>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
    <script type="text/javascript" src="ClientGlobalContext.js.aspx"></script>
 
    <script type="text/javascript">
        var map;
 
        // Function to construct key-value pairs from a query string.
        function getParametersFromQuery(query) {
            var parametersDictionary = new Array();
            var parameters = query.split('&');
            for (var i = 0; i < parameters.length; i++) {
                var keyAndValue = parameters[i].split('=');
                parametersDictionary[unescape(keyAndValue[0])] = unescape(keyAndValue[1]);
            }
            return parametersDictionary;
        }
 
        // Function that makes a GET request to the CRM REST end-point, and invokes a callback with the results.
        function retrieveFromCrmRestApi(url, callback) {
            $.ajax({
                type: "GET",
                url: GetGlobalContext().getServerUrl() + "/XRMServices/2011/OrganizationData.svc" + url,
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (data) {
                    callback(data.d);
                }
            });
        }
 
        // Function that retrieves the corresponding CRM chart, and invokes the callback when successful.
        function loadChartFromCrm(callback) {
            var parameters = getParametersFromQuery(window.location.search.substring(1));
            parameters = getParametersFromQuery(parameters["data"]);
 
            var id = parameters["visid"].substr(1, 36);
            var type = parameters["vistype"];
            var url = (type == "1111" ? "/SavedQueryVisualizationSet" : "/UserQueryVisualizationSet")
                + "(guid'" + id + "')?$select=DataDescription,PresentationDescription";
            retrieveFromCrmRestApi(url, callback);
        }
 
        var locations = new Array();
        function plotAccountLocations(accounts) {
            if (accounts.length > 0) {
                var account = accounts.pop();
                var address = account.Address1_City + ', ' + account.Address1_Country;
                map.Find(null, address, null, null, 0, 1, false, false, false, false,
                    function (shapeLayer, results, places, moreResults, error) {
                        if (null != places && places.length > 0) {
                            var place = places[0];
                            var newShape = new VEShape(VEShapeType.Pushpin, place.LatLong);
                            newShape.SetTitle(account.Name);
                            newShape.SetDescription(address);
                            locations.push(newShape);
                        }
                        // When we have found (or not found) the current account,
                        // recursively call the same function to find the next one.
                        plotAccountLocations(accounts);
                    });
            }
            else {
                var shapeLayer = new VEShapeLayer();
                map.AddShapeLayer(shapeLayer);
                shapeLayer.AddShape(locations);
            }
        }
 
        function loadAccountsFromCrm(dataDescription) {
            var url = "/AccountSet?$select=Address1_Country,Address1_City,Name";
            if (null != dataDescription) {
                // Filter accounts based on country specified in data description.
                url += "&$filter=Address1_Country eq '" + dataDescription + "'";
            }
            retrieveFromCrmRestApi(url,
                function (data) {
                    var results = data["results"];
                    var accounts = new Array();
                    for (resultKey in results) {
                        accounts.push(results[resultKey]);
                    }
                    // Once accounts are retrieved from CRM Server, plot their locations on map.
                    plotAccountLocations(accounts);
                }
            );
        }
 
        function getMap(presentationDescription) {
            // Set center and zoom defaults.
            var center = null;
            var zoom = 4;
            if (null != presentationDescription) {
                // Calculate map-center and zoom from the presentation description.
                var arguments = presentationDescription.split(',');
                if (arguments.length > 1) {
                    center = new VELatLong(arguments[0], arguments[1]);
                }
                if (arguments.length > 2) {
                    zoom = arguments[2];
                }
            }
            map = new VEMap("map");
            map.LoadMap(center, zoom, VEMapStyle.Road, true, VEMapMode.Mode2D, false, 0);
            window.onresize = function (event) { map.Resize(document.body.clientWidth, document.body.clientHeight); };
            window.onresize(null);
        }
 
        function loadMap() {
            // First, get the chart object from CRM Server.
            loadChartFromCrm(
                function (chart) {
                    // Once we have retrieved the chart, format the map based on the chart's presentation description.
                    getMap(chart.PresentationDescription);
                    // Get Accounts from CRM Server based on the chart's data description, and plot them on the map.
                    loadAccountsFromCrm(chart.DataDescription);
                }
            );
        }
    </script>
</head>
<body onload="loadMap()">
    <div id="map"></div>
</body>
</html>
!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->

The code-snippet above uses a bunch of asynchronous callbacks – however, the basic sequence of invocation of functions is the following.

  • loadMap: Handler for the body.onload event.
  • loadChartFromCrm: Retrieve DataDescription and PresentationDescription of the current chart from the CRM 2011 oData end-point. Note the double-call to a function that parses a query-string.

var parameters = getParametersFromQuery(window.location.search.substring(1)); parameters = getParametersFromQuery(parameters["data"]);

[The value of the “data” parameter is essentially a query-string within a query-string.]

  • getMap: Use Bing Map APIs to load a map with the center and zoom-factor specified in presentation-description.
  • loadAccountsFromCrm: Retrieve account records from CRM 2011 oData end-point, filtered by the country specified in data-description.
  • plotAccountLocations: Add push-pins on the map to represent each of the account records retrieved above.

Now let us go ahead and create a web resource on CRM Server with the above HTML. Let us call it new_accountsOnMap. It would now be pretty simple to create various charts using it. Let us start with Accounts in the U.S.

Import the following chart Xml:

<visualization>
  <primaryentitytypecode>account</primaryentitytypecode>
  <name>Account Locations in U.S.</name>
  <datadescription>U.S.</datadescription>
  <presentationdescription>39.8,-98.5,4</presentationdescription>
  <webresourcename>new_accountsOnMap</webresourcename>
</visualization>
!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->

This is what you will see:

clip_image008

Similarly, the following chart Xml gives you Accounts in India.

<visualization>
  <primaryentitytypecode>account</primaryentitytypecode>
  <name>Account Locations in India</name>
  <datadescription>India</datadescription>
  <presentationdescription>21,78,4</presentationdescription>
  <webresourcename>new_accountsOnMap</webresourcename>
</visualization>
!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->!--crlf-->

clip_image010

Essentially, you have created your own parallel charting infrastructure for CRM 2011 that others can use to create system or user charts as appropriate. Like any other chart, such charts will automatically show up in the chart selector beside the records grid. And yes, they can also be placed on dashboards if so desired.

I have made available for you a Microsoft Dynamics CRM 2011 Managed solution containing the web resource and two system charts based on it.

Cheers!

Arko Nasipuri


Microsoft Dynamics CRM 2011 Launch ~ Now!

Using Formulae in Dialogs: Example Lead Scoring

$
0
0

When using Microsoft Dynamics CRM have you ever wondered how to create and use formulae in Dialogs? Yes this is possible using two features supported in Dialog Processes: Variables and Assign Value step. If you look at the Dialog designer page, you will see a section for creating Variables as shown in figure below.

clip_image001

You can add Variables with default values using this step. The Variables can be later used to create formulae in your Dialog. Three types of Variables are supported by Dialog: Single Line of Text, Whole Numbers and Floating point Numbers. Once you click on Add you will get a Dialog for defining the variable as shown in below figure.

clip_image002

Once the Variable is defined it appears as below figure on the designer.

clip_image004[4]

You can Edit or Delete the Variables after it is defined. You can modify the name and default value of the Variables. However you cannot modify the data type of the Variables once defined. This limitation is to avoid data type mismatch errors. Suppose if some variable is defined as floating point number and used to create formulae in Dialog Process and later the variable’s data type is changed to Text then the steps using the Variables for multiplication or addition would become invalid.

Now once your Variables are defined, you can use them to create a formula using Assign Value step which is available in Add Step menu on designer.

clip_image006[4]

Once you click the menu option you will see Assign Value step on the designer where you can fill the name of this step. You can use Set Properties button to create the formula. The step looks like below figure on designer.

clip_image008[4]

Once you click the Set Properties button a formula definition Dialog will appear. The Variables defined in the Dialog will automatically appear in the Name dropdown.

clip_image009[4]

Assign Value step supports different kind of Operators for all data types supported. For example; following table illustrate the operators supported for different data types.

Data Type

Operators

Single Line of Text

Set to, Append with and Clear

Whole Number

Set to, Increment by, Decrement by, Multiply by and Clear

Floating point Number

Set to, Increment by, Decrement by, Multiply by and Clear

Let us now develop a Dialog for Lead Qualification. Suppose your company is running some marketing campaign through phone call. Assumption is that the phone call records already exist with Regarding field as Lead and Recipient also as Lead to whom call has to be made. The marketing executive is running Dialog to achieve the objective. For this we need to author a Dialog. We will create a Dialog for Phone Call entity so that while making an outbound call, the Marketing executive directly launch the Dialog from Phone call page and start the Dialog for conversing at phone with the probable Opportunity. In order to simplify the example we will assume that the customer will be asked 2-3 questions in order to qualify the lead as Opportunity or lost Lead. First we have to plan the Dialog. For simplicity, we have very limited set of questions to qualify the Lead as shown in below flowchart.

clip_image011

Step 1 of this flowchart can be implemented with Assign Value step where the name variable is Set To regarding Lead’s First name data slug which is illustrated in one of the above figures. The variable initialized with First Name can be used in a Prompt greeting customer as shown below.

clip_image012

Now you have to check if the customer is further interested in continuing the talk. If yes then we will increment the value of current_score by 5 as per flow chart shown above and continue with other steps as per flow chart in the if-then block. To increment the value of current_score by 5 we would do following.

First select the variable ‘current_score’ from name dropdown, ‘Operator’ as ‘Increment By’ , then type ’5.0’ in the ‘Default value’ text box and finally click Ok on the Form Assistant.

clip_image013

In case user is not interested then we would deduct the 10 points from the current score as shown below.

clip_image014

Now you get how to create formulae in your Dialog. The final Dialog will look something like shown in below figure.

clip_image016

In above Dialog, you will notice that you can change the status of Regarding(Lead) to Qualified however the Process (Dialog or Workflow both) does not provide option to convert this Lead to Opportunity or Account. That can be achieved by placing two Create Record steps, one to create Account with the Lead’s company’s name and other to create an Opportunity with the same topic as that of the Lead as shown in following figures.

clip_image018

Create Account step would be configured as shown in below figure and the same account can be used as potential customer for the Opportunity created due to Lead qualification.

clip_image019

Obviously the Created Opportunity should have same topic and customer created in previous steps which is simple as shown in next figure which you get on clicking Set Properties button of Create Record step.

clip_image020

Finally test the Dialog after activating it to verify that if the Lead is qualified the corresponding Account and Opportunity are created.

Cheers,

Ramesh Pandey

Goal Management Security model

$
0
0

Goal Management in Microsoft Dynamics CRM 2011 is an incredibly powerful feature that allows you to set Goals or Targets for Sales/Service personnel and track & drive these targets to actual numbers. To learn more about the different ways in which you can use Goal Management in your day to day work refer to the blog posted here or to get insights of how the feature works refer to the blog posted here.

Given that some of the information could be sensitive, Goal Management feature ensures that only specific set of people who need to have access to the relevant information have access to it. Also the Goal rollup feature which aggregates data and credits values/numbers achieved against targets ensures that the right credit is given to the rightful person. Let’s see how these happen in detail.

Goal Owner and Manager Fields

The Goal owner field specifies the person who is responsible for achieving the goal. For Example, a Sales Manager would create a Goal for a Salesperson and set him as the Goal Owner.

The Goal Manager Field is like the record owner field that is present in all other entities. The Goal manager has full permissions on the goal. On a new goal form, the field is pre-populated with person who is creating the goal. For Example, a Sales Manager is the Goal Manager of a Goal that is created by him for a Sales Person who would be the Goal Owner.

As soon as a Goal is created, the Goal record gets shared with the goal owner and he gets Read and AppendTo access rights on that goal. These are the only two access rights granted to him. Whenever this Goal has a parent Goal associated, the Goal Manager of the Parent goal also gets Read access right to this Goal. Normally the Owner of the Parent Goal would be the Manager of the goal under consideration.

Let’s try to understand this with an example. Here is the representation of a Goal tree we intend to create:

Fig 1:

image

In the Goal tree shown above, Kevin will have full permission on Nancy’s Goal as he is the Goal Manager. Nancy will have Read and AppendTo access rights on the goal and Peter will have just the Read access to it. David will not have access to Nancy’s goal. If Kevin wants Nancy or Peter to be able to edit Nancy’s goal then he will need to explicitly grant those access rights by sharing the record with them.

Impact of Changing Goal Owner, Goal Manager or Parent Goal

Whenever Goal Owner or Goal Manager or Parent of a Goal change, the access rights assigned to various users may get reassigned as required. Let’s see how changing any of these impacts the record sharing model.

Goal Owner Change

Whenever the Goal Owner of a Goal is changed, the Read and AppendTo access rights assigned to the previous goal owner get revoked and same rights are now granted to the new Goal owner. The access rights of the previous owner are not changed if there were any additional access rights given to that user explicitly. In such cases the access rights granted to the user have to be explicitly revoked if required.

Goal Manager Change

Goal manager change is just like any other CRM record reassignment process. The old manager will lose all access to the record and the new manager will gain full access to it. One additional action that happens is that the old manager who had Read access to the child goal now loses that access and the new manager gets those access rights. In the above example (Fig 1) if Manager of Kevin’s Goal changes from Peter to Samuel then Peter will lose the Read access he had on Nancy and David’s goals and Samuel will be granted those access rights. Here again if any additional access rights were assigned to the old goal manager explicitly then those are not revoked automatically and have to be revoked explicitly for the record.

Change of Parent Goal

Whenever a goal is re-parented the Read access granted to the manager of the parent goal is revoked. The manager of the new parent goal will get Read access to the record.

Goal Rollup Security Model

Goal entity has fields in it that indicate the progress made against the goal. Goal rollup is the CRM process that calculates and updates this information. All records that contribute to a Goal’s rolled up values are called Participating Records for the goal. The Participating records for a Goal’s rollup are primarily dependent on the Metric associated and the Rollup Queries added to it. But these have to be determined in some specific user’s context to ensure that records which are even outside of Managers access are not included in rollup even if the metric or rollup queries ignore that aspect. To ensure this, the Microsoft Dynamics CRM rollup engine determines the Participating records in Goal Manager’s Context and uses only those records for calculating the rollup values. Hence the goal rolled up values will not include those records for which the Goal manager does not have access to.

As the goal rollup runs in Managers context, all data that the manager has access to will be used in goal rollup. The goal owner will be able to see this information as the goal is shared with him. In some cases the rolled up data may be an aggregation of even those values on which the Goal Owner does not have access. This can especially happen when the goal rollup is not restricted to the records owned by the goal owner OR if access to the rollup field is restricted for the Goal Owner using Field Level Security. Since Goal owner will be able to see the rolled up values, he will also be able to see the aggregated data of values for which he does not have access. If Goal manager does not want even such aggregated information to be visible to Goal owner then Metric Rollup Fields, Goals and Queries should be setup such that they do not include the restricted information.

Automatic Goal rollups typically happen once a day. Goal Managers can also trigger Goal rollups whenever they want to from within a Goal record by using the Recalculate button available on the Goal form’s Ribbon. Multiple Goal rollup requests submitted using the Recalculate button can load the server. Thus administrators may want to allow only a specific set of people to have the ability to request for Goal rollups at their will. To enable such control on submitting Goal rollup requests, a special access right has been added to CRM called as ‘Perform in sync Rollups on Goals’. Users with a Role having this access right will be able to see the recalculate button on the Goal form’s ribbon while the others will not see it. Here is a screenshot showing the location of the ‘Perform in sync rollups on Goals’ access right.

Fig 2:

image

Privileges required to Change Goal Manager

Given that goal rollup runs in Goal Managers context, a Goal manager may be concerned that others will create a goal, make him its manager and see the rolled-up values in his context. To address such a concern, assignment of goals has an additional check embedded in it. Assignment of goal not only considers the assigning users access rights on the record but also checks who the other user is, to whom the goal is being assigned.

Let me explain this with an example:

Let’s say Kevin, Peter and Mike are three Sales Managers where Kevin and Peter are in same Business unit and Mike is in another Business Unit. The Out of Box Sales manager role has User level access right on Create and Business Unit (BU) level access right on Assign for Goal entity. Given this, Kevin, Peter and Mike can create goals with only themselves as the Goal Manager.

If Kevin creates a goal with himself as Goal Manager and then tries to assign it to Mike then the record assignment will fail although he is trying to assign his own record. This is because the Goal assignment here not only checks for Kevin’s access on the goal but also checks where in the Organization does Mike stand to whom the goal is being assigned. Since Kevin has BU level assign privilege, he cannot assign the goal to Mike who is outside his BU. He will be able to assign the goal to Peter who is in the same BU.

In cases of other CRM entities, both these assignment actions would have succeeded as the record being assigned is owned by the record owner himself. There may be a need to prevent Kevin from being able to assign goal records even to users in his own BU (In above Example: Kevin should not be able to make Peter as the Goal Manager of a Goal). To do this all that needs to be done is reduce the Assign access right on Goal for his role to User level only.

Cheers,

Raju Kulkarni

Enhanced capabilities and new UI experience of Article (KB Article) in CRM 2011

$
0
0

In Microsoft Dynamics CRM, an article or knowledge base article is a type of structured content that is managed internally as part of a knowledge base. Using Articles, users can manage product/service information of business unit, FAQs and other information. When you create an article you have to associate it with KB Article template and a subject. The template describes pre-defined formatting and the sections that can be used in your article.

Subjects are used to organize the articles by business categories. In Microsoft Dynamics CRM 2011 the UI experience of article grid and form is enhanced by adding customization capabilities to article entity, makings its grid and form experience native to CRM and associating its search experience with quick find control and ribbon. These changes give user enhanced capabilities and smooth UI experience.

Customization capabilities of Article:

In Microsoft Dynamics CRM 2011 the Article entity is opened for customizations. User has following capabilities on customization with article:

  • Customize Article form
  • Views
  • Charts
  • Fields
  • 1: N relationship
  • N: 1 Relationship
  • N: N relationship
  • Messages

Article has Language:

A new field languagecode is added to article entity. Its value is automatically set based on language of article template. This field is by default added on article form and grid. With this user can define views and add filters on default view based on language.

Article Form:

clip_image002

Article Grid and Form in CRM 2011:

The Article grid and form is ribbonized like most of other entities in Microsoft Dynamics CRM 2011. All the controls which were in toolbar are moved to ribbon. To navigate to article grids there are two OOB navigations provided.

1. Workplace > My Work > Articles

2. Service > Articles

Both grids are identical. Please note that there is a difference in these grids from Microsoft Dynamics CRM 4. 0. On the CRM 4.0 Workplace > Article there was search experience on grid and it used to show published articles. From the Workplace it used to always open article in article viewer. By default, Microsoft Dynamics CRM 2011 opens the CRM form. If user wants to open it in article viewer user have to explicitly open it by selecting published article from grid and clicking “View in HTML”.

Microsoft Dynamics CRM 4:

Workplace > Article

clip_image004

Microsoft Dynamics CRM 2011:

Workplace > Article

clip_image006

New Search Experience: Ribbon and Quick find supported

In CRM 4 the search experience was associated with grid. There was a separate column on grid where user had capabilities to define search criteria.

clip_image008

In CRM 2011 to make article grid experience more native these search options are now available on a new ribbon tab. This tab comes on focus when user clicks on quick find.

User needs to mention search text in quick find. Search functionality is similar to CRM 4.0 only the UI experience has been changed. We support following Search options:

  • Full text search
  • Keyword Search
  • Title Search
  • Subject Search
  • Article Number Search

Following search types are supported:

  • Exact Words
  • Use like Words

The Subject can be mentioned by clicking on subject button which opens subject lookup and then selecting subject from lookup. If user want to close search tab than click on Close search. The Search experience is similar to that of the Outlook CRM client. I would like you to walk through an example which will explain new search experience in more detail. For example, if user want to do a Title search on “Web Browser” with search type of ‘Use Like Words’ and filter on subject “Default Subject”. Then the steps for the user would be:

1. Click on ‘Quick Find’. (That will bring Search tab in focus.)

clip_image010

2. Type search text in ‘quick find’. For the above example it is “Web Browser”

3. Select “Title search” from search options and “Use Like words” from search type

clip_image012

4. Click on Subject.

5. Select the Subject from lookup results.

clip_image014

6. Click on Find button next to quick find text box.

You can now see the search results in this resulting grid.

Cheers,

Niraj Yadav



Whitepaper Comparing xRM Application Framework and Force.com

$
0
0

In concert with the Microsoft Dynamics CRM 2011 Launch last week, we released a whitepaper titled “Comparing xRM Application Framework and Force.com” targeted at developers & ISVs. While the two technologies have many technical similarities, they also have important differences. This paper illustrates why xRM (the framework that underpins CRM) is clearly the superior choice for independent software vendors (ISVs) and enterprises to build business applications.

CRMsdkExtModel

                                        Diagram of the Microsoft Dynamics CRM Extensibility Architecture

1-20-2011 3-28-20 PMYou can download the whitepaper here
http://go.microsoft.com/?linkid=9759264. Please feel free to distribute it to your customers and partners.

In the paper, we closely examine the three major advantages of xRM that stand out. Instead of feature comparisons we focus on the strategic strengths of our offering that is unmatched.

  1. xRM provides familiar, widely used technologies for developers.
  2. xRM allows deploying applications both in the cloud and on-premises.
  3. xRM benefits from Microsoft’s broad platform investments.

Cheers,

Girish Raja



Tracking status against goals with built-in predictability

$
0
0

Microsoft Dynamics CRM 2011 comes with powerful goal management capabilities which can be utilized to set various types of targets, monitor progress against them and hence have the better control over the business. This blog post will provide details on built-in features like auto-calculated goal fields, out of the box charts and dashboards and how these can help to meet the targets. To make this more informative let’s walk through an example.

Organization and goal structure

Kevin is sales manager in a company. He has two sales persons Nancy and David reporting to him. Sales goals using the out of the box revenue metric have been created by Sales manager Kevin for himself and his team consisting of Nancy and David. He has set the goal targets for all three goals in the hierarchy for the current quarter.

clip_image002

Fig 1: Kevin’s view for his goal

Note: For details on how to accomplish this, please refer to earlier blog post here .

When a goal is created for individuals, it gets read only auto shared with them. In this case Kevin’s reports, Nancy and David can see their own goals and hence corresponding targets assigned to them. Goal metric, goal start and end dates along with goal rollup queries provide them with the insight on what exactly is being tracked for this goal.

On Demand Rollup: Calculations of actuals against the goal

Over the goal tenure, individual goal owners work towards meeting the goal target. OOB revenue metric which was used to create the goals above tracks the actual and estimated revenue using the CRM opportunity entity records. Nancy and David close some Opportunities and they mark them as won in Microsoft Dynamics CRM system, these become eligible for contributing to the actual revenue for their goals. They have also added estimated revenue values along with the estimated close date to the opportunities which they believe would be closing out in current quarter.

In the middle of quarter Kevin wants to evaluate overall progress for the checkpoint meeting. He opens up his goal and is able to see the actuals and in-progress values for his goal. He can also see how much target percentage is achieved already. MSCRM system has the capability to periodically roll up the goal data every 24 hours (configurable) so that the updated values are present in the goal records. He clicks on the recalculate button to get the last minute updated data. Microsoft Dynamics CRM System calculates and rolls up actual and in-progress revenue from the Nancy’s and David’s opportunities. Various fields in the goal form like Actual/In-progress Money, Percentage Achieved etc. are populated with the updated data. Please note that the rolled up data is summed up the goal tree as Kevin’s goal is the parent for other two.

clip_image004

Fig 2: Refreshed rolled up data after the on demand rollup.

Note: To understand the details of various goal fields and rollup please refer earlier blog post here.

Kevin is happy to see that the 71% target is achieved for his goal. Inline child goal grid provides him information that Nancy and David are at 80% and 67% respectively against their target with satisfactory revenue in the in-progress bucket.

Goal Projection fields

In addition to the system calculated percentage achieved field which is present on OOB goal form, there are few more fields present which are also auto-computed by Microsoft Dynamics CRM system and help provide the capability to better understand the goal projections and current state.

Attribute Display Name :

Schema Name

Description

Today's Target (Decimal)

(ComputedTargetAsOfTodayDecimal)

A system-generated expected amount for Actual (decimal) against the target goal.

Today's Target (Integer)

(ComputedTargetAsOfTodayInteger)

A system-generated expected amount for Actual (Integer) against the target goal.

Today's Target (Money)

(ComputedTargetAsOfTodayMoney)

A system-generated expected amount for Actual (Money) against the target goal.

Today's Target (Percentage Achieved)

(ComputedTargetAsOfTodayDecimal)

A system-generated expected value for percentage achieved against the target goal.

These projection fields are auto-calculated at the times of goal rollup, just like percentage field. The formula used is -

Today's Target = GoalTarget * (TimePeriodElaspedForGoal / TotalGoalTimePeriod)

OR

Today's Target =

GoalTarget * ( CurrentDate – GoalStartDate + 1 ) / ( GoalEndDate – GoalStartDate + 1)

For example say Target of the goal is 100k and Goal duration is 1st November to 30th November. If Today’s date is 21th November, then projected percentage for today would be

Today's Target (Percentage Achieved) = 100 * 21/30 = 70.00 %

Today's Target (Money) = 100k*70% = 70k

Note: These calculated fields can be added to goal grids and goal forms from customization area.

Out of the box goal charts

Kevin Clicks on the “view charts” bar on the goal grid and selects OOB percentage achieved chart. In addition to providing visual representation of values against the goals in the view, this chart also has the indicator for the today’s percentage achieved target. In other words this indicates what should have been the ideal percentage achieved value if there is a steady linear growth over the goal time period to reach 100% target. This chart has the power of displaying all the goal types (money/decimal/sum) at one place and provides quick visual representation of their percentage achieved status.

clip_image006

Fig 3: Goal percentage achieved chart.

Since the goals in the current example are created using the Revenue metric (Money Based) Kevin switches to the “Today’s target Vs. Actuals (Money)” chart. This chart provides him information on what money amount is already achieved and what should ideally have been achieved by today. Kevin can hover over the today’s target link to see the exact values.

clip_image008

Fig 4: Today’s target Vs. Actuals (Money) chart

Kevin is happy to see that the actuals are very promising. He finally navigates to all goals view in the grid and selects the “Goal Progress (Money)” chart to get the detailed overall picture.

clip_image009

Fig 5: Goal Progress (Money) Chart

This chart provides him very useful information regarding goal target and how the current progress stands against it. This charts stacks in-progress money value on top of achieved money value which provides an indication of what can be the total revenue at end of the period. Bar for the individual goal has the markers for goal target (goal icon) and projected fields (small triangle) which helps in visualizing the overall picture. From the chart above Kevin concludes that the Nancy would overshoot the target easily but there are challenges for David. He also sees that aggregated groups revenue for his group which is measured by his goal (extreme left) is nearly on track and currently seems to be falling short by 5k.

Sales performance Dashboard

Microsoft Dynamics CRM 2011 provides out of the box sales performance dash board which provides the insight into the sales system performance. The charts discussed above are very informative for Kevin and these are present as sales performance dash board out of the box. There are out of book (oob) views present which provide the capabilities of viewing the groups goal in addition to owned goals. Kevin sets this dash board as his homepage.

clip_image011

Fig 6: Sales performance dashboard.

Thanks,

Hemant Gaur



Driving Success with the New Microsoft Dynamics Marketplace!

$
0
0

On January 17th we launched Microsoft Dynamics CRM Online in 40 markets and 41 languages, fundamentally changing the shape of the on-demand CRM category around the world.  On the same date, we launched the new Microsoft Dynamics Marketplace (http://www.microsoft.com/dynamics/marketplace), available and localized in 20 markets: Australia, Belgium, Brazil, Canada, Chile, Colombia, Denmark, Germany, France, India, Italy, Mexico, Netherlands, Portugal, Switzerland, United Kingdom, United States, Austria, Russia and Japan.  The new Marketplace is a critical component of our current launch strategy for Dynamics CRM Online and Dynamics CRM 2011, and is a key element of our Dynamics ERP strategy as well.

The Microsoft Dynamics Marketplace is a new online service – based on Microsoft Pinpoint -- that helps our customers maximize the relevancy and value of their Microsoft Dynamics investments by connecting them with valuable, high-quality applications and professional services from our worldwide Microsoft Partner Network (MPN).   At launch, the Marketplace has more than 1,400 solution listings, including over 700 application listings and over 700 professional services listing for both CRM and ERP

Frequently Asked Questions

This document provides answers to the most frequently asked questions relating to the Microsoft Dynamics® Marketplace.

About the Microsoft Dynamics Marketplace

Q:           What is the Microsoft Dynamics Marketplace?

A:            The Microsoft Dynamics Marketplace is an online service that connects Microsoft Dynamics customers with partner business listings for Microsoft Dynamics applications, professional services, or both.  It provides searchable listings of partner applications, professional services, and firms.  Customers visiting the marketplace can browse and search for solutions and service providers, view demos, and download and deploy Dynamics applications (directly from Microsoft Partner websites). 

Q:           Who is it for?

A:            The Microsoft Dynamics Marketplace serves several groups including Microsoft Dynamics partners, customers, and developers.  Partners can use the marketplace to showcase their software and professional services offerings. Customers can search for the best Microsoft Dynamics solutions and professional service providers for their needs. Developers can search for and download widgets, add-ons, and open source solutions.

Q:           What's the URL for the Microsoft Dynamics Marketplace?

A:            www.Microsoft.com/Dynamics/Marketplace

Q:           How does the Microsoft Dynamics Marketplace work?

A:            The marketplace is powered by Pinpoint, Microsoft's core marketplace platform for business customers seeking skilled IT experts, innovative software applications, and professional services.  At the end of June 2011, the Microsoft Partner Network will retire the current Solution Profiler and Solution Finder tools. Pinpoint will replace these tools and become the official Microsoft business marketplace. All application and service listings on the Microsoft Dynamics Marketplace are pulled directly from the Pinpoint platform.

Q:           What countries and languages does the Microsoft Dynamics Marketplace support? 

A:            By the end of February 2011 the Microsoft Dynamics Marketplace will be available in 35 countries and 19 languages. Counties supported: Australia, Austria, Belgium, Brazil, Canada, Chile, Colombia, Czech Republic, Denmark, Finland, France, Germany, Greece, Hong Kong, Hungary, India, Ireland, Israel, Italy, Japan, Malaysia, Mexico, New Zealand, Netherlands, Norway, Portugal, Poland, Russia, Romania, Singapore, Spain, Sweden, Switzerland, United Kingdom, and United States.

Listings on the Microsoft Dynamics Marketplace

Q:           How does a partner get listed on the Microsoft Dynamics Marketplace?

A:            To participate in the Microsoft Dynamics Marketplace, a partner must create a listing on Pinpoint. Partners self-profile themselves and their offerings, which are then validated by Microsoft subsidiaries. See http://pinpoint.microsoft.com/getlisted for more information. 

Q:           Are there special qualifications required for Microsoft Dynamics Marketplace listings?

A:            Yes.  A Microsoft partner needs to have either the CRM or ERP competency in order to get listed on the marketplace.  For solution listings, partners must be an authorized reseller of Microsoft Dynamics solution or have a solution that is verified as Microsoft Platform-Ready.  Additionally, there is an optional Certified for Microsoft Dynamics (CfMD) designation available for an additional fee.

Q:           Is there a fee for listings on the Microsoft Dynamics Marketplace?

A:            Listings on the Microsoft Dynamics Marketplace are free for Microsoft partners, however solutions and applications must meet the competency and Microsoft Platform-Ready requirements. There are fees for the optional Certified for Microsoft Dynamics (CfMD) designation.

Q:           What are the fees for Certified for Microsoft Dynamics (CfMD)?

A:            Fees for the Certified for Microsoft Dynamics designation begin at $2,800 depending on the solution. More information about the CfMD program is available here.

Q:           Who does the testing, and decides the criteria for testing?

A:            For Dynamics CRM, it's a self-test accessible through www.MicrosoftPlatformReady.com. For Dynamics ERP (AX, NAV, GP, SL) testing is available through Lionbridge/VeriTest.  More information can be found at http://pinpoint.microsoft.com/getlisted.

Q:           What can partners list and the Microsoft Dynamics Marketplace, and what are the listing options?

A:            Partners have five options for what they can list on the Microsoft Dynamics Marketplace:

  • Freeware – You can develop a compelling freeware application and use it to generate interest in billable hours work.  A freeware offering can be a good way to attract leads.
  • Open Source Samples – An open source sample can be an effective way to court interest from Dynamics developers who are building their own solutions.  The open source sample can be the catalyst for building a business relationship with the developer who uses it.
  • Widgets and Add-ons – In some cases, you might develop a user-facing solution component that complements a larger application or offers distinctive functionality.  Widgets are a good example of this kind of component.  In addition, you may list application “building blocks” that developers can use to accelerate their solution delivery.  Examples of these types of add-ons include templates, dialogs, workflows, and .net objects.
  • Turnkey Solutions – It is possible to develop a fully featured, turnkey solution based on Dynamics CRM.  Examples include industry-specific CRM solutions, integrations with other applications, and applications customized to specialized information worker roles.
  • Listing Only – This option is for professional services firms that want to list themselves for billable hours work.

Q:           Can partners list solutions in multiple countries?

A:            Yes, partners can list their solutions in counties outside of their “home country” provided they include two Microsoft Dynamics Customer References per country they wish to list in.

Dynamics Marketplace Functionality

Q:           How do partners indicate pricing for either Cloud or Standalone purchase?  Does the Microsoft Dynamics Marketplace allow the option of click-try-buy?

A:            Licensing options, including pricing, would be included in the application listing. Today the Microsoft Dynamics Marketplace supports ‘click’ and ‘try’; ‘buy’ will be added in the future.

Q:           Does the Microsoft Dynamics Marketplace offer an e-commerce function for partners to sell their solutions via the marketplace?

A:            Not at this time.  In the current release, the marketplace allows listing of solutions that are for sale, but the partner is responsible for handling the transaction.  Future releases will offer full e-commerce functionality.

Q:           Does Microsoft collect the fees for partner solutions and pay a royalty to the partner?

A:            No. This “bill on behalf of” partner function is not available in the current release of the marketplace; however, this functionality is being considered for future releases. The partner is responsible for invoicing and collection of payment. 

Q:           If partners are charging per user per month and need to cripple the software if not paid, can code be included that reports user counts back via the application?

A:            Yes

Q:           How can a partner secure a downloadable solution on the marketplace to avoid copying e.g. by a competitor?

A:            In the current release of the marketplace, anyone is able to download solution files to their computer.   As a result, this does pose a risk that a competitor could download your solution. The plan for future releases of the marketplace includes direct provisioning of solution packages into a Microsoft Dynamics CRM instance in order to help mitigate this risk.

Q:           Is it possible to deactivate / hide the marketplace in a Microsoft Dynamics CRM 2011 environment?

A:            For users without the privilege of viewing and downloading applications from the marketplace, an administrator can turn off/hide access to the Microsoft Dynamics Marketplace.

Cheers,

Matt Valentine




Dialog’s Query Step: Demystifying the Advanced Mode Capabilities

$
0
0

Microsoft CRM Dynamics 2011 beta is out and so is the brand new feature included in this release: Dialogs. As most of you would have already guessed, Dialogs share a part of the infrastructure with already shipped Workflows feature. In addition, Dialogs include some new authoring steps which provide a richer authoring experience along with systematic synchronous runtime capabilities. One such step is the Query step which allows author to actually query CRM records/database at runtime using fetchXml and use the results in later steps of the Dialog. Again those of you who have played with the feature would know Query step has two different modes:

1. Design New: In this mode, author can specify the CRM fetchXml based query using the familiar advanced find control

2. Modify Query Variables: The fetchXml created in the first mode can be parameterized in this mode to provide runtime handle over the conditions used in the fetchXml

Let us have a quick preview over scope and capabilities of the query step. We will start by formulating a simple scenario where the user wants to search the CRM records for an account with a particular name taken as a runtime input from the user. Later we will move on to scenarios with more complex and powerful conditions like search with partial names, search with wildcards etc. Before we begin let us create a small setup to better understand the guiding example.

Scenario Setup

1. A Dialog over account containing following 3 steps:

a. Prompt with simple text type response to get a keyword from the user

b. Query step which will consume the keyword and generate the fetchXml

c. Prompt to show the results to the user

clip_image002

2. Following accounts are present in the system

clip_image004

With this setup, let us explore various scenarios.

Scenarios

1. Accounts with names equal to the keyword

Click on ‘Set Properties’ button to launch the query dialog. Select ‘account’ entity in the advanced find control and set condition as:

clip_image006

Parameterize the condition in modify query variables tab by deleting the hardcoded value “Temp” from Variable1’s textbox and inserting slug corresponding to Keyword prompt step

clip_image008

Save the step without changing the tab. The corresponding fetchXml generated will have the dynamic value of keyword in place of “Temp”

2. Accounts with names containing the keyword

Add condition in advanced find:

clip_image010

Parameterize the condition in modify query variables tab by deleting the hardcoded value “Temp” from Variable1’s textbox and inserting slug corresponding to Keyword prompt step (the same way as it was done in first scenarios.

However since the variable values are direct text replacements within the fetchXml, there is a more powerful option available for ‘Like’ operator by using SQL wildcards.

For example, a parameterization like below is possible in query step which cannot be done through ‘advanced find’ control.

clip_image012

During runtime, this will return all the records containing the keyword followed by static word ‘Limited’. In our case, the results for keyword “ABC” would be:

clip_image014

Similarly, other wildcards:

Wildcard

Use

_

Single letter replacement

[characterlist]

Any single character in characterlist

[^characterlist]

Any single character not in characterlist

*Note that this would work only in case of ‘Like’ operator of fetchXml and not with equals.

**If these operators are to be used not as wild cards, these should be escaped properly by enclosing them within square brackets [%] & [_]

3. Using default account in parameterization

Suppose we want to select a single account from a parameter, but if that parameter is null, we want to provide a default account. This scenario is supported by the existing workflow infrastructure through “default value” section in form assistant which works on “select first not null” operation. For data types other than lookup, it works in the same way as in other places in the designer. However for lookups, there is a slightly different procedure that has to be followed.

Suppose we want ABC Corporation as the default lookup. Add condition in advanced find as:

clip_image016

Now go to parameterization tab, move the GUID in the variable1 value textbox to the default value textbox of the form assistant and insert the slug.

clip_image018

In this case, if the parent account of the account on which Dialog was executed is not set, the default account of ABC Corporation would be used.

4. Checking whether query returned any records

A typical case when before creating a record you first want to check whether a record with the same name already exists. Then you can use the record count slug of query step inside a condition step as follows:

clip_image020

Data Types and Operators supported for Parameterization

Currently the following data types along with the specified operators are supported for parameterization

Data Type

Operators Supported

Integer

All except Contains Data/Does not Contain Data

Double

All except Contains Data/Does not Contain Data

String

All except Contains Data/Does not Contain Data

DateTime

Operators which require integral right hand value like Last X Hours, Last X days etc

Lookup

Equals/Does not Equal

OptionSet

All except Contains Data/Does not Contain Data, will not work when multiple options are provided to Equals operator in advanced find which in turn translate to ‘in’ operator in fetchXml

Things you should be aware of before you start authoring

1. Structure of CRM fetchXml generated through advanced find cannot be modified. Thus any query which is not currently supported by advanced find cannot be used in Dialogs. For example as someone pointed out on forum, query on subject entities is not possible as subject entity is not advanced findable.

2. Parameterization of conditions is allowed only for conditions up to 1 level of depth. For example in the following case, the marked values will not be open for parameterization:

clip_image022

In such cases, alternative query designs should be considered.

3. If value of some specific column query result has to be used later in the Dialog, then that particular column has to be included in the fetchXml through add columns in advanced find.

4. If author switches back to Design New tab from parameterizations tab, all the current parameterizations will be lost. This is because the structure of the fetchXml itself can be changed through advanced find.

5. In parameterization tab, strong type validation of values inserted in textboxes is not enforced. A mismatched type will however throw an error at the runtime.

6. Parameterization of lookup type of variables is neither metadata driven nor hardcoded GUID value provided is verified in any way during authoring. Any discrepancies/permissions issue will lead to issues when you are running the script.

7. Query Records parameter should be avoided in case exact number of record count is required and large numbers of records are expected. This is because the value is upper capped by current records per page user setting.

Cheers,

Devansh Dikshit

Microsoft Dynamics CRM 2011 Scenario Demonstrations

$
0
0

To support the launch of Microsoft Dynamics CRM 2011 we created several scenario-based demonstrations.  These demonstration videos highlight how Microsoft Dynamics CRM 2011 works using scenario-driven examples:

  • Drives Sales Productivity – demonstrates how a sales representative uses Microsoft Dynamics CRM 2011 to gauge their performance vs. set Goals, identify the best opportunity to work, instantly communicate to make quick decisions using Lync, create a Quote using Word Mail Merge and save it to collaborate using SharePoint Online.
  • Maximizes Marketing Impact – demonstrates how a marketing representative uses Microsoft Dynamics CRM 2011 to manage campaign activities, create dynamic marketing lists, generate leads, easily import data, guide users through the process of qualifying those leads, and automatically assign leads for follow-up by regional salespeople.
  • Optimizes Customer Experiences – demonstrates how a customer service representative uses Microsoft Dynamics CRM 2011 to track call center statistics, manage caseloads with queues, deliver consistent customer dialogs, and track follow-up with customers.

These and other CRM videos are also available from the Microsoft Dynamics CRM channel on YouTube.

Enjoy!

Eric Boocock



Announcing Donation Management for Microsoft Dynamics CRM 2011

$
0
0

Hello CRM friends. I’m happy to announce that Donation Management for Microsoft Dynamics CRM 2011 has been posted to the Dynamics Marketplace! Donation Management is available in English for the US and Canada right now, and we’re gauging interest levels outside North America.

Though this is branded as a “version 1.0”, in fact the solution builds upon our previous work in the not-for-profit space – formerly known as the “Not for Profit Accelerator” or the “Charity Accelerator”. The older NfP Accelerator is in use by museums, charities, and public broadcasting corporations across North America. Where the former accelerator was restricted to CRM Online, this version works across CRM Online, on-premises, and partner-hosted. It’s now available at no charge for customers of Microsoft Dynamics CRM 2011 or as part of the on-going $9.99/user/month not-for-profit pricing for CRM Online in the United States. Also, you may remember the Dynamics Marketplace from a blog article in 2010.

This solution was built in collaboration with Microsoft Community Affairs and showcases the flexibility and customizability of Microsoft Dynamics CRM 2011. The package re-skins CRM for non-profit organizations to help manage their donation pipeline, memberships, benefits, events, and fundraisers. A future release will also include capabilities to directly track electronic contributions. Also, look for a user guide to ship in the next several weeks – we have the awesome group NPower Seattle lined up to help us craft documentation.

Also, if you know anyone in the charitable space that’s looking for a CRM solution, please point them to http://crm.dynamics.com/ngo first.

Cheers,

Matt Cooper



Microsoft Dynamics CRM 2011 ~ Book Club

$
0
0

Today’s guest blogger is CRM MVP Jerry Weinstock who is the Business Development Manager at CRM Innovation. CRM Innovation builds Email, Marketing and Event Management solutions for Microsoft Dynamics CRM.

I am looking across my office right now at a bookshelf and I see that it is time to do a refresh of our Microsoft Dynamics CRM Library. I have six CRM 4.0 books that need to be replaced by the new materials coming out from independent authors. I can tell your first hand that the information in these books has proven to be absolutely invaluable in our work with the Microsoft Dynamics CRM product. Even at $25 to $50 or so each they have given our team members an incalculable return on investment.

These books should be on your bookshelf if you are a Microsoft Dynamics Partner and there are several in the group that End Users will also find valuable. I have pre-ordered all of them and it will be the best $350 we will spend this year on professional development.

The book marketplace for CRM has really improved with each corresponding version of the CRM system itself and I think it safe to say there is a book for everyone in the CRM food chain - .net programmer to new end user.

Based on my experience with their predecessors there is no one ‘must have’ they will all bring their own unique value proposition. Just get them all!

I have listed the books in order of their availability. Ready to buy? Just Bing the titles.

Title & Cover

Author(s)

Authors’ Company

Availability

Notes

Microsoft Dynamics CRM 2011 Step by Step

clip_image001

Mike Snyder, Jim Steger

Sonoma Partners

February 4

Two MVPs get together to write their 2nd book in this series

Pro Microsoft Dynamics CRM 2011 Development: Creating CRM and XRM solutions

clip_image002

Justin Mathena, Aaron Yetter

Altriva Solutions

February 15

Two CRM consultants collaborate on their second CRM book.

Microsoft Dynamics CRM 2011 Administration Bible

clip_image003

Matthew Wittemann, Geoff Ables

C5Insight

March 1

A MVP and a tenured business consultant collaborate on CRM

Using Silverlight with CRM 2011
clip_image004

David Yack

Colorado Technology Consultants

March 1

Another CRM/Silverlight book by an author who has several publications to his credit in this space.

Maximizing Your Sales with Microsoft Dynamics CRM 2011

(No Image Available)

Edward Kachinske, Adam Kachinske, Timothy Kachinske

Innovative Solutions

March 16

More than 24 books from this team. 4.0 version under the same name

Microsoft Dynamics CRM 2011 Unleashed

clip_image005

Marc J. Wolenik, Damian Sinay, Rajya Vardhan Bhaiya

Webfortis

April 14

This team’s fourth book in their ‘Unleashed’ series.

Working with Microsoft Dynamics CRM 2011

clip_image006

Mike Snyder, Jim Steger

Sonoma Partners

April 15

Two MVPs get together to write their 3rd book in this series

CRM 2011 as a Rapid Development Platform
clip_image007

David Yack

Colorado Technology Consultants

May 1

Another book in the series from this author about extending CRM way past it’s base configuration

Sams Teach Yourself Microsoft Dynamics CRM 2011 in 24 Hours

clip_image008

Anne Stanton

TIDBITS on Microsoft Dynamics CRM

August 15

A tenured CRM Consultant and Business Analyst at a CRM customer. Similar to Anne’s book for CRM 4.0

Have fun learning,

Jerry Weinstock

PS. A dozen CRM MVPs have banded together to write an insightful book on Microsoft Dynamics CRM 2011; the expected availability is March – title to be determined. We will keep you posted.



Welcome to the World of Dialogs - Part 1

$
0
0

The Dialog is a brand new feature built on top of Windows Workflow Foundation 4 in Microsoft CRM 2011. Before I delve into details of power, the Dialogs provide, this is important to let you know that now the Workflows and Dialogs are collectively known as Processes in Microsoft CRM 2011. In simple words a Workflow or a Dialog is a Process in Microsoft CRM 2011 which does a set of actions defined by the author of the Process. A workflow is a backend process to accomplish some task defined by Workflow author asynchronously whereas a Dialog is a frontend, interactive user interface based process which takes user inputs and then does the job synchronously as defined by the Dialog author. Just like its Workflow cousin Dialog also is based on Windows Workflow Foundation and can be extended by adding new Custom Workflow Activities supported by .Net 4.0.

What Can You Do with Dialogs?

Dialog is a frontend On Demand Processes which present the Prompts and Tips to the user running the Dialog through a nice user interface and can take inputs from the user for performing the predefined activities in background. It has a lot of capabilities, some new and some borrowed from existing CRM Workflows. Here is the list of what you can do with Dialogs.

clip_image001

1. Present a set of questions and capture responses from the customer. You can do this in CRM Dialogs using “Prompt and Response” steps. You can take responses in form of Textboxes (multiline and single line), one from the Option Sets(Radio buttons and Picklists). The responses can be of three types such as Whole Number, Decimal numbers and Texts. One or more “Prompts and Responses can be presented to customer on one Page.

2. You can create a link to a static web page, the link would appear on the Dialog page either independent or embedded as part of some Prompt or Tip Text. The option to define a web link comes on “Prompt and Response” designer page.

3. You can use CRM Queries (similar to Advance Find queries) to verify or to present the data of the customer. The queries can be parameterized also where you can construct the queries based on responses taken from customer. All these can be done using “Query CRM Data” step available in Dialog authoring page.

4. You can define Variables and construct Formulae to use in your Dialogs. To do this you need to use “Variable” or “Input Arguments” along with “Assign Value” steps.

5. You can delegate the job of performing some set of actions predefined in another Dialog or Workflow using “Link Child Dialog” or “Start Child Workflow”. The child Dialog will be a UI based frontend process which will take the control from parent Dialog whereas a child Workflow would do its job asynchronously while parent Dialog process is still running.

6. Like workflows, Dialogs also have capability to take a decision using “Check Condition” (if <condition is true> then <take following actions>), “Conditional Branch” (if <condition 1 is true> then <take following actions> else-if <condition 2 is true> then < take following actions >), and “Default Action” (if <condition is true> then <take following actions> else <take following actions>) steps.

7. “Stop Dialog” is provided to stop the Dialog run after the set of actions are taken from the decision taken as defined in above statement and the author of Dialog does not want to run the activities coming after Decision blocks. If “Stop Dialog” is not used then the activity following the decision blocks will resume after one of the decision block(Check Condition or Conditional Branch or Default Action) is run.

8. Other activities borrowed from Workflows are “Create Record”, “Update Record”, “Assign Record”, “Send Email” and “Change Status”. The only difference is that these actions are performed synchronously with the flow of Dialog unlike Workflows where these operations are handed over to Async Server.

9. You can write Comments, which can be later utilized, while Dialog is running.

10. You can use the Dialog Session information for analytics. Each time a Dialog is run, all the information such as customer responses, records created/updated along with comments written by user running the Dialog is recorded in Dialog Session record. Dialog Session entity has 1 to Many association with Dialog as well as Entity for which Dialog is created. Note that for privacy purposes you can turn off recording the customer’s response into Dialog Session while authoring the Dialog.

All above activities are available on the Dialog Designer out of box as shown in above figure. The users familiar with Workflow authoring can easily correlate to the available activities for Dialogs. The list above does not end with the out of box activities provided. Apart from the steps provided out of box, user can extend the list with the creation of Custom Activities using Windows Workflow Foundation just like Workflows. Please note that the only custom activities created using .Net 4.0 will work for Dialogs. We will try to cover that very soon.

In addition to above list, the biggest advantage of Dialog is that you can create or add the Dialogs as part of Solutions to deploy the Dialogs on new systems.

Getting Started with Dialogs

Before we start talking about the Dialog creation let us get ourselves familiar with the new changes in CRM 2011 for surfacing the Workflows and Dialogs along with few terms we will be using in our further conversation.

Process of category ‘Dialog’ or ‘Workflow’

As I wrote in the beginning of this blog that the Dialog is a Process as the Workflow is. The same entity represents both, the Dialog and the Workflow. In fact the Workflow entity available in previous version has just changed its display name as “Process”. Only a new attribute with name “category” added to Process Entity decides whether a Process is a Dialog or a Workflow.

Process Center: Entry Point for Processes Creation – Dialog/Workflow

You can find the Processes under Setting tab in Web Application whereas under Setting folder in Outlook clients.

clip_image002

Context Entity

A Dialog is always created in the context of a CRM Entity. Once the Dialog is published and ready to run, the Dialog can be run only in context of a record of context Entity, as applicable to Workflows before.

Change in Workflow creation UI

In earlier version when you created a Workflow you just got a web dialog to fill the Workflow name and the context Entity. The same experience is still there for creating a Process. The only difference is now you have to choose whether the new Process you are creating is of category Workflow or Dialog.

clip_image004

The Category field has two options to choose from, “Dialog” or “Workflow”. Workflow Name is now changed as “Process Name”.

Process Designer

After you give these values and click Ok you will get a new web page as shown below. We call this as the “Process Designer

clip_image005

The designer is the place where you author the steps to be performed by the Dialog.

‘Publish/Unpublish’ changed to’ Activate/Deactivate’

Other changes happened in CRM 2011 are that now the “Publish” button on Workflow designer is changed “Activate”. Similarly, the “Un Publish” is now known as “Deactivate”. The effect of this change is that the Status of Processes can be Draft or Activated. A Process is in Draft state until you Activate it.

Now let us move to create our first Dialog.

Just before we say “Hello World!

In order to author a Dialog you would probably like to plan what the Dialog is going to do. Authoring the Dialog would come to next. And finally comes the testing if the Dialog is doing what was it planned to do. The same is reflected in following diagram.

clip_image006

Plan

1. Plan Entity for which Dialog is needed

2. Plan the steps which the Dialog would do when run

Author

1. Create the Dialog for the planned Entity

2. Author the steps on Dialog Designer using the Steps available in Designer’s Add Menu

Activate

1. Activate the Dialog for Testing

Test

1. Create a Test Record of the Entity

2. Test the Dialog by running the Dialog for the Test Record

3. If works as per plan leave Activated otherwise Deactivate and make correction.

Hello World!

You had a lot of patience! Now it’s time to create our first Dialog through Application in MS CRM 2011. The same can be created MS CRM 2011 SDK, however the Dialogs created through SDK would not open in designer, again as was the case with Workflows.

As the learning of all the programming languages starts with our familiar “Hello World!” program, we will start our journey with Hello World. Let us create a Dialog displaying “Hello World!”.

Plan

1. We need an Entity to create Dialog for. Let us take “Account” entity to do this.

2. We need to display “Hello World!” to the user running the Dialog. To do this we need

a. A Page where the “Hello World!” would be displayed

b. A “Prompt” which would be used to store “Hello World!”. Fortunately, Dialog provided “Prompt and Response” step to have no Response from user. If we set the Response Type as “None” then the Prompt would work as a message.

Author

Here is step by step method to create our Hello World! Dialog.

1. Navigate to Processes folder under Settings

2. Click New, you will get a dialog to create a Process

3. Give Process a Name say “Hello World”, choose “Account” form the Entity drop down and “Dialog” from Category drop down as shown in following figure.

clip_image008

4. Click OK. You will get a designer page to define the Dialog Activities as shown in one of the above figures.

5. On designer, click on Add Step menu available on Designer and choose “Add Page”

clip_image010

6. You will get something as shown next

clip_image012

7. Now type the page description and select the row “Select this row and add click Add Step” written on designer. Then Click the Add Step menu and choose “Prompt and Response” from the menu as shown below.

clip_image014

8. You will see the result of previous step as

clip_image015

9. Click “Set Properties”, you will get a new web window to define the “Prompt and Responses”. Fill the values as shown in following figure

clip_image017

10. Since our Dialog is just going to display “Hello World!” so we do not need to set the Response Type other than “None” which is default value for Response Type. However you can explore the other options available in Response Type drop down and Data Type drop down. Data Type options are valid for other than “None” Response Type. More about the options of data types, response types and their usage in later blogs, for now let’s move to next step for our first Dialog. Click “Save and Close” and You will see the Prompt and Response defined on the designer as

clip_image018

Activate

11. Now Activate the Dialog by clicking Activate button available on Designer.

clip_image019

12. Your first Dialog is now Ready to Run.

Test

Let us test it by running it with some Account Record context. For this you need to either select an Account record in the Account grid or open an Account record form. Let us try it from Account grid.

1. Open the Account grid in your CRM application and select a record in grid.

2. You can notice in the Ribbon “Start Dialog” button gets enabled.

clip_image021

3. Just click the Start Dialog button and choose the “Hello World” Dialog from the lookup.

clip_image023

4. Click OK to say the World “Hello!”

clip_image025

Wow! You are done with Hello World!

Let’s finish the Dialog session first. Click Next and you will get the last screen for this session.

clip_image027

The last screen is common to all the Dialogs you design to give the user option to go back on previous screen even after the actual last screen if the user wish.

So; are we done with our testing? Not yet! Unless we verify the Dialog Session to see if it has recorded the information captured during Dialog run. Let us now open the Dialog Session created for the run we tested. In order to do this open the Account record for which the Dialog was run. Yes you got it, the same record which you selected in Account grid before clicking “Start Dialog”. Click on the “Dialog Session” associated grid on the Account Record page as shown below and you will be able to see the Session record inside the associated grid.

clip_image029

Open the Dialog Session record visible in Dialog Session associated grid. It looks like shown below.

clip_image031

You can see the session information is recorded with all the information captured during Dialog run.

Life Cycle of Dialog Session

The Dialog Session record gets created as soon as you start running a Dialog. The progress recording could be seen by clicking “Summary” button on the window displaying the progress of Dialog run. Initially the Dialog Session is in “In Progress” state. If you go through the complete run of the session then the final state of the Dialog Session is “Completed”. And if you cancel the Run while session is still in progress then the state of the Dialog Session will be “Canceled”

Remember, if you cancel the Dialog Session you would not be able to resume it later.

What Next?

We authored the Dialog and tested it too. Now I assume you have enough knowledge to start exploring the world of Dialogs yourself.

We will be coming up with detailed usage of various options and tips and tricks available in Dialogs. Till then try your hands on this powerful feature.

Cheers

Ramesh Pandey

Get Social with Vibe and Microsoft Dynamics CRM 2011 (free Community Edition)

$
0
0

Today’s CRM MVP guest blogger is Mike Snyder, co-founder and principal of Sonoma Partners. Recognized as one of the industry’s leading Microsoft Dynamics CRM experts, Mike is a member of the Microsoft Dynamics Partner Advisory Council, and is a Microsoft Dynamics CRM MVP. He co-authored several books about Microsoft Dynamics CRM for Microsoft Press that have sold more than 50,000 copies worldwide.

imageMicrosoft released the 2011 edition of Microsoft Dynamics CRM Online last week, and Sonoma Partners has decided to celebrate by offering everyone -- not just existing Sonoma Partners clients -- the newest release of Vibe for free. And yes, we mean for free.

We believe in the Microsoft Dynamics CRM community, and therefore we want to offer Vibe to the community an alternative to Salesforce.com's Chatter. Because we're not offering support -- think of Vibe as a public beta -- we can afford to give it away, so download Vibe, use it, and enjoy it on us. We firmly believe social networking is a critical way for businesses to communicate, and we want to support that philosophy by spreading Vibe far and wide.

We developed Vibe as an internal social networking application that centers on CRM-related data: employees can collaborate and share details about new opportunities, projects, accounts, customer information, and more. Vibe uses Microsoft Dynamics CRM as the data repository and uses Dynamics CRM Workflow to automatically post feeds based on CRM usage and data.

Vibe Community Edition:

  • Combines the ease-of-use of Facebook and Twitter with Microsoft's powerful CRM platform.
  • Is easy to install.
  • Posts important CRM data -- but also allows users to manually post information to a feed.
  • Lets users create and maintain their own feed subscriptions.
  • Has native integration to Gravatar so users can personalize an avatar for their feed.
  • Allows users to search across all feeds.
  • Supports hash tags in posts (perfect for you Twitter-philes).
  • Includes a usage analytics dashboard.
  • Works with Microsoft Dynamics CRM Online and Microsoft Dynamics CRM 2011 on-premise editions.

We've posted the free community version of Vibe on the Dynamics Marketplace and included online help so you can download it and get started right away.

If you’re new to Vibe and want to learn more, you can get a quick overview from this screencast:

If you're evaluating Chatter and Salesforce.com, think about trying Vibe with Dynamics CRM instead. (Not only is it a great product, but the price is right!) Keep in mind that Vibe is not supported -- but we think you'll love it just the same.

So come on down, get Microsoft Dynamics CRM 2011 and start sharing data with Vibe!

Cheers,

MVP Mike Snyder



Welcome to the World of Dialogs - Part 2

$
0
0

This post is in continuation to the previous introductory post on Dialogs Part I. In this post, we’ll take you through an example of contact creation dialog and give you a basic introduction to data slugs, how to use them and also, how to use a data slug for Optionset values. This post also contains a brief introduction of the running dialog like tips, comments, next, previous etc.

So, let’s start with an example of how to create/author a basic dialog which takes input from the user and based on the inputs received, creates a contact in Microsoft Dynamics CRM 2011. We will be creating the Contact on outgoing/incoming Phone Calls. The Phone Call will be the context Entity.

Here is a screenshot of a running dialog:

clip_image002

Authoring Contact Creation Dialog

1. Go to Settings->Processes and click New.

2. A dialog will appear. Fill the details as shown below (Don’t forget to choose category as dialog):

clip_image003

Click Ok.

A new window will appear.

3. Click Add Step->Page as shown below:

clip_image004

4. Type page description as: Contact's first, last and middle names

5. Add step->Prompt/Response and click on Set Properties, you will get a page to set the Prompt and Response properties.

6. Fill the required information as shown in the following figure(Response Type: Single Line, Data Type: Text):

clip_image005

And then click on Save and Close.

7. Add two more prompt/response steps in the similar way asking for Middle Name and Last Name. You can add these prompts on same page or on new pages if you want to take only one input at a time.

8. Then add a prompt/response step with response type as Option Set (picklist) and ask for gender of the contact as shown below. We’ll use the response of this prompt to fill the gender information (male/female) on contact form.

     a. Add 2 response values:

          i. Label – Male, Value – 1

          ii. Label – Female, Value – 2

(The values given here should match the exact Optionset values for that particular options taken by gender field of Contact Entity). For example: you want to fill the gender optionset of contact, the value of Male in that Optionset is 1 and that of female is 2. You can check for these values by going to Settings->Customizations-><Entity>-><Field> (Settings->Customizations->Contact->Gender in our case.))

clip_image006

9. Then add one more page and add prompt/response steps to get email address and mobile number in the similar fashion as done for the first page.

10. Now Add Step: Create Record - Choose entity as contact and click on Set Properties button. You will get Contact form to fill the desired values as shown in the following figure.

clip_image007

11. Click on First Name Text Box and choose First Name from local values on form assistant as shown above.

Note: Response Values will be available as Local Values in form assistant

12. Click Add and then click ok.

13. A data slug will be inserted in First Name field (highlighted in yellow color). Data Slugs are the dynamic values which are replaced with actual values while the Dialog run is in progress. In this case, it'll be replaced by the values filled by the user while running dialog for the response of First Name Prompt.

14. Do the similar steps for Middle Name, Last Name, Mobile Phone and E-mail in the same form.

15. Now, click on the gender field in contact form. In look for, choose gender (Label of the gender prompt) and choose Response option set value below and click add. A data slug will be inserted as shown below (encircled one):

clip_image008

Once you are done with setting all the dynamic values the final Contact Form will look as shown below:

clip_image009

16. Click on Save and Close.

17. Add Page with title "Contact has been created".

18. Add step prompt/response and click on Set Properties.

19. In prompt text, write "A contact has been created for" and then add first name, middle name and last name data slugs.

An important point to note here is that you need to add these values one by one otherwise all the Response Values would be replaced in same field. What you need to avoid is shown in next figure.

 clip_image010

If you add all these items in one field, this will mean that if first name is null, then the middle name will be used and if that is also null, then the last name will be used. So, if you want to display all three, then add them separately.

Your final Dialog, you just authored will look like this:

clip_image011

20. Now it’s time to Activate and test it. Click Activate and close the Dialog definition page.

Running Contact Creation Dialog

Contact center sales person will open his phone call activity and click on the "Start Dialog" button present in Process section of ribbon.

Then he'll choose the contact creation dialog from the lookup.

On clicking ok, dialog will start running. He'll ask the questions from the customer as mentioned in the dialog and fill the corresponding responses.

Here is a screenshot of the contact creation dialog in action:

clip_image012

To navigate to the next page, Next button has to be clicked.

Similarly if you want to go back to the previous page, you’ll have to click the previous button.

But it should be kept in mind that if you are going to the previous page, then data in your current page will not be persisted.

To cancel the dialog at any moment, cancel button will have to be clicked.

Summary of what has been done till now as a part of this dialog can also be viewed using the summary button. Clicking on this button will open the corresponding process session record which contains all such details.

Similarly notes can be taken in the comments section while running the dialog. For example, in the above screenshot, we have added the comment that customer doesn’t have an email address.

Tip area shows tips corresponding to the highlighted prompt which aids Sales Person in filling the response. This area is collapsible too in case it seems unnecessary. If you click on the arrow present at the top right of this area, then tip area will get collapsed and the wizard will look like this:

clip_image013

Highlighted pane on the right can be clicked to show tips again.

After clicking Finish button in the last step, go to Sales->Contacts.

You'll notice the following entry (which has been created by the dialog which was just run):

image

In this way, Contact center Sales Person was able to create a contact very easily.

If dialogs are used, then user doesn’t have to go to various grids and create/update/assign various records by himself. He’ll just run the dialog, fill the entries and everything will be done in the background. It also guides user how to interact with the customers and hence, can be used for self help as well as assisted learning.

Watch out for more advanced posts on dialogs which will be published pretty soon.

Manish Arora




Dialogs: Multiple tasks in one shot - Firing Asynchronous Workflows through Dialogs

$
0
0

This post provides a step by step guide on how to make use of Asynchronous Workflows through Dialogs (Interactive Workflows) depending on user responses and requirements. Here we will fire a system job (Asynchronous Workflow) by using the “Start Child Workflow” step in the Dialog Designer of Microsoft Dynamics CRM 2011. Before we start authoring the actual steps let’s get a brief context of the scenario we are targeting.

A Commercial Bank offers the service to “Activate/Update Mobile Banking” through its Customer care center. A customer of the bank calls the Customer Care center to register a request to Activate and Update his mobile banking service. On receiving the “Phone Call”, all that the Customer Service Representative, sitting in the CC center, has to do is to start an Activated Dialog – “Activate or Update Mobile Banking” and proceed through the steps of the dialog to serve the customer. The steps of the dialog would run on these lines:

1. Ask the customer for their Account Number

2. Query for Customer Details from the system and confirm if the caller is a customer of the Bank. This will be done by asking customer’s DOB and verifying with the date stored in the system.

3. Ask the customer about the information they want to update. In this case we will ask for new Mobile Number.

4. Create a Task to do the necessary Update activity

5. Fire an Asynchronous Workflow – “Send Confirmation Email for Update” which will track the completion of the above task and once it is completed, it will send a confirmation email to the registered email address of the customer.

6. Inform the customer that he will receive an Email once the request has been successfully executed.

With this context we are now good to get started with the authoring of the Dialog – “Activate or Update Mobile Banking”.

  • Step 1 : Create a “Dialog” for “Phone Call” entity and name it – “Activate or Update Mobile Banking”

clip_image002

  • Step 2 : Ask the customer about his Account Number

Add a “Page” and a “Prompt Response Step” with Response Type as “Single Line” and Response Data Type as “Text”. In the prompt Text we type “Ask the customer to provide his Account Number”.

clip_image004

  • Step 3 : Query for Customer Details from the system and Confirm

Add a Query Step to fetch the details of the customer using the Account Number Provided above. For more on how to do that please refer to the blog titled “Dialog’s Query Step: Demystifying the Advanced Mode Capabilities”. Use the date retrieved from the query in a Prompt and Response Step to confirm the caller details. Note that to simplify things here, we are just relying on verbal confirmation by matching the date provided by the customer and one returned by the query.

clip_image006

  • Step 4 : Ask the customer about Update Information

Add a “Page” and multiple “Prompt & Response” Steps to capture the update details like Mobile Number etc.

clip_image008

  • Step 5 : Create a “Task” for the Update request

Use the Data collected from the customer like Account Number, Update information to fill in the task form.

clip_image010

  • Step 6: Fire an Asynchronous Workflow to send completion email to customer
    • For this first we create another process which will be a “Child Workflow” named “Send Confirmation Email for Update” for “Task” Entity.

clip_image012

  •  
    • In the Workflow steps, add a “Wait for Condition” step to wait till the “Task Status” is “completed”. In the “then” part of the Wait for Condition, add a “Send an Email” step to send a confirmation email to the registered email address of the Account Holder.
    • Activate the Workflow so that it is available for use.

clip_image014

  •  
    • Now we come back to the original dialog for Phone call and add a “Start Child Workflow” step for the Task that we had created in Step 5 above. Link the workflow created in above step as the child workflow.

clip_image016

  • Step 7 : Inform the Customer about the Email

Add a Page and Prompt Response Step to inform the customer that an Email will be sent when the request has been processed. Activate the dialog so that we can run it.

I hope you find this post illustrative and helpful.

Cheers,

Rahul Agarwal

Navigating between records in a list: What could be better than next & previous?

$
0
0

In Microsoft Dynamics CRM 4.0 to navigate a list of record on a list you had to open each one separately. Open the record, close the record (or not), go back to the list, repeat. On the way you usually ended up with a bunch of open windows. These days are over! Microsoft Dynamics CRM 2011 now has a more efficient way to do this.

Yes, you now navigate to the next or previous record in a list by using the UP/Down arrows clip_image002 which are located on the upper right of the form. It enables you to navigate any list sequentially up or down without ever having to go back to the list. The best thing about this is, it all happens in the same window!

What if you don’t want to simply go to next or previous record? You still have to go back to the list, right? WRONG! You can now navigate to ANY item on a list even if it is on a different page. The button that’s next to the UP/DOWN Arrow buttons opens a menu that contains the list, from which the record that is currently open came from. To help you know which list that is, the name of the view is displayed in the menu. From the menu you can go to any page of the view and select any record to open. The record will still open in the same window. Navigating a list has never been that easy. You can even go to other pages of the list or copy or send a link from the right-click menu. All this works no matter if the record was open from a home page grid, an associated grid or a sub grid.

clip_image004

These navigation options however are only active when the item originated from a true grid. So, when a record is opened from the Recently Visited Menu or the sitemap menu there is no grid to associate it to. In that case these buttons won’t work and you have to do it the old fashioned way. The same is true when you create a new record.

Unfortunately, when you open a record from Outlook you will notice that these buttons are disabledL. As soon as you open a record from a sub or associated grid they will be enabled again.

Cheers,

Karin Zimprich

Authoring Recursive Dialogs

$
0
0

The Dialog feature does not provide loop structure so you cannot do the same action or set of actions in a loop however there is a way to form a virtual loop for performing a set of actions. The way is to use a controlled recursive child Dialog having the desired set of actions being called from a parent Dialog. Here is the trick to do that.

The following hypothetical example will show you how to make Dialog calls recursive. Let us assume that we want to create a Dialog for Customer Service Executive who is creating a Case for her customer. What if she wants to create multiple cases in one call while not starting Dialog again and again and asking the similar set of questions for creating a Case. Here is the step by step method to achieve this. Once acquainted with the trick you can use the recursion for many other scenarios. One such scenario can be creating multiple Contract Lines for a Contract using Dialog Process in Microsoft Dynamics CRM 2011.

1. Create a child Dialog named “create case” for Account entity which ask the relevant things required to create a case. In the example below only Case’s Title is asked in prompt. You can ask for other attributes too by adding as many Add Prompt and Responses steps.

clip_image002

2. Now activate the Dialog and then deactivate without any change. Doing this will make your child Dialog available to be added as its own child, means now recursion is possible for the Dialogs.

3. To control the flow from entering into the infinite loop you can add a Prompt to ask if the customer wants to create another Case. If customer’s choice is yes then add a Link Child Dialog step. In the child Dialog lookup, you would be able to see the same “create case” dialog on which you are currently working. Select this as a child of its own and you got the way to make recursive call to Child Dialogs.

clip_image004

4. Add exit method to get out of recursion using Default Action step thorugh a Page showing Thanks to Customer for registering the Case. The final Dialog will look like below figure

clip_image006

5. Now you are ready to use this recursive Dialog from another Parent Dialog, but before that do not forget to activate this just created Child Dialog. The parent Dialog will look something like below figure.

clip_image008

So you have created a recursive Dialog. Let us test it by running it. Go to Account grid and run this Dialog for any Account record by clicking Start Dialg ribbon button in context to any Account record.

clip_image009

When you run the Dialog, the answer choice on page above of run Dialog will determine whether to recurs or exit.

In above example we saw the way to create recursion and way to exit from recursive loop. Hope this will help you to explore the power of recursive Dialogs in many ways to solve your practical scenarios.

Cheers

Ramesh Pandey



Microsoft Dynamics CRM Online Upgrades

$
0
0

How existing customers get on to the latest version of Microsoft Dynamics CRM

Upgrades Are Here

As most of you have probably seen, we’ve announced the availability of Microsoft Dynamics CRM Online January 2011 Service update, powered by Microsoft Dynamics CRM 2011 technology. We started to take trials for this new version of Microsoft Dynamics CRM Online last month. If you’re interested, you can sign up for a free trial on the Dynamics CRM Website.

Many of you, however, are already Microsoft Dynamics CRM Online customers and are anxiously awaiting the chance to upgrade to the latest and greatest version. We’ve put a lot of effort into making sure your upgrade experience is the best it can be; whether you’ve upgrading from the Microsoft Dynamics CRM Online Beta or the Microsoft Dynamics CRM Online April 2010 Service Update. We want to make sure your experience is as smooth as possible. Let’s take a few minutes to talk about this process and to share a few resources that will help you prepare for your upgrade to the latest version.

There are two sections to this post: the first is for existing customers using the Microsoft Dynamics CRM Online April 2010 Service Update and the second is about upgrading from the Microsoft Dynamics CRM Beta. Each will include a process overview, some things to be aware of and where to go for more information.

Existing customers—Upgrading from Microsoft Dynamics CRM Online April 2010 Service Update

If you’re an existing customer, Microsoft has prescheduled an upgrade for your organization. Your CRM Administrators received an email of when the upgrade will take place. If the date Microsoft chose for you doesn’t fit your schedule, your CRM Administrators can change the dates by following the directions in the email they receive or by navigating to the Subscription Management Page in the CRM UI.

To give you an idea of what it looks like to change your upgrade date, I’ve created a video walk through. Let me add a caveat, however, the demo is in a test environment and dates, email address and organization names are all fabricated; the flow is will be the same, but the details will differ. Now, on to the fun!

We expect most upgrades to the new version to go very smoothly, but there is the possibility that unforeseen circumstances could prevent us from performing your upgrade during your primary upgrade window. In the event that your upgrade doesn’t happen during the primary timeslot, we have also assigned you a secondary timeslot. You can change your primary and secondary upgrade windows using the directions in the email or the video in to this post.

What considerations should I take regarding my upgrade?

If you’re using Microsoft Dynamics CRM for Microsoft Office Outlook we recommend that you upgrade to the latest version to take advantage of all of the new functionality introduced. Other considerations include unsupported custom JavaScript or other unsupported customizations that you have made to your organization. For more technical details about upgrading Microsoft Dynamics CRM for Microsoft Office Outlook, or for more in-depth questions about unsupported customizations, custom JavaScript and customization upgrades see this technical upgrade resource.

Beta Customers—Upgrading from the Microsoft Dynamics CRM Online Beta

If you are still using the Microsoft Dynamics CRM Online Beta, your time is running out! The beta program formally ends this month and if you would like to convert your beta subscription you must do so as soon as possible! Your CRM administrators have received email notifications containing information on the beta end dates and steps to convert. If you are an administrator, or curious as to how the upgrade process works, check out the Beta Conversion site for Customers and for Partners.

I would like to point out that the upgrade from Beta is different from the upgrade from Microsoft Dynamics CRM Online April 2010 Service Update. The Beta upgrade is minor version upgrade and so the upgrade is done behind the scenes within two to four weeks after you opt-in; we don’t have any self-scheduling for beta upgrades. We will post maintenance notifications in advance of your upgrade so you know when it is coming.

A caveat for beta upgraders: Once your Microsoft Dynamics CRM Online organization is upgraded, anyone using Microsoft Dynamics CRM Beta for Microsoft Office Outlook will need to upgrade to the latest version of Microsoft Dynamics CRM for Microsoft Office Outlook before they will be able to access the organization through Outlook.

Final Thoughts…

I hope this information was helpful to you and that your upgrade to latest version of Microsoft Dynamics CRM Online goes off without a hitch! If you have questions about upgrade, please see the Microsoft Dynamics CRM Online Upgrade Center, or if you’re using the beta see the Beta Conversion Site for Customers and for Partners. If you still have questions, don’t hesitate to contact support for assistance.

Cheers,

Marshall Bjerke



Announcement: Microsoft Dynamics CRM 2011 Developer Training Kit

$
0
0

imageI’m very excited to announce the availability of Microsoft Dynamics CRM 2011 Developer Training Kit. It’s a great collection of materials that allows .NET developers to learn the development features of Microsoft Dynamics CRM and helps them build applications using Microsoft Dynamics CRM 2011 and CRM Online.

Download the training kit here: Microsoft Dynamics CRM 2011 Developer Training Kit.

The training kit includes various resources such as:

clip_image001 Presentations - Presentation decks in PowerPoint (.pptx) format that you can use to learn the concepts.

clip_image001[1] Videos - Video recordings of the presentation along with demos delivered by expert trainers.

clip_image001[2] Hands-on Labs - Hands-on labs with detailed instructions and source code that will walk you through the various development features.

No prior Dynamics CRM experience is required to go through this training kit. Familiarity with the .NET Framework, Microsoft Visual C#, Microsoft JScript, Microsoft SQL Server and general Web development is recommended.

imageWhat topics does this kit cover?

  • Introduction
  • Solutions
  • User Experience Extensibility
  • Visualizations and Dashboards
  • WCF Web Services
  • LINQ and oData
  • Plugins
  • Processes
  • Client Programming
  • Silverlight
  • SharePoint & CRM
  • Windows Azure & CRM
  • Upgrading from CRM 4.0 to CRM 2011
  • Dynamics Marketplace

Thanks,

Girish Raja



Viewing all 592 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>