Search: Windows+Live

Microsoft Dynamics CRM Online Demonstration Kit

by C.R. Matín on June 14, 2011

The Microsoft Dynamics CRM Product Management team is happy to announce the availability of the Microsoft Dynamics CRM Online Demonstration Kit.  This Kit was optimized to facilitate a stand-alone Microsoft Dynamics CRM Online environment.

Scenarios
Included in this Kit is more comprehensive data, Dashboards, Workflows and Dialogs illustrating core CRM capabilities in expanded scenarios.  Read on below to find detailed instructions on how to download and setup these assets.

What’s covered in this kit:

  • Extensive Sample Data
  • 13 Dashboards
  • 17 Workflows
  • 2 Dialogs
  • 1 Web Resource (phone number auto-formatting jscript)
  • 1 Option Set (Timeframe drop-down list to use across entities)
  • 2 E-mail Templates

CRM Online Scenarios

Cheers,

Eric Boocock, Senior Technical Product Manager

 

The following files are included in the Kit and can be downloaded here:

  • CRM Solution (managed, unmanaged)
  • Sample Data
  • Demonstration Script
  • Demonstration Kit Overview

* For more details on managed vs. unmanaged solutions click here.
* Download the Sample Data and unzip the folder before starting the setup process.

Note: This data is based on US Dollar currency. If your currency is not US Dollar you must add the USD currency with the proper conversion rate to your base currency before proceeding.

image

Setup Process

