Friday 21 March 2008

HostedLive - Dynamics CRM 4.0 Hosted Solution

HostedLive has arrived!

Cowes, IOW, 21st January 2008, 2B.net Limited, a Microsoft Gold Certified Partner launched HostedLive; one of the first solutions to embrace the hosted Capability of Microsoft Dynamics CRM 4.0.

Having the ability to host Microsoft Dynamics CRM offers flexibility and cost effective solutions to customers; all the benefits and flexibility of Microsoft Dynamics CRM accessible remotely providing more versatile working conditions whilst cutting down on the expense and time which can be required to run an in-house system.

Alistair Dickinson, Founder and Technical Director of 2B.net comments, “Microsoft Dynamics CRM is an ultimately customisable tool and its benefits are now available in full on the hosted platform. All the usual company data and workflow will be mapped on HostedLive so the customer loses nothing – just has the ability to access the data from anywhere without the hassle of setting up an on-premise system. Many companies also find this model more economical.

Key Benefits Include:

- Cost effective solution
- Regular monthly fee, no up front licence costs
- Full integration and configuration undertaken by 2B.net
- Full ability to utilise all the power and adaptability of Microsoft Dynamics CRM
- Secure data storage
- Full and constant back up of your data
- Access to your data from anywhere in the world.
- Free licence upgrades


HostedLive is run and operated by 2B .net working in partnership with a major SPLA Licensing Partner Softcat and a major hosted service provider Rackspace to offer the benefits of Microsoft Dynamics CRM on a secure, robust hosted platform. 2B.net has chosen the market leaders in hosted connectivity and licensing security as partners to ensure that the quality and security of HostedLive is paramount

David Brown, Partner Manager at Microsoft commented, “This is exactly the kind of initiative we want our Partners to embrace now that Version 4 of Dynamics CRM has the option to be hosted. It opens up Microsoft Dynamics CRM to a range of different customers and 2B.net is ahead of the game in realising this.

2B.net has been working with Microsoft Dynamics for the past four years and has a team of expert consultants to ensure that the solution is configured to customers’ exact requirements.

Alistair adds, “The beauty of Microsoft CRM V4, apart from being a functionality rich solution, is that the product is now totally adaptable to a hosted platform so 2B.net is pleased to be able to offer HostedLive as a fully fledged, secure and stable hosted solution.

Contact Us

0845 46 35 783
OR
0845 46 35 SUE
suen@hostedlive.eu
http://www.hostedlive.eu/

HostedLive: Your customers, your business, your way.

For information on 2B.net Limited go to http://www.2bconsulting.net/

Information on 2B.net Limited

2B.net Limited was founded in the Isle of Wight in 2002 by Alistair Dickinson to meet the needs of a growing CRM product market seeking experienced systems integrators. The company delivers technical solutions to meet the business needs of the real world to both public and private sector organisations. In 2005 2B.net became a Microsoft Certified partner and soon after in 2006 became a Microsoft Gold Certified Partner. The company continues to grow in size and reputation through delivery of exceptional solutions. For more information please contact Sue Norreys at suen@2bconsulting.net

Wednesday 19 March 2008

Update Rollup 3 for Microsoft Dynamics CRM 3.0

Update Rollup 3 for Microsoft Dynamics CRM 3.0 has just been released and available at the following address:

Update Rollup 3 for Microsoft Dynamics CRM 3.0 (KB 935364)

For Questions & Answers, Updates and Knowledge base articles, check out the following post on MSDN blog:
Microsoft Dynamics CRM Team Blog : Update Rollup 3 for Microsoft Dynamics CRM 3.0

Thursday 13 March 2008

Retrieve Team details from a User Id in CRM 3.0

In CRM 3.0, I needed to get some of the team information of a specified user which I could not find any sample code on how to do this but with the help of the SDK, I wrote this little method to retrieve the team id or list of teams ids that a specified user belongs to. The code is written in C#.

The code makes a call to the web service and retrieves the teamid using the Request and Retrieve classes RetrieveTeamsSystemUserRequest & RetrieveTeamsSystemUserResponse on the team entity.

The user performing this action from within CRM must have access rights on the team entity instance and thats why I used the best practice impersonation technique.

In this case, I’m only retrieving the teamid attribute value (Guid) but you can easily extend it to retrieve any of the following team attributes by creating a ColumnSet and set the attributes to retrieve for this or each team:

businessunitid Specifies the ID of the business unit with which the team is associated.
createdby Specifies the ID of the user who created the team.
createdon Specifies the date and time when the team was created.
description Contains the description of the team.
emailaddress Specifies the e-mail address for the team.
importsequencenumber
modifiedby Specifies the ID of the user who last modified the team.
modifiedon Specifies the date and time when the team was last modified.
name Specifies the name of the team.
organizationid Specifies the ID of the organization associated with the team.
teamid Specifies the ID for the team.

