Dynamic Connector – Web service connection errors

A few weeks ago I was getting errors connecting to the NAV webservices using the Connector.

You can read more about that here

https://crmbusiness.wordpress.com/2012/08/16/crm-2011-dynamic-connector-error-the-request-failed-with-http-status-401-unauthorized/

I got round the problem by using the ip address of the server, other things you can try is the full name (usually .local at the end or something like that) or just the server or localhost if you are on the machine.

I did raise the question with the Dynamic Connector development team, who are a helpful bunch.

I have had a problem like this before and I thought I would explain what is causing this problem because you may come up agaisn’t similar issues like this in CRM, NAV and the Dynamic Connector.

The basic problem is Kerberos authentication and it’s failing.

the way I understand it is you can access the NAV webservices/crm webservices within internet explorer because you can add the webservices as a trusted site.   Adding this into the trusted sites helps the kerboros authentication, which explains why you can often access it using internet explorer.

If you can’t get any other url’s (ip address, localhost, servername, full servername) then you are going to have look at the SPN settings (Service Principal Settings).

If like me you are not sure what a SPN is, this is probably the time you start to talking to the IT experts internally and on the customer site.

I found a quick explanation about what an SPN is here

http://msdn.microsoft.com/en-us/library/windows/desktop/ms677949(v=vs.85).aspx

A service principal name (SPN) is the name by which a client uniquely identifies an instance of a service. If you install multiple instances of a service on computers throughout a forest, each instance must have its own SPN. A given service instance can have multiple SPNs if there are multiple names that clients might use for authentication. For example, an SPN always includes the name of the host computer on which the service instance is running, so a service instance might register an SPN for each name or alias of its host. For more information about SPN format and composing a unique SPN, see Name Formats for Unique SPNs.

Before the Kerberos authentication service can use an SPN to authenticate a service, the SPN must be registered on the account object that the service instance uses to log on. A given SPN can be registered on only one account. For Win32 services, a service installer specifies the logon account when an instance of the service is installed. The installer then composes the SPNs and writes them as a property of the account object in Active Directory Domain Services. If the logon account of a service instance changes, the SPNs must be re-registered under the new account. For more information, see How a Service Registers its SPNs.

When a client wants to connect to a service, it locates an instance of the service, composes an SPN for that instance, connects to the service, and presents the SPN for the service to authenticate. For more information, see How Clients Compose a Service’s SPN.

 

My basic understanding of this is you are setting up exe’s and computers to be trusted and put into a sort of list, so when a connection is attempted e.g. from the connector to a computer then if it’s on the list the kerboros authentication works.  Now my explanation could be a load of nonsense buts that how I imagine it works.

This issues are always tricky to resolve because often the IT staff won’t want to get involved and say it’s a problem with NAV/CRM/Dynamic Connector and it’s nothing to do with the IT setup.  It’s highly likely you won’t have access to the domain controller to be able to tinker with the SPN settings so you haven’t really got any choice but to keep explaining to the IT staff.

I have had days wasted trying to figure out these kind of problems and I hope your connector installations don’t suffer from this problem.

 

CRM 2011 – What is a Dynamic CRM Limited CAL

I was asked today what the benefits and negatives of using CRM Limited CAL.

I had no idea what a CRM Limited CAL was.

I know CRM users have Access Modes

Read-Write

Administrative

Read

but whilst investigating this I then noticed there is a license type next to the access mode on the user record.

License type has these options

Full

Limited

Device Full

Device limited

For my CRM 2011 installation and configuration exam I knew the device part means you can have users limited to a device and this is basically good if you have people working shifts or using the same computer at different times.  Rather than have a separate license for each user you can have a license for the device/machine.

but what does a limited license type do?

I will admit to gathering information from a number of excellent blogs.  I have changed a user to limited and found they can add, update and delete the core records they have added themselves.

They can’t delete records created by other users.

Lets start the pasting, nice little table from this page

http://www.techsoup.org/stock/Microsoft/crm_editions.asp

CRM Server Access per CAL Read access Write access
Employee Self Service CAL Limited Limited
Limited CAL Full Limited
Full Use Additive CAL N/A Full
Limited Use Additive CAL Full Limited
CAL Full Full

The text below is an excellent succint description of what the limited cal offers you, it’s around 30 percent cheaper

http://preactcrm.blogspot.co.uk/2011/04/microsoft-crm-2011-user-licensing.html

Limited CAL

In Dynamics CRM v4 a Limited CAL was restricted to read-only access but in Dynamics CRM 2011 the Limited CAL has been expanded to include additional permissions.

