»

[26 Feb 2010 | 0 Comments]

I was privileged to be able to give a talk last night about an Object Role Mapper (ORM) tool that I have been using for over 2 years now called LLGLGen Pro. Dev Evening is a .NET user group near me which I have been attending for the last 4 months or so. Every meeting @mrlacy ensures there is a new and interesting topic for the techies that attend.

A few weeks ago @devevening asked if anyone had use any An ORM is a tool that lets you generate all the boring / boilerplate code of getting data in and out of a database to a Data Access Layer (DAL) as easy as possible. I had done a fairly decent amount of research into the topic 2 years ago when I was looking at creating my own websites. I decided on LLBLGen pro as my tool of choice and have not looked back. I thought this would be a great opportunity to explain to other developers the reasons for my decision. [more]

My summary is this:

  1. I have no desire to be good at getting data in an out of databases. I would rather concentrate on business problems
  2. Getting an ORM gives me the experise of experts at little or no cost
  3. Paying for an ORM gives me professional support and a product with a roadmap
  4. LLBLGen fits my way of thinking, is easy to use and well worth the 249 euros!

MS CRM4, MS CRM, MSBuild »

[10 Feb 2010 | 0 Comments]

I have just been setting up a new Crm project using the MS Crm4 Developer toolkit. Hats off to the guys at MCS, its a great bit of work and is packed full of amazing features which if used properly will ensure extra quality and best practice in the development of a Crm4 solution.

However I did have a bit of a problem with it which I have managed to fix – the default DevBuild.bat MSBuild script would not register my plugins if I ran my Crm server on any port other than 80!

I had followed the documentation about changing the server names etc. but whenever it tried to register my plugins the build failed.

It turns out that the MSCrm 4 Developer toolkit will only play nicely out of the box if you are running Crm on port 80, I am running on port 5555 though! After [more]digging through the Plugin deployment tool source code I noticed that if the “CrmServiceAddress” was not specified then it made the url up from the CrmServiceServer but this did not include the port. Therefore the solution was to pass in the full Crm Service Address.

So the fix is this:

Edit the <YourSolutionName>.Common.targets file in the following places (changes are in red)

Here:

<!-- CRM Server Settings -->
<PropertyGroup>
  <CrmOrganizationName>MyCrmOrg</CrmOrganizationName>
  <CrmServiceServer>localhost</CrmServiceServer>
  <CrmServiceAddress>http://localhost:5555/MSCRMServices/2007/CrmService.asmx</CrmServiceAddress>
  <CrmServiceTimeout>120000</CrmServiceTimeout>
  <CrmServerBinAssemblyDir>C:\Program Files\Microsoft Dynamics CRM\Server\bin\assembly</CrmServerBinAssemblyDir>
  <ForceSynchronousPlugins>true</ForceSynchronousPlugins>
  <PluginDeveloperArguments Condition="'$(ForceSynchronousPlugins)' == 'true'">/sf</PluginDeveloperArguments>
</PropertyGroup>

Here:

<UKDynamics.MSBuildTasks.Crm4.Plugins.RegisterSolution
     OrganizationName="$(CrmOrganizationName)"
     ServiceAddress="$(CrmServiceAddress)"
     ServerName="$(CrmServiceServer)"
     Protocol="$(CrmServiceProtocol)"
     Timeout="$(CrmServiceSolutionTimeout)"
     RegisterFile="%(CrmPluginSolution.FullPath)"
     WorkingDirectory="$(CrmServerBinAssemblyDir)" >
     <Output TaskParameter="Duplicates" PropertyName="DuplicatePlugins"/>
   </UKDynamics.MSBuildTasks.Crm4.Plugins.RegisterSolution>

And Here:

<!-- Unregister a Plugin Solution -->
<Target Name="UnregisterCrmSolution"
        Condition="Exists('$(IntermediateOutputPath)PluginRegister.cache')" >
  <Message Text="Unregistering Crm Solution ... " Importance="high" />
  <UKDynamics.MSBuildTasks.Crm4.Plugins.UnregisterSolution
    OrganizationName="$(CrmOrganizationName)"
    ServiceAddress="$(CrmServiceAddress)"
    ServerName="$(CrmServiceServer)"
    Timeout="$(CrmServiceTimeout)"
    PluginAssemblyName="$(AssemblyName)"
    />

  <Microsoft.Build.Tasks.Delete Files="$(IntermediateOutputPath)PluginRegister.cache" />
</Target>

Then it seems to work and you can set any port number you want.

»

[9 Feb 2010 | 0 Comments]

This is the first of probably many shorted posts about the stuff I am learning about Microsoft Team Foundation Server and using the Scrum for Team Systems template.

I have just started as a senior developer on a brand new Crm4 project and we are currently setting up all the toys, such as TFS to manage the work. We are using the Crm 4 Developer toolkit, which has also been ‘fun’ trying to make work!

I will write short posts about problems I have and the solution that I use to solve them.

First then is adding ‘Teams’ and ‘Environments’ to the TFS project using the Scrum Template.

I was getting the following error:

“You don’t have enough permissions to complete the import operation.”[more]

 scrum-add-teams

My user account had all the right permissions as per the various forums about the same problem and I was a little stumped.

It turns out that this is a 3rd party webpart which is just an ASP.net application. I decided to try setting the permission right in it’s web.config found here:

C:\inetpub\wwwroot\ScrumforTeamSystem

I changed the identity tag so that it did not impersonate but used an account I knew had the right permission.

<!-- Explicitly apply Trust level and identity impersonation -->
<trust level="Full"/>
<identity userName="<MyWindowsLogin>" password="<Password>"/>

Guess what, I can now add teams and environments. I’m not sure what when wrong to make this necessary but at least I can start adding some proper value to the project now!