The EntityId is basically the SystemUserId performing this action.

I then passed an instance of the RetrieveTeamsSystemUserRequest class as the request parameter in the web service Execute method.

Finally, extracting the Guid from the returned instance of the response class (RetrieveTeamsSystemUserResponse) after casting it to the team entity.


private Guid GetTeamId(Guid userId)

{

Guid teamid = Guid.Empty;

try

{

CrmService service = new CrmService();

service.Credentials = System.Net.CredentialCache.DefaultCredentials;

// impersonate the user who performed the action

service.CallerIdValue = new CallerId();

service.CallerIdValue.CallerGuid = userId;

// Retrieves the team id of which the specified user is a member

RetrieveTeamsSystemUserRequest retrieveTeam = new RetrieveTeamsSystemUserRequest();

ColumnSet tcs = new ColumnSet();

tcs.Attributes = new String[] {"teamid"};

retrieveTeam.EntityId = userId;

retrieveTeam.ColumnSet = tcs;

//Get the teams details of which the specified user is a member

RetrieveTeamsSystemUserResponse responseTeam = (RetrieveTeamsSystemUserResponse)service.Execute(retrieveTeam);

teamid = ((team)((responseTeam.BusinessEntityCollection.BusinessEntities.GetValue(0)))).teamid.Value;

}

catch(Exception ex)

{

// TODO: Log errors

}

return teamid;

}

Wednesday 12 March 2008

Microsoft Dynamics Sure Step Methodology for CRM Training Event

I just thought I’d let you all know that there is a training event at Microsoft in Reading on Microsoft Dynamics Sure Step Methodology for CRM on Friday14th March 2008.

This is a one-day course to provide you with the knowledge and skills to use Sure Step to successfully implement Microsoft CRM solutions.

According to Microsoft, this methodology is designed to enable rapid and reliable implementation, optimization, and upgrade of all Microsoft Dynamics solutions and can help organisation to:

- Reduce implementation risk through a predictable implementation roadmap.

- Work more easily through complex or multi-site implementation projects by leveraging the same tools and approach as other partners and Microsoft consultants.

- Keep projects on track and within budget by enabling you to create reliable estimates for budgeting and resource allocation.

- Facilitate better teamwork and increased collaboration.

- Increase customer satisfaction.

- Win additional deals!

The objectives of this event from the partner’s website:

- Sure Step: Proven, Powerful Implementation Methodology and Tools

- Sure Step is an all-new suite of field-tested tools, implementation guidance, and services to help your organization complete Microsoft Dynamics implementations on time and on budget, reduce business risks, and satisfy customer expectations.

- The new instructor-led course, using the Microsoft Dynamics Sure Step Methodology to Implement Microsoft Dynamics, will focus on the implementation methodology model that provides the foundation of the Sure Step Methodology, and will demonstrate how to effectively use the Sure Step Methodology in small, medium, and enterprise-level implementation projects.

- The course will provide guidelines and best practices for using the Sure Step Methodology to help prepare you for and successfully execute a Microsoft Dynamics implementation project. The course will help accelerate your understanding and effectiveness in using the Sure Step Methodology.

The agenda of this event:

- Understand the implementation model that supports the Sure Step Methodology.

- Understand the structure, organization, and components of the Sure Step Methodology.

- Use the Sure Step Methodology confidently.

- Use the project management strategies and tools in the Sure Step Methodology to successfully manage an engagement during all phases of an implementation.

- Customize the Sure Step Methodology to incorporate your organization’s own best practices, templates, and tools.


It sounds like an interesting event which unfortunately I would not be able to attend this time. It should also be noted that these events are available only for partners.

To attend this event, you would need to register as usual at the Dynamics Partner Training site: http://www.microsoft.com/uk/partner/dynamicstraining/?id=crm

There is also another one on 25th April if you could not get a booking for this one.

Also, you can download the audio partner cast: Microsoft Dynamics Sure Step Methodology published last year: http://www.microsoft.com/downloads/details.aspx?FamilyID=37B01879-6AA7-4875-BBA0-35015B6FFA79&displaylang=en

If you are attending this event, then please give us your thoughts on the event and the use of this methodology in CRM.





Have fun ;o)

Tuesday 11 March 2008

ISV config in CRM 4.0 and adding toolbar buttons and menus

I have seen quite a few posts in the forum regarding the ISV config and creating custom toolbars, buttons, menu etc in CRM 4.0.