For starters, Limited CAL users can now create and amend many of the standard entity records including accounts and leads. This includes permissions to:

  • Create: Accounts, Contacts, Cases, Leads and Activities (including custom activities) using Microsoft Dynamics CRM web, Outlook and mobile clients.
  • Update: Accounts, Contacts, Cases, Leads and Activities created by any CRM user using Microsoft Dynamics CRM clients. Limited CALs also enable the above record type to be associated (or appended) to another so for example, a Limited CAL enables capability to link an activity with a case or to link a contact to an activity.
  • Assign, share & delete: Accounts, Contacts, Cases, Leads and CRM Activities that are created by the same user using Microsoft Dynamics CRM clients.

Further controls is available through an Application Programming Interface to Microsoft Dynamics CRM functionality that can be accessed via any application/graphical user interface (GUI) other than the Dynamics CRM client.
These includes permission to:

  • Create: custom entity records
  • Update: custom entity records that were created by any CRM user
  • Append / Associate: custom entity records with other entities (excluding custom activity records) created by any CRM user.
  • Assign, share and delete: custom entity records created by the same user

These 4 permissions are only available with a Limited CAL through API access.

Not included with a Limited CAL

The Limited CAL doesn’t provide any permission to assign, share or delete records that are created by other CRM users.

Finally, all other entities and CRM functionality have read only access including opportunities, quotes, mail merge, workflows, reports and dashboards. A full CAL is needed to have unrestricted access to all of these functions and entities.

Limited CALs in Summary

Limited CALs are an attractive lower cost option (around 30% of the full CAL price) for light users including analysts or data-entry users in service and telemarketing teams who only need basic access to standard entities including cases, leads, accounts and contacts.

If requirements change a Limited Use CAL can be upgraded to a full CAL for complete CRM functionality by purchasing a Full Use Additive CAL.

The limited cals also can’t create/update custom entities but can see them.  Limited cal’s also can’t use workflows, reports or dashboards or delete records they haven’t made.

It would be tricky to estimate whether a user could use a limited cal.

The articles I found on the subject are below

http://blog.meteorit.co.uk/2012/02/23/crm-2011-pricing-and-licensing-guide-updated-feb-2012/

http://preactcrm.blogspot.co.uk/2011/04/microsoft-crm-2011-user-licensing.html

http://www.techsoup.org/stock/Microsoft/crm_editions.asp

http://microsoftaucrm.wordpress.com/2011/03/21/new-crm-2011-licensing-options-leads-to-better-flexibility/

CRM 2011 – Reassigning records in CRM 2011

someone at work recently left and someone replaced them and I hadn’t thought anything about it until I started thinking about all the records assigned to this user?

 

Interestingly you cannot delete users in CRM 2011 you can only de-active them.

 

so I know had to find out how to reassign the records from one user to another.

To do this you need to go to the user record in

SETTINGS –> ADMINISTRATION –> USERS

open the user record and you will notice there is a Reassign button

 

 

 

 

One you press reassign button you can then choose who you want to reassign the records to.

 

Before you start assigning records you should take a bit of time to consider the effect this might have.  This button will reassign all records, historical, closed, everything.

Assigning records might change some reports if the user was a sales person etc.

This blog post goes into the potential problems in more detail and I would advise reading it, just so you are informed of the potential banana skins

http://mscrmonline.wordpress.com/2011/02/21/danger-of-reassign-all-records-owned-by-the-current-user-function/

 

http://www.mhacloudcomputing.co.nz/top-navigation/news/2011/10/17/caution-when-reassigning-records-in-crm-2011.aspx

 

 

 

CRM 2011 – Rollup 10 now ready to download – yes rollup 9 will not be released

I saw on Rhett Clinton’s blog that Rollup 10 is ready to download

http://bingsoft.wordpress.com/2012/08/16/crm-2011-rollup-10-now-available/

Now for those of you who haven’t been keeping up, rollup 9 was cancelled and we have skipped to rollup 10!

if you want to understand what exactly is going on there is a useful description on an kb article which goes with the download

http://support.microsoft.com/kb/2710577

Update Rollup 10 for Microsoft Dynamics CRM 2011 is available. This article describes the hotfixes and updates that are included in this update rollup. This update rollup is available for all languages that are supported by Microsoft Dynamics CRM 2011.

Important note What happened to update Rollup 9 for Microsoft Dynamics CRM 2011?

Update Rollup 9 for Microsoft Dynamics CRM 2011 will not be released because of a delay in the Q2 Service Update. Update Rollup 10 fixes all the issues that would have been included in Update Rollup 9. For more information, go to the following Microsoft Dynamics website:

