For work I’m working from my Windows 7 machine, started up Windows XP in a Virtual PC, set up a VPN connection to a client, set up an RDP to a specific webserver, set up another RDP from there, to another webserver. Are you following me? Wherever it is where I am, this is what my bottom left-screen looks like :

rdpfun.jpg

  • Share/Bookmark

Comments No Comments »

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 »

From this moment on, I intend to blog in English.

This way…

  • I can reach a larger public (or group of readers)
  • English speakers don’t have to user Google translator anymore to read posts like a lot do with Crm 4.0 Plugin voor dummies :)
  • I can freshen up my skills in talking another language than Dutch.
  • English sounds kinda cool…

Maybe when I have some time off, I’ll translate my previous posts. Until then : happy google-translating :)

  • Share/Bookmark

Comments 2 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 »

Iedere keer als ik log4net logging wil gebruiken in een project, vergeet ik weer hoe dat ook al weer moest. De apache site is er ook niet echt duidelijk over, of je moet in de SDK gaan zitten zoeken. Voorbeelden staan her en der verspreid. Vanwege de wens om enige consistentie te creeeren in mijn manier van logging en omdat ik graag overzicht heb, post ik hier de stappen om logging aan te zetten in je .NET project.

  1. Allereerst moeten we natuurlijk de log4net dll downloaden : http://logging.apache.org/log4net/download.html
  2. Dan leggen we een referentie naar de dll.
  3. Dan deze code bovenin je classes die je van logging wilt voorzien :
  4. private static ILog logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType.Name);

    (owja MethodBase.GetCurrentMethod zit in de Sytem.Reflection class en op deze manier hoef je niet iedere keer een naam in te voeren die de huidige class representeerd…)

  5. Vervolgens in de Page_Load van een Webapplicatie of in de Main van je console of Winforms applicatie :
  6. XmlConfigurator.Configure();
  7. Dan in de config-file (app.config of web.config) een configSection toevoegen :
  8. <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  9. Onderaan de config-file je log4net configuratie toevoegen :
  10. <log4net>
    <appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
    <mapping>
    <level value="ERROR" />
    <foreColor value="White" />
    <backColor value="Red, HighIntensity" />
    </mapping>
    <layout type="log4net.Layout.PatternLayout, log4net">
    
    <param name="ConversionPattern" value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
    </layout>
    </appender>
    
    <appender name="GeneralFileLog" type="log4net.Appender.RollingFileAppender">       <file value="BertusTool.log" />       <appendToFile value="true" />       <maximumFileSize value="10000KB" />       <rollingStyle value="Size" />       <maxSizeRollBackups value="5" />       <layout type="log4net.Layout.PatternLayout, log4net">         <param name="ConversionPattern" value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />       </layout>     </appender>
    
    <!-- levels: DEBUG, INFO, WARN, ERROR, FATAL -->
    <root>
    <level value="INFO"/>
    <appender-ref ref="GeneralFileLog" />
    <appender-ref ref="ColoredConsoleAppender" />
    </root>
    </log4net>
    

    De eerste appender zorgt ervoor dat er een console geopend wordt, waarin gelogd wordt. De laatste appender is een fileappender.

  11. In je code kun je dan bijvoorbeeld zeggen :
  12. logger.Error("Help!", ex);
  13. Voor meer informatie over andere appenders :
  14. http://logging.apache.org/log4net/release/config-examples.html

Zo… dat vergeet ik niet zo snel meer :)

