Archive for the “CRM” Category

Another short one for CRM 4.0…

Today someone from Sales department tried to assign an entity (this time a Contact, previous time an Account) to someone else. In cleaning up and/or deviding contacts within the Sales team, this is a daily routine and common practice for our Sales people.

The error that the Sales person got had something to do with insufficient permissions on assigning an entity and that the role he/she was in, did not have enough permissions :

InsufficientPermissions.gif

My first thought was : bullshit!

In my search for an answer, I discovered some interesting facts… (and a sleezy solution of course! )

  • The standaard role that the Sales person had, was enough to assign entity-records to himself or anyone else.
  • Even the CRM System Admin user could not assign the entity-record to someone.
  • Other entity-records are easily assigned to other people.

Solution

This is just a temporary one (hopefully), until we install Update Roll Up #4 :

  1. Give the System Administrator securityrole to the CRM-user that got the “insufficient permissions” error.
  2. Let the user assign the entity-record to the designated CRM-user.
  3. Remove the System Administrator securityrole.

That’s that! If there is anyone in CRM world that had this same problem, please leave a comment! I’m interested in a more… well… a better solution :)

  • Share/Bookmark

Comments No Comments »

Just a quick CRM 4.0 tip when you are working on Custom Reports in Visual Studio 2005.

Filtered views.JPG

Use Filtered Views instead of Tables or Views, otherwise you will recieve errors when running the report after importing it :

An error has occurred during report processing.
Query execution failed for data set 'Test_Dataset'
For more information about this error navigate to the report server on the local server machine, or enable remote errors
  • Share/Bookmark

Comments No Comments »

A little while ago, I was having trouble with postbacks and databound dropdownlists in a custom ASP.NET applicaion for CRM 4.0. After struggling for a day and sticking my head in the sand for a month, I picked up the problem for the last time. I was going to nail this sucker!

Going back to basics and suddenly I started thinking : But what was the solution?

Viewstate in ASP.NET! So after some digging, some google I found my hero : Gustaf Westerlund.
Add this line to your web.config of your custom ASP.NET application for CRM 4.0 and you are done :

<pages enableViewState="true" />

Shame on me for not seeing that in an earlier stage!

The viewstate in your web.config in the root of your CRM installation is set to false. That means that every site “beneath” that root level is taking over this viewstate setting… To false! So basically… Viewstate is evil! ASP.NET is scary!

Ow…yeah… and don’t forget to enable this property for your databound controls :

AppendDataBoundItems="True"

Dit lost dus voor mij een berg problemen met databinding en postbacks op, misschien heeft die ene trouwe lezer van mijn blog er wat aan? ;)

This is solving a lot of databinding and postback problems! Maybe I’m helping that one reader of my blog with this? ;)

PS: Gustaf, thank you very much!

  • Share/Bookmark

Comments 1 Comment »

Duplicate detection in CRM 4.0 is a nice tooling for frontend-users and works like a charm, but what if you want to do this in code? The MSDN API is not telling me enough and google search isn’t much of a help at all.

Therefore I posted some code which shows creation of a contact-record with duplicate detection :

contact eenContact = new contact();
eenContact.firstname = "Bert-Jan";
eenContact.lastname = "Diedering";
eenContact.address1_city = "Utrecht";

TargetCreateContact target = new TargetCreateContact();
target.Contact = eenContact;

CreateRequest request = new CreateRequest();
request.Target = target;
request.OptionalParameters = new OptionalParameter[]
{
new CreateDuplicatesOptionalParameter {Value = false}
};

CreateResponse response = (CreateResponse)client.Execute(request);

Also read a few words about the OptionalParameter.

  • Share/Bookmark

Comments No Comments »

Wanneer je op onderzoek gaat in de wereld van plugins voor Microsoft Dynamics CRM 4.0, dan komen er vragen boven. Wat moet er gebeuren om een plugin te kunnen maken/gebruiken. Wat is bijvoorbeeld het verschil tussen een workflow en een plugin? Wat is de inhoud van de context gevoelige objecten? Is debuggen mogelijk en zo ja : hoe? Daar kan ik een heel mooi epistel over schrijven maar dat kunnen anderen ook.

Deze vragen worden in deze post beantwoord aan de hand van een scenario, om een beeld te krijgen van een mogelijk doel van een plugin.

Read the rest of this entry »

  • Share/Bookmark

Comments 2 Comments »

In deze posts geef ik een aantal tips die je kunnen helpen bij de customizations in CRM 4.0.

Tip 1 : salutation veld vervangen door custom attribute