https://community.dynamics.com/product/crm/crmnontechnical/b/crmconnection/archive/2012/07/06/q2-2012-service-update-new-delivery-schedule.aspx

Additional Functionality:
Support with Microsoft Dynamics CRM 2011 and Microsoft Office 2013

Support with Microsoft Dynamics CRM 2011 and Windows 8

Support with Microsoft Dynamics CRM 2011 and Internet Explorer 10

Update Rollup 10 includes performance enhancements for retrieve multiple queries and Quick Find. For more information refer to the sections titled “Optimizing the Performance of Queries against Large Datasets” and “Optimizing the Performance of Quick Find Queries” within the Optimizing and Maintaining the Performance of a Microsoft Dynamics CRM 2011 Server Infrastructure

white paper.

CRM 2011 – Dynamic Connector Error – The request failed with HTTP status 401: unauthorized

I was once again wrestling with a Dynamic Connector install.

The hardest thing about using the Dynamic Connector is as soon as you get an error, it’s practically impossible to find any help for it, I think this is due to not much has been written, they didn’t agree on a name for ages so you can’t prefix your search with something distinctive (e.g. connector is too ambiguous).

It’s quite frustrating when you searching for help and I keep getting diverted to my own blog, which didn’t have the answer (come on Hosk sort that out| what do you think I am doing right now)

The problem was trying to connect to the NAV Webservices.  I had enabled the connector webservices inside NAV (marketing, enable connector) and I had started the webservice and I could even connect to the web service using internet explorer but as soon as I tried to connect to the webservice inside of the connector I was getting an unauthorized error.

 

 

I checked the user I was using was  a domain user, they were an admin on the machine (not needed but a good sign I thought), they had the super role in NAV.  The user had all the credentials, so why was it throwing this message.

I changed the url I was typing to try

server name

localhost

full server with .local on it

 

none of the above worked.

What finally worked was to put in the ipaddress and then it worked without any problems.

I have to admit I don’t understand why this works and the others don’t but I have some vague idea it’s a security setting, possibly related to SPN but I’m not sure and I don’t really know how the web services in NAV work (what web server are they hosted in?)

Whilst searching for the problem I also found these articles which might be useful

how to turn on logging

http://community.dynamics.com/product/nav/navtechnical/b/navrenegayerblog/archive/2011/06/09/nav-crm-connector-just-one-more-tip-trace-log.aspx

Interesting forum discussion with other possible solutions

http://social.microsoft.com/Forums/hi-IN/crmdevelopment/thread/43aa5d1a-3326-4349-a183-881c76e7b0ce

 

 

CRM 2011 – Could not load file or assembly ‘Microsoft.SharePoint.Client, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c’ or one of its dependencies. The system cannot find the file specified.

continueing with my current project of trying to automatically create Sharepoint folders and copy files into sharepoint.

I have now done this with a webservice and a web application.  I was getting this error when I published the web application to the live server, the code was working on my local dev environment.

This time I was coding the web application and when it got to the point of trying to connect to sharepoint it was throwing this error

Could not load file or assembly ‘Microsoft.SharePoint.Client, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c’ or one of its dependencies. The system cannot find the file specified.

The key to this error (in my opinion) was the fact it could not find the file.  This basically seemed to say it could not find Microsoft.SharePoint.Client.dll

This seemed a bit odd because I had added the dll as a reference but looking in the bin directory of the deployed web application.

This other time I have had an error similar to this is when I have tried to run the CRM plugin registration tool and the folder hasn’t got the microsoft.crm.sdk.dll and maybe a couple of other dl’s.

So once I copied the sharepoint dll’s into the bin directory of my web application it was working

CRM 2011 – Transactions and Sharepoint Online

I have previously blogged about using authentication with sharepoint online and I am at it again.

https://crmbusiness.wordpress.com/2012/06/20/crm-2011-authenticating-with-sharepoint-online-2010-from-a-net/

To summarise the blog above you basically have to login to Sharepoint online before you can create the folders and this involves logging on to Office365.  The code checks to see if there any cookies which would have been created if you had logged on and if there aren’t any it logs on and creates those cookies (if I remember correctly).

This caused me some problems when trying to use this code within a CRM plugin.  Firstly I was getting problems because some of my code was a USING statement, I have a couple of good blogs, web pages below.

http://stackoverflow.com/questions/248961/c-sharp-using-statement-catch-error

http://msdn.microsoft.com/en-us/library/aa355056.aspx