Edit : Een collega van me bij Sogyo kwam met de melding dat hij een errormelding kreeg op de log4net configuratie zoals hierboven beschreven. Na een onderzoek kwam ik tot de conclusie dat de SyntaxHighlighter de value in het conversionPattern foutief weergeeft. Ik heb het pattern vervangen door een simpele, die wel correct wordt weergegeven (bron : http://logging.apache.org/log4net/release/config-examples.html)

Edit2 : André Boonzaaijer heeft een sheet voor als je wilt weten hoe je standaard framework logging wilt gebruiken

  • Share/Bookmark

Comments 1 Comment »

Eindelijk hoor ik er ook bij want ik heb het gedurft : mijn eigen telefoon te flashen. Een collega gaf me deze link. Zelf had hij zijn oude HTC Magician telefoon (a.k.a. Q-tec S100, a.k.a. T-Mobile MDA Compact) geflasht met deze rom. Nadat hij een ongeveer een week heeft getest, ben ik nu ook een trotse bezitter van een telefoon met Windows Mobile 6.1. Wel even wennen en naar mijn idee is het een skin die op WME 6.1 lijkt, maar dat doet er allemaal niet toe. Een oud beestje maar dan met een nieuw en krachtiger OS, net als zijn jongere broers.

 

Hier zijn mijn bevindingen :

  1. De looks zijn perfect!
  2. Alle opties van Windows Mobile 2003 zitten er in, met nog een aantal extra.
  3. Af en toe doen de notification geluiden (gebeld worden, reminders, smsjes) het niet meer. Wat hiervan de oorzaak is weet ik nog niet.
  4. Internet explorer 6! Nadeel is wel dat veel websites niet ontdekken dat het een mobile internet explorer is dus daarom wordt de gehele pagina gerenderd ipv de mobile versie.
  5. Voordeel van IE6 is dat aangetoond wordt hoeveel kb er nog geladen moet worden.
  6. Bovenin de titel balk wordt aangegeven hoeveel GPRS bereik je eigenlijk hebt. Was eerder niet zo…
  7. Bij het openen van een text bericht wordt de gehele conversatie weergegeven.
  8. Het scherm is te locken/unlocken.
  9. Phone en Contacts knop worden onderin weergegeven.
  10. Knoppen die eerder verstopt zaten onder het toetsenbord, zijn nu beschikbaar onderin het scherm.
  11. Maar liefst 5 skins oftewel themes!
  12. Rete snel (oftewel ietsje sneller dan voorheen met Windows Mobile 2003) en de snelheid is aan te passen :-)
  13. Het flashen van de ROM kan ook vanaf Radio version 1.13.00 (proefondervindelijk ondervonden)
  14. Internetinstellingen van T-mobile was binnen paar minuten gebeurd.

* Mad Props (of kudos) voor een zekere Rus genaamd Cotulla !!

  • 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 »

Tenminste… dat was het subject van een email die ik laatst kreeg. Die mail bevatte een screencast om aan te tonen dat Resharper toch wel een hele fijne tool is.

Maar hoe fijn is ReSharper?

Persoonlijk ben ik van mening dat je lui bent als je ReSharper gebruikt. Aan de andere kant, hoe vaak gebeurd het niet dat je even niet meer weet hoe je iets moet implementeren? Of hoe vaak gebeurd het niet dat je het gevoel hebt, hetzelfde stukje code in een ander project opnieuw aan het typen bent?

En hoe vaak is die discussie al niet gevoerd op internet? Martin Fowler heeft zelfs de Tools pagina op zijn refactoring site al uitgeschakeld. Een beetje googlen en het lijkt of iedereen er toch wel met veel plezier gebruik van maakt! Er zijn zelfs fanatiekelingen die het twitteren!

Ouderwets

Noem me ouderwets, maar ik ben tegen. Okay, onderstaande screencast is dan wel een leuk voorbeeld van een pluspunt van ReSharper… Maar dat wil nog niet zeggen dat ik ook lui ga worden! Liever klop ik zelf mijn code zodat ik weet wat ik maak, dan dat ik tv ga kijken en ondertussen een ingewikkelde applicatie schrijf… Of…

Let op : Ondanks dat ik van een resharpende collega deze screencast kreeg en dat ik het woord “lui” heb genoemd, wil dat niet zeggen dat mijn werkgever luie mensen in dienst heeft ;-)

  • Share/Bookmark

Comments 2 Comments »