Browse by Tags

[CRM] Dynamics CRM, more than a product

Few days ago, I read a very good article about Dynamics CRM from Ascentium. This article titled “Ascentium - Microsoft Dynamics CRM as a Business Application Platform”, explains from a high level point of view why and how Dynamics CRM is really a platform instead of a simple product. Even if you know CRM, I recommend to read it.

Enjoy!

Posted 30 March 10 12:36 from Escuchoyo | 0 Comments   
Filed under
CRM Case Study. Alfapeople and TTT Moneycorp

Below you can watch the video of a Microsoft case study about one of the main customer of my current company Alfapeople Ltd: TTT Moneycorp. Here I’ve enjoyed working in interesting and challenging projects related to CRM, WCF and WPF

 

In addition, in the next link http://www.microsoftmovies.co.uk/dynamics/general/ you can watch more case studies about different businesses and Microsoft solutions in UK.

Enjoy :)

Posted 20 January 10 02:38 from Escuchoyo | 0 Comments   
Filed under
[CRM4] Thanks Rollup 8. Error adding a user to CRM 4

According to the CRM Update Rollup 8, they have resolved the following error:

  • “After you install Update Rollup 3 or Update Rollup 4, you cannot add a user to more than one organization in the same deployment of Microsoft Dynamics CRM if the user exists in a child domain"

…and definitely they have, because I tested it the last week. However, the scenario wasn’t exactly a parent/child domain, but a trusted link domain were instead.

Download CRM 4 Rollup 8

Posted 15 January 10 11:47 from Escuchoyo | 0 Comments   
Filed under
[CRM4] Searches and Views

Searches are fundamental in any CRM. Dynamics CRM provides different ways to search records from any entity. The most powerful search is the Advanced Find image, which allows normal users to create custom queries and save them as new views, so that they can reuse them:

image

Why do some attributes not show up?  Only searchable attributes are showed up in Advanced Find

NewAttributeSearchable 

Looking at CRM Metadata a bit deeply, this “Searchable” property is translated to “ValidForAdvancedFind” property in AttributeMetadata.

However, Advanced Find isn’t the most common option, since users normally need to search records quicker, without set any query. In this case, Dynamics CRM offers Quick Find views.

Where are the Quick Find views and when do we use them in Dynamics CRM? When we use the “Search for records” options from any entity, actually we are calling to the Quick Find Active view, which replaces the current view (in our example, Active Printer view would be replaced by Quick Find Active Printers view)

SearchActiveView

Which attributes  are used by “Search for records”? Those were configured in the  Quick Find View for the corresponding entity ( 'Printer' in this example)

AddFindColumnsToQuickFind

Posted 14 January 10 10:12 from Escuchoyo | 0 Comments   
Filed under
[CRM4] Add/Remove Activities and Notes relationships

When you create a new entity in CRM 4, you have to define if it will have Note and Activities relationships. After you’ve created it, you won’t be able to change it (important to remember it!).

activitiesAndNotes

However, sometimes we forget it :) and we need to add or remove these relationships later. In that case, we can do the next trick:

  1. Export the corresponding entity that you want to add / remove Note and Activities relationships
  2. Delete this entity from CRM
  3. In the XML file that you’ve exported with the customisations, change the value of the attributes HasRelatedActivities and HasRelatedNotes
  4. Import again the updated customisations to CRM
Posted 12 January 10 09:59 from Escuchoyo | 0 Comments   
Filed under
[CRM 4] Recovering from ISV.config errors

CRM accepts different types of easy and quick user interface customizations like new menus, custom buttons, and navigation areas, which can be added
throughout the application.

To do it, only we should update the ISV.config, an XML file that we can export like any other customisation of CRM. However, although CRM validate this XML file, some error can be entered and our CRM interface can be damaged.

Supposing, like a good practise, we did a copy security of our original ISV.config, we will be able to import it again using this URL:

http://[server name]/[OrganisationName]/tools/systemcustomization/importcustomizations/importcustomizations.aspx

Directly, you will access to the Import Customization tool:

image

Posted 29 October 09 01:08 from Escuchoyo | 0 Comments   
Filed under
[CRM] CRM or XRM ??

What is CRM?

Microsoft Dynamics CRM is a versatile business solution that we can easily tailor to your specific

business needs. As an inherent part of your business strategy Microsoft CRM exceeds the benefits of a sheer software solution and gives you an all-inclusive, 360 degree overview of your business.

The flexible platform of Microsoft CRM allows you to automate manual processes, increase efficiency and productivity and truly connect with your customers. Managing sales, marketing and customer service becomes infinitely easier and your return on investment will be visible quickly.

Because Microsoft CRM works from the familiar interface of Office Outlook, user-adoption and training are brought to a minimum.

What is xRM?

CRM manages customer relationships by offering a holistic view of customer information and the ability to track interactions with clients. However, businesses deal with a myriad of relationships that evolve around different entities besides customers.

The C for customer can therefore be replaced by X, creating: xRM. The X in this acronym stands for Anything. XRM is about managing relationships, transactions and processes involved with ANY entity. Not just customers. The objects or entities that needs to be managed can be patients, buildings, potential candidates for hire, grant applications or legislation; Anything that requires the mapping and tracking of business information, relationships, activities and processes.