The main reason this doesn’t work in a plugin is because I think it creates another transaction and this breaks the plugin transaction.

I’m not totally sure about this transaction below but it’s what I think is happening.

I think CRM plugins are based around WCF which is a transactional and my understanding of this is you can’t have a transaction within a transaction.

I had written some code which creates some sharepoint folders based on the document locations records, basically when a project record was being created I wanted to create the sharepoint folder and some other folders within that folder.

I tested the code working from my machine and manually created a an IOrganizationService and getting/retrieving and creating CRM entities etc.  This code also worked and created the sharepoint folders.

BUT…

when I then put this into a plugin I was getting transaction errors, this was difficult to debug but when I tried to connect to Sharepoint online it crashed out with a transaction error.

To get round this I decided to put the code into a webservice and call that from my plugin and this finally worked.

I could be wrong about transactions and there could be a better way to do this but I’m just happy I got the thing working

CRM 2011 – Could not load file or assembly ‘Microsoft.Crm, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35′

I was trying to remote debug a webservice which was using CRM code and I started getting this error.

Could not load file or assembly ‘Microsoft.Crm, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35′

I have never seen this error and I wasn’t sure if it was because I was trying to run it from my machine where certain dll’s are not in the GAC? or I have no idea.

but after I copied some dll’s into the bin directory of my web application or added them as reference the problem was fixed.

to read how to resolve the problem go to the blog below

http://nishantrana.wordpress.com/2011/01/20/could-not-load-file-or-assembly-microsoft-crm-version5-0-0-0-cultureneutral-publickeytoken31bf3856ad364e35-or-one-of-its-dependencies-the-system-cannot-find-the-file-specified-or-deploying/

CRM 2011 – Understanding document locations

I have been working with CRM 2011 and Sharepoint online.  Out of the box CRM 2011 has some great integration with Sharepoint and it can create and view folders semi automatically.

The current project wanted this to be automatic.

The first thing I had to do was understand how this worked and it’s a little bit unusual.  Sharepoint integration works in a similar fashion to email in CRM basically CRM doesn’t not do any sharepoint integration in a similar way to CRM does not do any emailing.

Emailing in CRM is passed off to either the Outlook add on or a CRM router.

My understand of Sharepoint and CRM is similar.

CRM creates entities called Document Locations and these hold relative sharepoint url information.  When you click on Documents in the left hand navigation options it creates a series of relative document locations, working back from the Sharepoint site entity.

e.g. for a new account called Test

Sharepoint site = default

document location – account

document location – Test

The two document locations will have a parent site or location link in them.

The way to understand this is to basically think of a file a structure on your C drive and imagine the default collection is not a sharepoint site but C:\

C:\account\Test

so to automate this for a new account I would need to add two new document locations account and Test.

I was doing this for a custom entity called project and the user could add lots of projects

c:\project\proj1

c:\project\proj2

c:\project\proj3

so when I was create a document location for project I had to check to see if a project had been created before, if it had then I knew the project document location was already created and I could then use that and reference it in the Parent Site or Location field.

Now I get onto the fact the point Sharepoint isn’t really related in CRM because even though I can create the document location records this does absolutely nothing in Sharepoint.  All it does it create a link to where it should be in Sharepoint but doesn’t create the actual folders.

There is also nothing in the CRM SDK to create Sharepoint folders from my understanding you now have to write code using the SharePoint dll’s or SharePoint webservice.

This is quite frustrating because CRM does create the sharepoint folder if you click on documents.

 

Hotmail to be replaced with Outlook.com

Microsoft seems to have taken the first step in retiring hotmail and offering new outlook.com email addresses.

I’m sure a lot of you will read this and think, I don’t want a new email address, I’m happy with my current email address.

The reason why I think you might want to change is if you act quickly you can get a decent email address, which used to be a big problem with hotmail addresses.

Also this might have some use with windows 8 and tablets.

It looks like hotmail could be replaced by outlook.com so you can’t avoid it.

If you have an existing hotmail account it can be incorporated into your new hotmail address, either by just having the emails in the main inbox or creating a new folder for you.

here is how to do it

http://www.pocket-lint.com/news/46739/outlookcom-setup-explained-new-address

and here are a couple of articles on the subject

Microsoft kills Hotmail and introduces Outlook.com: A look at the new features

http://blogs.independent.co.uk/2012/08/01/microsoft-kills-hotmail-and-introduces-outlook-com/

Hotmail to be replaced by Outlook.com in Microsoft switch

http://www.bbc.co.uk/news/technology-19067634