De Contact entiteit binnen CRM 4.0 heeft een attribuut genaamd “salutation”. Dit is een tekstveld en wordt bij het synchroniseren met Microsoft Outlook gekoppeld aan het Title veld van een Outlook-contactpersoon. Het nadeel hiervan is dat je in de contactpersonen lijst van Outlook dus ook in de “Full Name” kolom dan bijvoorbeeld “Geachte Piet Pietersen” ziet staan.

salutation.JPG

Voor degenen die hun Outlook syncrhoniseren met hun telefoon is het dan een ramp om contactpersonen te zoeken of er doorheen te bladeren. Om dit op te lossen kun je bijvoorbeeld een vervangende picklist maken met de naam “new_salutation”. Hierin kun je dan bijvoorbeeld “Geachte” en “Beste” opgenomen.

Tip 2 : Customizations importeren en exporteren

De volgende stappen van aanmaken van een attribuut en het exporteren en importeren van een nieuwe attribuut met dezelfde naam, resulteren in een foutmelding.

  1. Maak een attribuut aan genaamd “new_test” van het type nvarchar en plaats deze op een form.
  2. Publish je wijzigingen en exporteer de wijzigingen naar de desktop.
  3. Ga nu terug naar je attribuut “new_test” en verwijder deze van het form.
  4. Publish je wijzigingen.
  5. Verwijder nu het attribuut uit CRM en publish je wijzigingen opnieuw.
  6. Maak nu een nieuw attribuut aan genaamd “new_test” van het type Picklist en plaats deze op een form.
  7. Publish de wijzigingen.
  8. Importeer nu de eerder geexporteerde wijzigingen en je zult zien dat dit niet gaat :

import customization.JPG

De exacte foutmelding is deze :

Failure: lead: AttributeInfo.TypeName(nvarchar) != AttributeMetadata.Type.Name(picklist)

De conclusie hierbij is dus dat het niet mogelijk is om een attribuut te importeren waarvan de naam al bestaat, ook al is het type anders.

Kies de benaming van nieuwe attributen dus zorgvuldig. Zorg dat je niet dezelfde attribuut namen hebt.

Tip 3 : Bewaar backups van je customizations

Als je het slim aanpakt, heb je de VPC van Microsoft Dynamics CRM 4.0 gedownload die je als lokale testmachine gebruikt. Nog verstandiger is een Acceptatie server in een apart domein in je netwerk. Voordat je de customizations exporteerd naar de Productie omgeving heb je al minstens 2 exports gedaan van de customizations. Om daar enigszins overzicht in te bewaren, kun je naar mijn idee het beste een SVN-repository vol met zip bestanden gebruiken. SVN is gratis en de SVN client genaamd Tortoise is ook gratis.

  • Share/Bookmark

Comments No Comments »

Wie met CRM 4.0 werkt, weet dat het gebruiken van workflows een hoop werk kan besparen. Je kunt bijvoorbeeld een workflow starten op het moment dat er een CRUD operatie op een record wordt uitgevoerd, of wanneer een status van een record gewijzigd wordt. Wat door CRM 4.0 standaard niet beschikbaar is, is een timer functie. Om bijvoorbeeld alerts op een einddatum te kunnen versturen, hebben we een timer nodig. Hieronder laat ik zien hoe je je eigen implementatie van alerts kunt maken in CRM 4.0.

Read the rest of this entry »

  • Share/Bookmark

Comments No Comments »

De API van CRM 4.0 is overzichtelijk en alles wat je in de UI doet, kan ook via de webservice(s). Naast de webservice is er een andere manier om te programmeren in CRM 4.0. Voor de Contacts heb ik bijvoorbeeld zowel medewerkers als klantcontacten opgenomen in dezelfde Contacts entiteit. Dat zou betekenen dat je twee tabbladen zou hebben waarbij de tab voor medewerkers lege velden zou bevatten wanneer het een klantcontact betreft. Dit kun je vrij eenvoudig oplossen met wat javascript.

Read the rest of this entry »

  • Share/Bookmark

Comments No Comments »

Op mijn werk willen we naar Microsoft Dynamics CRM 4.0 migreren. Daarvoor ben ik CRM 4.0 aan het onderzoeken naar mogelijkheden en technische functionaliteiten. Data uit het vorige CRM pakket moet geïmporteerd worden in CRM 4.0 en er zullen Views aangepast moeten worden om aan de wensen van de stake-holders (Sales, Marketing, HR, Finance, Management) te voldoen. In deze post laat ik zien hoe je vrij eenvoudig data kunt importeren en hoe je een knop aan het linker menu toevoegt.

Read the rest of this entry »

  • Share/Bookmark

Comments No Comments »