Note: If you encounter any errors during the data import process address them before continuing to import additional entities as future dependencies may be compromised.

  1. Import the basic CRM Administrative data (Users, Sites, Queues, Subjects, Products, etc.) accepting all the Import Wizard default settings.
    • Workplace > Imports, click imagein the Ribbon
      • Import 1-Admin, once successful proceed,
      • Import 2-Admin, once successful proceed,
      • Import 3-Admin, once successful proceed,
  2. Import the CRM Solution
    • Settings > Solutions, click imagein the toolbar
      • Select Solution Package: Browse to the Solution CRM2011Scenarios_1_0_0_0, click Next,
      • Solution Information: click Next,
      • Import Options: Do NOT check the box to activate processes, click Next,
        (The data is properly formatted and if you activate the processes workflows will alter the data.) 
      • Importing Solution: click Publish All Customizations, click Close.
  3. Enable All Users
    • Settings > Administration > Users, change view to Disabled Users, Multi-select all Users and click image in the ribbon.
    • Confirm Users Activation: click OK
  4. Activate the following Sales Processes
    image
    • Settings > Processes, multi-select the processes and click image in the toolbar.
  5. Import Sales, Marketing & Service data (repeating step # 1 above)
    • Import 4-Marketing, once successful proceed,
    • Import 5-Sales, once successful proceed,
    • Import 6-Sales, once successful proceed,
    • Import 7-Service, once successful proceed,
  6. Import custom Data Map for Activities
    • Settings > Data Management > Data Maps, click image in the toolbar
    • Browse and select Activities_customized_PhoneCall (in Sample Data folder), click OK
  7. Import final data set – Activities (repeating step # 1 above except selecting the imported custom data map from previous step)
    • Upload Data File: Browse to and select Import 8-Activities, click Next
    • Review File Upload Summary: click Next
    • Select Data Map: Select the Customized Data Map Activities_customized_PhoneCall, click Next
      image
    • Accept remaining Import Wizard defaults to complete the import.
  8. Recalculate Goals
    • Sales > Goals, select Central Region Revenue and click image in the Ribbon. This will recalculate all the Goals.
  9. Activate all Processes
    • Settings > Processes, multi-select all workflows and click image in the toolbar
  10. Change Product Default Price Lists to Retail
    • Settings > Product Catalog > Products
      • Open Kit of Product A & B, Set Default Price List = Retail, click Save & Close
      • Open Product A (SKU JJ202), Set Default Price List = Retail, click Save & Close
      • Open Product B (SKU AX305), Set Default Price List = Retail, click Save & Close
  11. Run workflow to set Account Products Owned
      • Sales > Opportunities > Won Opportunities, multi-select all records, click  in the Ribbon, select Set Account Relationship Type…, click OK
  12. OPTIONAL:There are 10 Users included within the Sample Data. To login as one of these Users you must assign them a valid Windows Live ID and accept the invitation
    • Settings > Administration > Users, open User record
      • Click image in the Ribbon
      • Enter the new Windows Live ID, click Submit
      • Send new Invitation


{ 0 comments }

Have you ever lost some your business records in Microsoft Dynamics CRM by accidently deleting them? Are you wondering how to recover them re-create them in CRM, without having to go through much of the tedious manual efforts.

Prior to Microsoft Dynamics CRM 2011, we used the “soft-delete” method, where when someone deleted a record, the record will not be actually deleted from the database immediately. Instead the record would be internally marked with IsDeleted = true, and there will be a CRM Deletion Service which will run an Asynchronous System Job once a day, which would actually pick up the records marked with IsDeleted = true and actually delete them from the database. So you could have used workarounds to recover the recently deleted data if it had not yet been deleted by the Deletion Service.

With CRM 2011, there are no more soft deletes in CRM, the record is actually deleted from the database right away. So, this becomes important than ever before. But CRM has the very powerful “Auditing” capability. Provided, you had Auditing turned on for those records, you can look at the Audit logs and find out all the changes that happened on your record including the deletion.

In this blog, I am going to walk you through a simple way with which you can use Audit logs to recover your lost data and recreate them in CRM. Of course, there will be minimal manual effort involved, but since we are using the CRM API for most of the recovery/re-creation work, this will definitely save you a lot of time, especially if you have a heavy volume of records you want to recover.

How do I find the Audit record I need to recover

In the web application, go to Settings->Auditing->Audit Summary View.

You can use the various filters and find the atleast one audit record for the entity you want to recover. Right click the audit record, and say copy a link. This copies the url to Audit Record including the Id. Paste the contents into clipboard, and you can find out the Id of Audit record.

How do I use the sdk to re-create the entity from the Audit record:

Once you have the Audit record’s Id, you can use the following code that uses the CRM API

// _service is the OrganizationService. // Please refer to the samplecodes in crm 2011 SDK on how to create this _service. // Guid of the Audit Record // E1CFF208-277B-E011-BB2B-001F29E1FC88 is the Id of the Audit Record in this example Guid auditId = new Guid("E1CFF208-277B-E011-BB2B-001F29E1FC88"); RetrieveAuditDetailsRequest request =new RetrieveAuditDetailsRequest(); request.AuditId = auditId; RetrieveAuditDetailsResponse response = (RetrieveAuditDetailsResponse) _service.Execute(request); AuditDetail auditDetail= response.AuditDetail; Audit audit = (Audit) auditDetail.AuditRecord; EntityReference entityAudited = audit.ObjectId; Guid entityId = entityAudited.Id; string entityLogicalName = entityAudited.LogicalName; // Retrieve the audit records for entity. RetrieveRecordChangeHistoryRequest changeRequest = new RetrieveRecordChangeHistoryRequest(); changeRequest.Target = new EntityReference(entityLogicalName, entityId); RetrieveRecordChangeHistoryResponse changeResponse = (RetrieveRecordChangeHistoryResponse)_service.Execute(changeRequest); AuditDetailCollection details = changeResponse.AuditDetailCollection; for (int count = 0; count < details.Count; count++) { if(typeof(AttributeAuditDetail).Name == details[count].GetType().Name) { AttributeAuditDetail detail = details[count] as AttributeAuditDetail; // This is a safety check to verify // if the audit record is for the delete operation if(detail.NewValue == null && detail.OldValue != null) { Entity entity = detail.OldValue; _service.Create(entity); // The audit records are recorded in the order // from latest to older. So, it's ok to break since you've recreated // from the latest snapshot of the entity, just before deletion break; } } }

Instead, if you’re able to find exact audit record for the delete operation you want to recover, you can simply use the following code to recreate the record, instead of the code described above:

// AACFF208-277B-E011-BB2B-001F29E1FC88 is the Id of the Deletion Audit Record Guid auditId = new Guid("AACFF208-277B-E011-BB2B-001F29E1FC88"); RetrieveAuditDetailsRequest request =new RetrieveAuditDetailsRequest(); request.AuditId = auditId; RetrieveAuditDetailsResponse response = (RetrieveAuditDetailsResponse) _service.Execute(request); _service.Create(response.AuditDetail.OldValue);

You can use the sdk calls to retrieve the id of the audit record itself without going through the web UI, but to keep this simple, in this example, I’ve used the web UI method to filter out the Audit records to find the one I need to recover. Also if you have a huge volume of data, this becomes handy and you can just find the AuditIds and add to a list and loop through them.

Hope this helps and makes your recovery of data a smooth experience!

Uma Anbazhagan



{ 0 comments }

CRM 2011 Charts – Know the Real Potential ~ Part Deux

May 2, 2011

Hello readers, this post is in continuation of my ”Getting to Know Charts” blog series, where we discuss useful features of charts. In the introductory post of this series we learned how to create a 3D chart and a multi series chart. Let’s answer…

Read the full article →

Creating Custom Sample Data for CRM 2011 – Advanced

April 29, 2011

We learned how to create a simple sample data for Microsoft Dynamics CRM 2011 in the blog post titled Creating Custom Sample Data for CRM 2011. In this post, we will take a look at some of the more advanced sample data building techniques. Building a…

Read the full article →

Create Dynamic Ribbon Controls

March 30, 2011

Microsoft Dynamics CRM 2011 uses Ribbons (also known as Fluent UI) to provide a user interface to display the right commands at the right time. Ribbons also provide a very powerful and flexible way of extending the ribbon functionality to meet your req…

Read the full article →

IT Departments Are Under Mobile Attack

March 24, 2011

Guest Blogger Mark Corley is the CEO of CWR Mobility presents a compelling solution for those wanting to be adroit in their adoption of the mobile phenomenon.

imageIT Departments are under siege – from the proliferation of mobile platforms and devices – and what are they supposed to do about it?

We can probably track the initial mobile “assault” back to the launch of the Apple iPhone in June of 2007. Senior executives in many organizations were early adopters. These key decision makers completely ignored corporate policies requiring a single mobile device standard. They purchased mobile devices on their own and then marched into IT departments and demanded product support. Companies were soon well on their way to device proliferation.

Hard to believe, but having just two mobile platforms is starting to look like the good old days. Today, users are not just buying BlackBerrys, iPhones, Androids and Windows Phones; they’re also acquiring iPads, Galaxy Tabs, Xooms and, soon, PC-based Slates. I work with enterprise IT departments every day and I haven’t run across a single CIO that thinks they can put the mobility genie back in the bottle. No longer can IT departments lock on a common standard and force users to conform. When it comes to your mobile users, it’s time to recognize that if you can’t beat ‘em, join ‘em.

imageBeleaguered IT departments may wonder if Mobile is worth all the effort. The proof is in the data. In a recent study on sales mobility called “Sales Mobility: Quotas Untethered,” Aberdeen Research Group reported that companies adopting mobile CRM have an 11 percent advantage in quota attainment, a 6 percent advantage in customer retention rates and a 3.5 percent advantage in lead conversion rates over the average for all companies. Mobility is king, and IT departments are king-makers. (Note: Download this report for free at www.cwrmobility.com),

The good news is that solutions like Microsoft Dynamics CRM and those from CWR Mobility enable IT departments to meet the conflicting demands of internal customers clamoring for various platforms. With CWR Mobile CRM, IT configures CWR just once, using the common Dynamics CRM point-and-click configuration tools, and then deploys CRM across all the major phone platforms. Users get the mobile device of their choice, management gets the visibility into sales and service it seeks, and IT gets to simplify its rollout of CRM technology.

By hiding the complexity caused by the explosion of mobile platforms, CWR Mobile CRM enables IT to serve internal customers the way they want to be served. IT can now go out to users proactively and show them how they can use the latest mobile devices, devices of their own choosing, to achieve their sales or service goals.

IT no longer needs to be under siege by mobile devices. Rather, in a judo move using the power and appeal of mobile devices, IT can now use mobility to improve user adoption, quota attainment, customer retention, lead conversion rates, AND management visibility and insight.

Instead of feeling attacked by mobility, IT can now employ it as a tool during rollout to drive user adoption. Promote mobility as a productivity tool for users. Start the CRM rollout by first distributing leads to reps, making marketing literature available, providing account and contact access, and providing insight into order status and cases. When the initial CRM rollout focuses on delivering value to users first, companies secure high CRM adoption. Management visibility into sales will follow naturally, and the mobile explosion will no longer be a threat. It will be an opportunity…and IT will be the hero.

Cheers,

Mark Corley

Read the full article →

Parameterizing Fetch Based Reports

March 18, 2011

As you may already know, we have introduced fetch based reports in Microsoft Dynamics CRM 2011. This means you can now upload powerful, custom fetch based reports even in Microsoft Dynamics CRM Online and CRM’s wizard reports are not the only available option. Other than fitting nicely into CRM Online scenarios, these reports are also a good candidate for On Premise deployments as they generally perform better when compared to an equivalent SQL report running against CRM’s Filtered Views.

You may read more about fetch based reports in the following blog posts:

Reports, as we all know, are typically used to present business data in a more meaningful way to the end users so that they can derive quick insights from it. In order to increase the value a report provides, it usually takes some additional inputs or parameters at runtime and uses them to adapt the content or presentation. One of the common usage patterns of these parameters is to use them within the data sets defined in the report and control the data being retrieved from the data source. Today, I am going to talk about how you can parameterize fetch statements used in a fetch based report. I will start with a description of how query parameterization works for fetch based reports followed by an explanation on the elements that support parameterization.

Fetch based reports allow certain parts of a fetch xml to be parameterized. In other words, fetch based reports can be designed to receive parameter values at runtime which can then be used by the fetch statements defined in the report. We allow value of certain fetch xml nodes or attributes to be parameterized, and at runtime the received value of the parameter is replaced in the fetch xml before it is executed to get the results. Let us take an example and see how this works.

Consider the following fetch xml that allows me to show sum of estimated revenue for opportunities in “3 – Negotiating” stage for each customer:

<fetch mapping='logical' count='10' aggregate='true'> <entity name='opportunity'> <attribute name='estimatedvalue' aggregate='sum' alias='sum_estimatedvalue'/> <attribute name='customerid' groupby='true' alias='customerid'/> <order alias='sum_estimatedvalue' descending="true" /> <filter type="and"> <condition attribute="stepname" operator="eq" value="3 - Negotiating" /> </filter> </entity> </fetch>

This will work nicely for me. But if I want to slightly enhance my report so that the user viewing the report can choose which stage the opportunities should be in, I need a way to change the value of the condition dynamically at runtime. This is exactly what parameterized fetch xml of fetch based reports is meant for. However, for the complete thing to work for a report, I need to do the following:

1. Define a report parameter, say stage, in the RDL which will be shown to the user at runtime and will receive an input from her for the stage she is interested in.

<ReportParameter Name="stage"> <DataType>String</DataType> <DefaultValue> <Values> <Value>3 - Negotiating</Value> </Values> </DefaultValue> <Prompt>Opportunity Stage</Prompt> </ReportParameter>

2. Define a query parameter, say @stepname, in the RDL for the data set and set its value to the report parameter using the expression =Parameters!stage.Value. The prefix “@” is important and I will talk about it in a moment.

<QueryParameter Name="@stepname">

      <Value>=Parameters!stage.Value</Value>

</QueryParameter>

3. Modify the condition node of the fetch xml to use the query parameter as follows:

<condition attribute="stepname" operator="eq" value="@stepname" />

I have replaced the value of the condition with the query parameter @stepname. As I said before, the “@” prefix is important. It acts as a hint for CRM that @stepname could be a query parameter that may receive a value at runtime. I say it’s a hint and not a certainty, because a condition can have a value that starts with “@” but is not a query parameter. E.g. a condition that email address that ends with “@microsoft.com” is a valid condition but is not expecting a query parameter. At runtime, CRM will parse the fetch xml for potential parameters and if there’s a matching query parameter available it will simply replace the parameter in fetch xml with the value of the query parameter.

And I am done. My parameterized report is ready to work! When I execute the report, I will be prompted to enter an Opportunity Stage according to which the data will be filtered.

clip_image002

Seemed like a lot of work, isn’t it? So, let’s make it a little easier for you. When you author a fetch based report using the BIDS extension that CRM provides, we do a bunch of work automatically for you. You only need to provide the fetch xml with the parameter hint, i.e. a value with a “@” prefix, and we will automatically create a report parameter and a query parameter for you to complete the parameterization support. You can change the parameter settings or prompt text as per your needs. In case you do not want the parameter at all, you are free to remove it later.

Now when you know how query parameterization works in fetch based reports, it is time to understand what all elements of a fetch xml statement can be parameterized. The elements that can be parameterized fall into the following three categories:

1. Paging Elements

These elements are meant to support paged data retrieval. Often times, a report spans a large number of records but it only show a subset or a page of the complete data set at a given point in time. If you want a report that can fetch and show data in paged manner, then these elements can be parameterized to support that.

<fetch mapping=’logical’ page=’@page’ count=’@count’ paging-cookie=’@cookie’ >

Using parameters for these elements, it is possible to build reports that fetch data only for the page that the user is presently viewing and can significantly improve a report’s performance. I am going to talk about this in more detail in my future posts.

2. Condition Elements

These elements are meant to supply operand values dynamically to a condition element of a fetch xml statement. This is useful if you want to apply a condition based on some values that you receive at runtime. There are the following two elements that can be parameterized under this category:

a. Value Attribute: <condition attribute="stepname" operator="eq" value="@stepname" />

We have already seen an example of such a parameterization. In addition to what was already explained, you can also make the query parameter receive an array of multiple values. Let’s take our example forward to understand this better. I had defined a report that allowed users to provide an opportunity stage at runtime. If I want my users to provide multiple opportunity stages instead of just one, I also need to do make the report parameter stage a multi valued report parameter in addition to the other steps mentioned before. This can be done by modifying the parameter properties to “Allow multiple values” as shown below:

clip_image004

This will cause report viewer control to allow the user running the report to enter multiple values for the stage parameter and at runtime CRM will use those multiple values to form an array of values for the fetch xml condition.

clip_image006

b. Value Node

<condition attribute="stepname" operator="in" >

     <value>3 – Negotiating</value>

     <value>@stage</value>

</condition>

In my report described earlier, let’s say I want all opportunities in opportunity stage “3 – Negotiating” to be considered always. Additionally, I want my users to provide one additional stage to filter the data. This can be done using the xml fragment shown above. One of the several values of the condition value array is parameterized.

3. Pre-filtering Element

This element is used to apply a pre-filter to an entity of the fetch xml statement at runtime. CRM supports a notion of report pre-filtering using which you can filter a report’s content at runtime using an advanced find query. This provides reports a flexibility that they can be defined only once but can be rendered against a differently filtered data set as and when needed. Taking our example report yet another step forward, if I want my report to have all the previously discussed functionality and in addition to that I want my users to be able to provide another filtering criterion so that the data set can be filtered on an adhoc basis. E.g. a user running the report should be able to run the report only for the opportunity owned by her. Using report pre-filtering, I can make the report to prompt the user with an Advanced Find control before executing the report. Then whatever filtering criteria is entered by the user, it is taken as the base filtering criteria for the report and any filtering defined by the report are applied on top of the filtered data set.

clip_image008

clip_image010

Pre-filtering parameters work slightly differently than the rest of the parameters and need not be prefixed with “@”. These parameters are defined using custom xml attributes that are not part of the standard fetch xml schema and are defined by fetch based reports for proprietary usage.

<entity name=’opportunity’ enableprefiltering=’true’ prefilterparametername=’opportunityfilter’>

Fetch based reports uses two xml attributes, namely enableprefiltering and prefilterparametername, under entity or link-entity nodes of a fetch xml for setting a query up for pre-filtering. As soon as the CRM extension for BIDS detect a fetch xml having these two nodes, it will automatically create corresponding report and query parameters. When you upload such a report to CRM server, CRM will also detect this usage pattern and will automatically modify the report. It will make the report parameter for pre-filtering as a hidden parameter and will prompt the users running the report with an Advanced Find user interface. It will then capture the filtering criteria entered by the user and will pass it to the report which will be used to pre-filter the report data set. The xml attribute prefilterparametername is an optional xml attribute and if not provided, CRM will generate a parameter with a default name “CRM_<entityname>” where entity name is the name given by the name attribute of the entity node.

I will be covering pre-filtering in more detail in my future posts but this information should be good enough for building pre-filterable fetch based reports.

You can use any of the above described ways of parameterizing your fetch based reports and gain more out of them. I hope that this post was useful for understanding the parameterization support that we have built. Keep your questions coming and wait for the next edition.

Cheers,

Abhishek Agarwal

Read the full article →

Microsoft Dynamics CRM 2011 Sitemap Changes

March 15, 2011

Why doesn’t my new custom entity appear in the navigation pane? If you are familiar with Microsoft Dynamics CRM 4, then you know that you can easily add a custom entity to any area in the sitemap navigation. When you select an area in the entity met…

Read the full article →

Microsoft Knowledge Base Articles Authoring and Lifecycle on SharePoint

March 11, 2011

While Microsoft Dynamics CRM 2011 itself supports Microsoft Knowledge Base (KB) articles, there are much richer systems that support an end to end Content Management Life Cycle that includes Create/Edit/Review/Approval/Publish roles and responsibilitie…

Read the full article →

Why All The Hype Around Live Help?

March 2, 2011

I am pleased to introduce guest blogger, Damien Acheson today. Based in Cambridge, MA, Damien is the Product Marketing Manager for ATG’s Live Help products. Welcome, Damien!! BY DAMIEN ACHESON Why all the hype around live help? An eCommerce professional…

Read the full article →