This is the same in CRM 3.0, the only difference is that the isv.config is available from within the client: Customization --> Export Customizations --> isv.config (export)
and when modified import it back: Customization --> Import Customizations

And to edit the isv.config xml file and validate it to ensure it is all fine use xml notepad, and the following post gives more details Validating CRM 4.0 Customizations Files

And to enable it for display in Outlook, Outlook Offline and/or Web Application:
Administration --> System Settings --> Customization --> Custom menus and toolbars

For more detailed step by step instruction, the following article is very helpful: CRM 4.0 and ISV.config modifications

Hope this helps someone...

Friday 7 March 2008

Course 8910: What’s new in Microsoft Dynamics CRM 4.0


I completed a three days training course at Firebrand training camp in CRM 4.0 last week.

The course was very beneficial as it was full of in depth understanding of what the changes are and how they can be applied in business scenarios. Also, the instructor Mr. Julian Sharp from Vigence who's a highly experienced instructor and was able to answer most of the queries put forward.

Anyhow, the course went through the following topics:

Overview:
Description of key new features of Microsoft Dynamics CRM 4.0 and general overview

Install & Deploy:
Upgrading CRM 3.0 to CRM 4.0 and one thing to note on this topic is that if you are upgrading CRM 3.0 to 4.0 server, the Outlook clients should still work fine as it is using the web service which does not get removed by the upgrade which allows you to keep the Outlook clients running until you get around to upgrade them to 4.0.

Also, went through the hardware and software requirements and one thing to note here is that CRM 4.0 requires SQL server 2005 SP2 and Windows Server 2003. Also, the E-mail Router has been

Configuration:
It’s all about being Multi!

- Creating multiple organizations (Multi-Tenancy)

- Having Multicurrency and reporting on the base currency!

- The multilingual user interface and the ability to import & export languages definitions and labels translation which allow you to add or modify the translation provided quite easily using excel spreadsheet

Data Management:
And export, edit, and import data by using the Import Data Wizard and the new Data Migration Manager tool. The ability to map exported fields to the existing CRM fields and saving these maps for future use. The job runs at the background and failures and successes are all recorded to be reviewed.

Also, the Duplicate Detection feature and the ability to identify duplicated records based on criteria the user specify when running the duplicate detection job.

Microsoft Dynamics CRM for Outlook and Business Applications:
Changes in Microsoft Dynamics CRM for Outlook and in particular the ability to switch between organisations without having to have different user accounts as long as the user is a CRM user in both organisations.

The Diagnostic Tool for Outlook to identify records that cause problems when synchronising and also identify and resolve CRM Add-ins that have been disabled. The diagnostics tool assesses the Network and connectivity, Internet Explorer settings, MS Dynamics CRM Office Client Configuration, Synchronisation, System Configuration, Updates to MS Dynamics CRM for Outlook and Performance.

Feature and User Interface Changes include the ability to promote up to 20 records at a time and the ability to syncronise telephone calls, letters and faxes too.

Also, changes to Advanced Find and Activity Report to export data from multiple entities if they are related.

In addition, a SQL connector is now used to not allow the reports to connect to SQL directly.

Customisation:
Nothing major has been changed apart from the addition of the customised translated labels in multilingual deployment.

Nothing has changed in the core and custom entities apart from the addition of relationships which made a lot of things easier and quicker to do such as having a many to many and self-referential relationships which used to be virtually impossible without having to use unsupported methods!

Additional enhancements include the removal of private views and the ability to display attributes from related records in a view.

Workflow:
The workflow in CRM 4.0 is set from within the client and accessible by users to be able to create, publish, and monitor their workflows. This is quite powerful and should eliminate most of the work that you used to write callout .net dlls for. In CRM 3.0 there were only a few record types supported but in CRM 4.0 there are more of these records supported and access to attributes from workflow is quite easy.

The sale process has been removed and now you have stages, steps, actions and conditions to utilise in workflows which in my opinion was a little confusing!

When upgrading to CRM 4.0, the workflows written in CRM 3.0 will automatically be shut down and CRM 4.0 takes over and still support the features of CRM 3.0 (Negotiable!!).

Programmability:
Callouts have been removed and CRM 4.0 or what they call it now is plug-ins which you would need to register using an SDK tool which is quite pain but there is another PluginRegistration tool v2.0 which has a better user interface which can be used to register dlls and edit it. More info and to download PluginRegistration tool v2.0, check this link:
http://blogs.msdn.com/crm/archive/2008/02/04/crm-registering-plug-ins-made-easy.aspx

It should be noted that plug-ins model support both asynchronous and synchronous events.
Also, the SDK include the following web services:
- A new CrmDiscoveryService
- A reviced MetadataService