Every business has specific needs, but developing a solution from scratch is risky and costly. XRM gives you the platform you can use to build future applications.

Posted 26 October 09 01:40 from Escuchoyo | 0 Comments   
Filed under
[CRM] BoomerangSMS

Let me introduce you one of our last Alfapeople CRM project: BoomerangSMS. This solution allows you to automatically send and receive text messages through CRM by using the Boomerang SMS API. The project consists of an SMS Router Service plus all the customisations required to get it working on any Microsoft Dynamics CRM Deployment.

Boost your productivity and plummet costs by routinely managing appointment scheduling, order confirmations and delivery times according to preset workflows. This add-on opens up a wealth of flexibility for your customers and helps you to respond to their preferences by communicating via their favored channel.

The best point of all is that BoomerangSMS is an open source project with License GNU General Public License version 2 (GPLv2). You can download it and find more information from http://boomerangsms.codeplex.com/

You can see a demo in these videos:

Boomerang for Dynamics CRM Setup

(http://www.screencast.com/t/dWhsmznad4)

 

Boomerang Service Appointment Demo

(http://www.screencast.com/t/E3uPMd4ad)

 
Posted 10 October 09 08:15 from Escuchoyo | 0 Comments   
Filed under
[CRM 4] Error using Bulk Deletion Jobs: "This condition had one or more Lookup values that are not valid"

Using the Bulk Deletion Jobs tool that I told you in my previous post, I’ve found a bug, which is not yet resolved and I’m trying to find out it. I’m not sure if it’s a CRM issue or it’s a issue of my solution, so I’m looking for your opinion and similar experiences.

The point is when you create programmatically Build Deletion Jobs whose query contains conditions with LookUp types, (DateTime, Picklist, strings, decimals,.. work fine) these attributes aren’t showed properly in the Bulk Delete Operation form properties. Instead of that, they are showed like warning signal:

image

if you click over the warning signal, you get the message “This condition had one or more Lookup values that are not valid.”:

image 

However, this Bulk Job Deletion jobs was created according to the next System View, so “Enter Value” should be “parent a1”

image

One important note: although Lookup attributes are now showed properly, the Bulk Deletion Operations work fine and they remove the corresponding records, but It could be dodgy and scaring, since you won't be sure which records have been deleted really.

Any suggestion?

Thank you very much.

Posted 07 October 09 09:10 from Escuchoyo | 0 Comments   
Filed under
[CRM 4] Bulk Deletion Jobs tool

A Bulk Deletion Job is an asynchronous operation in CRM to delete a set of records according to a custom query. This is very useful when you have a CRM where hundreds of users are inserting and editing records constantly and you want to keep the performance of your CRM database.

In CRM 4, It’s not possible to create Bulk Deletion Jobs manually from CRM web interface (or CRM Outlook client). However, I’ve created a tool, which can be integrated in CRM 4, to provide this functionality. As you can see below, if you go to Data Management –> Bulk Record Deletion, now there is a new button called “New Job”:

image

When you click there, the next form will appear:

image

To select the set of records that you want to delete, you can specify a System View or a Fetch XML.

Behind this, when you press “Created Job”, the main code to be executed is something like:

public static void CreateBulkDeletionJobInCrm(string jobName, DateTime startDateTime, string frequency, int interval, QueryExpression query)
{
BulkDeleteRequest bulkDeleteRequest = new BulkDeleteRequest();
// Set the request properties.
bulkDeleteRequest.JobName = jobName;
bulkDeleteRequest.QuerySet = new QueryBase[] { query };

// Set the start time for the bulk delete.
bulkDeleteRequest.StartDateTime = PropertyHelper.GetUserDateTime(startDateTime);

// Set e-mail activity properties. So far, these properties are not used, but
//they should be initialised
bulkDeleteRequest.SendEmailNotification = false;
bulkDeleteRequest.ToRecipients = new Guid[] { };
bulkDeleteRequest.CCRecipients = new Guid[] { };

// Provide a recurrence pattern so that the job runs once every day.
if(string.IsNullOrEmpty(frequency))
bulkDeleteRequest.RecurrencePattern = string.Empty;
else
bulkDeleteRequest.RecurrencePattern =
String.Format(System.Globalization.CultureInfo.InvariantCulture,
"FREQ={0};INTERVAL={1};", new object[] { frequency, interval });


ServiceFactory.CrmService.Execute(bulkDeleteRequest);

}

The last parameter of this method is a Microsoft.Crm.Sdk.Query.QueryExpression. To get it from a System View or FetchXML, you can use  FetchXmlToQueryExpressionRequest/Response.

Although I would like to provide you  with the whole solution, it’s one of the products of my current company AlfaPeople Ltd, so that you should email me or contact us from our website.

Posted 06 October 09 09:09 from Escuchoyo | 0 Comments   
Filed under
[CRM] Microsoft Dynamics CRM Excel Add-in. Export to Excel from CRM

As we saw in my previous post, Microsoft Dynamics CRM 4.0 for Microsoft Office Outlook provides Outlook new capabilities to connect with Microsoft Dynamics CRM.  Furthermore, it also provides a CRM Excel add-in to connect with CRM like a new data source.

image

image

Microsoft Dynamics CRM supports three forms to export to Excel the data :

  • Static exports
  • Dynamics exports
  • Dynamics Pivot Table

Here we have a screen shot with “My active Account” records. Later, I’m going to export it to a Dynamic worksheet.

image

In the last two cases (Dynamic and Pivot Table), your excel sheet can be refresh automatically using that new button “Refresh from CRM”. Let me show you the resulting Dynamic worksheet for the previous view “My Active Accounts”:

image

Posted 02 October 09 10:22 from Escuchoyo | 0 Comments   
Filed under
[CRM] CRM Outlook Client

When you install Microsoft Dynamics CRM 4.0 for Microsoft Office Outlook, Outlook becomes your CRM Dynamics desktop application, so you can manage any information of CRM from Outlook online or OFFLINE (SQL Express will be required). It’s very useful for sales agents, since they will be able to view and edit CRM information even when they don’t have internet/intranet connection.

OutlookCRMClient

In addition, any of your previous and current Outlook information can be tracked to CRM, so that all your customers/contacts/appointments data will be connected and well-organized. In the next table, you can see the mapping between Outlook entities and Dynamics CRM entities:

image

Posted 30 September 09 12:29 from Escuchoyo | 0 Comments   
Filed under
[CRM 4] URL Addressable Forms

Any entity in CRM has a web page that is used to read or edit its corresponding records. It’s very useful to integrate them into external IFRAME or websites. For instance, a specify account record whose id is “2557C14C-8102-DE11-AECE-00215AA75AA6” can be edited with this URL:

http://<servername>/<organisationname>/sfa/accts/edit.aspx?id={2557C14C-8102-DE11-AECE-00215AA75AA6}

In the table that follow, a summary of URLs for each entities is shown:

image

If you are working with CRM, other easy way to find out these URLs is clicking F11 or Ctrol+N in the corresponding web form.

Posted 25 September 09 04:33 from Escuchoyo | 0 Comments   
Filed under
[CRM 4] CRM Metadata Browser

Constantly CRM developers need to know metadata information like schemanames of entities, attributes, relationships and other related features. An easy and quick way to check metadata information is to use the CRM Metadata Browser:

http://<servername>/<orgname>/sdk/list.aspx

image

You can browse metadata information for each entity:

image

Posted 24 September 09 02:05 from Escuchoyo | 0 Comments   
Filed under
[CRM 4] AggregateOf property in entity attributes – Using CRM Metadata Service

Have you tried sometimes retrieve the value of “AccountId” property from Contact entity? Or, have you tried retrieve the value of “OwningUser” from Contact entity? Which were the results? Nothing, weren’t they?. Don’t worry, your CRM works fine, you didn’t miss anything. The reason for this is found in “AggregateOf” property in entity attributes.

The point is the following:

Any attribute, whose property “AggregateOf” is NOT NULL, doesn’t return any value from CRM service requests

Which are these attributes? :

 

AggrageOfAttributesInCrm

What does “AggregateOf” exactly mean? :

An attribute whose “AggregateOf” property in NOT NULL means that its value is part of other bigger aggregation expression in other attribute. For example, take accountid and parentcontactid. The value of their "AggreationOf” property is “parentcustomerid” for both. So, if we go to CRM database, in “Contact” view, we will see this:

ParentCustomerId   = coalesce(ContactBase.AccountId, ContactBase.ParentContactId)

In other way:

ParentCustomerId   =

case

when ContactBase.AccountId IS NOT NULL then ContactBase.AccountId

when ContactBase.ParentContactId IS NOT NULL then ContactBase.ParentContactId

else NULL

end

 

Why do I not retrieve any value from CRM Service?:

Because of these “special” attributes are part of other bigger aggregation expression, you should use that resulting attribute. In our previous example with Contact entity, you should retrieve “parentcustomerid” instead of “Accountid” or “ParentContactId”.

How can I know when I will have this “problem” and how can I resolve it?: You have two options:

  • Check if attribute that you want to retrieve is in that previous list  [I don’t like it, but It’s quick]
  • Use CRM Metadata Service to check “AggreateOf” property [It’s less efficient, but it’s more flexible]. You can use this code to check it:
        public string AggregateOfAttribute(string attributeName, string entityName)
        {
            RetrieveAttributeRequest request = new RetrieveAttributeRequest();
            request.EntityLogicalName = entityName;
            request.LogicalName = attributeName;
            request.RetrieveAsIfPublished = true;
 
            MetadataService metadataService = new MetadataService();
            //Set Metadata Service Properties (Url, Credentials, CrmAuthenticationTokenValue)
            RetrieveAttributeResponse response = (RetrieveAttributeResponse)metadataService.Execute(request);
            AttributeMetadata attributeMetadata = response.AttributeMetadata;
            return attributeMetadata.AggregateOf;
 
        }
Posted 23 September 09 01:41 from Escuchoyo | 0 Comments   
Filed under
More Posts Next page »