The CrmDiscoveryService is a global site-level service allow you to return a list of organisation that a specified user belongs especially in an internet-facing deployment (IFD) and Windows Live authentication. There are a few written materials on this.

The MetadataService can be used to create custom entities, add or update an attribute for an entity, either system or custom, create or delete relationship between two entities, add or remove an option from a picklist attribute and write an installation and uninstall program for your custom solution.

As mentioned earlier the previous Microsoft CRM 3.0 CRMService web service does not get removed when upgrading allowing you functionalities to work as usual until it comes the time to move them into CRM 4.0 web service.


For those who used to write unsupported web service calls from within the client using jscript, it’s now supported using XMLHttp from the client-side code. The web service method and parameters are defined in XML and included in a SOAP envelope using the usual XMLHttpRequest in IE 7or using the ActiveXObject in earlier versions of IE.

The above is just a brief overview of what we went through during the three days course which I felt it was quite beneficial to me and the rest of the team.

I’m not sure if I have missed anything, if so please add it below and do post your queries here.

Anyhow, I'll try to go through some of the above topics in details when I get the chance to do so.

Enjoy!

Thursday 6 March 2008

Create recurring tasks or activities in CRM 3.0

There was a troubleshooting general issue in Microsoft Dynamics CRM 3.0 in regards to creating recurring activities such as appointment, service activity or tasks which is NOT possible to do in CRM.

The Q&A can be found at the following link:

http://www.microsoft.com/dynamics/crm/using/troubleshooting/tsgeneral.mspx

How do I create recurring appointments and service activities?
A. You cannot create recurring appointments or service activities in Microsoft Dynamics CRM. Appointments and service activities are created one at a time. If a recurring appointment is created in Microsoft Dynamics CRM client for Microsoft Office Outlook, the recurrence will be lost after synchronization with Microsoft Dynamics CRM.


Anyhow, I had a requirement to allow the users to create recurring tasks in CRM 3.0 task activity in particular. It should be noted that this is a lot easier to do in CRM 4.0 as all you would need is a simple workflow to create the recurring tasks when the initial task is being created.

This added feature shall simply capture the start and end dates of the recurrence event. It also captures the recurring pattern (i.e. Daily, Weekly, Monthly, Quarterly or Annually).

I then added a number of attributes and a new tab in the task activity to capture the above info and based on that I created a callout to create the tasks based on the values entered in the above fields as shown below.



The following code snippet is taken from the callout showing how the tasks have been created based on the recurring pattern inserted by the user.

// if recurring is set to Yes and recurring dates are
also set then create the additional tasks

if(new_isrecurring && new_recurringstart != string.Empty && new_recurringend != string.Empty && new_recurringpattern != 0)
{
DateTime addRecurringStartDate = DateTime.Parse(new_recurringstart);

DateTime addRecurringEndDate = DateTime.Parse(new_recurringend);


while
(addRecurringStartDate < addRecurringEndDate)
{

// Re-Assign the new_recurringstart & new_recurringend
new_recurringstart = addRecurringStartDate.ToString();
new_recurringend = addRecurringEndDate.ToString();

switch
(new_recurringpattern)
{

case
1: //Daily
addRecurringStartDate = addRecurringStartDate.AddDays(1);

if(addRecurringStartDate <= addRecurringEndDate)
// Call the Create Task method here
CreateAdditionalTask(....);
break;

case 2: //"Weekly":
addRecurringStartDate = addRecurringStartDate.AddDays(7);

if(addRecurringStartDate <= addRecurringEndDate)
// Call the Create Task method here
CreateAdditionalTask(....);
break;

case 3: //"Monthly":
addRecurringStartDate = addRecurringStartDate.AddMonths(1);

if
(addRecurringStartDate <= addRecurringEndDate)

// Call the Create Task method here
CreateAdditionalTask(....);
break;

case
4: //"Quarterly":
addRecurringStartDate = addRecurringStartDate.AddMonths(3);

if(addRecurringStartDate <= addRecurringEndDate)
// Call the Create Task method here
CreateAdditionalTask(....);
break;

case 5: //"Annually":
addRecurringStartDate = addRecurringStartDate.AddYears(1);

if(addRecurringStartDate <= addRecurringEndDate)
// Call the Create Task method here
CreateAdditionalTask(....);
break;


Obviously, you will need to call the CRMService web service and create the tasks from your callout.

In addition, you may need to cater for bank holidays and weekends and exclude them from your calculation of days, weeks, monthly and years. There was not a need to do that in this particular instance but if you need a guideline on how to do it or have any further queries regarding any of the above then please post it here or email me with it.