Subscribe: Mads Nissen
Added By: Feedage Forager Feedage Grade B rated
Language: English
add  based  crm  good  microsoft  new  office  puzzlepart  server  sharepoint  team  time  typemock  web  webpart  work 
Rate this Feed
Rate this feedRate this feedRate this feedRate this feedRate this feed
Rate this feed 1 starRate this feed 2 starRate this feed 3 starRate this feed 4 starRate this feed 5 star

Comments (0)

Feed Details and Statistics Feed Statistics
Preview: Mads Nissen

Mads Nissen

backlog on sharepoint, crm, office, .net development, architecture and more..


Handling an orphaned SPPersistedObject when working with e.g. SPJobDefinition or SPDiagnosticsServiceBase

Mon, 08 Aug 2011 07:50:00 GMT

I've been working with improving our Puzzlepart Framework components for simplifying development of SharePoint Timer Jobs lately, in relation to our upcoming release of "Did - The calendar is the timesheet" business app for SharePoint, and (as usual when digging deep into SharePoint) I ran into some problems with our beloved platform that needed resolution:-)If you're about to work with any type of SPPersistedObject I recommend you to first read through Charlie Hollands "The skinny on SPPersistedObject and the Hierarchical Object Store in SharePoint 2010" to make sure you've got the basics right. The problemCreating SPPersistedObjects usually happens when you call Update() on something like your SPJobDefinition subclass. In the case of a custom logger, the creation happens indirectly through the call to SPDiagnosticsServiceBase.GetLocal() (which fails if the object is already there). This is all well and good, until you decide to rename or move your class, and redeploy your solution. The only way do delete an SPPersistedObject is to call Delete() on the object and the only way to get a SPPersistedObject is to call GetChild(name). Thus if your typeof(T) is not loadable in the current context you cannot get the object and thus cannot delete it.Usually this will only create orphans in your config db that will spam your ULS logs with typeload errors, but sometimes it also blocks your new or updated type from working properly. In our case we were experimenting with ILMerge and (temporarily) had the same  class defined in multiple assemblies in our environment which totally confused SharePoint. It seems as the object-exists logic for SPPersistedObjects uses only the typename, while the creation logic pulls the AssemblyQualifiedName from the configdb, making the orphaned object registration a blocker for the new one.The supported (totally undocumented solution)After blogging this my colleague KjellSJ brought to my attention the undocumented deleteconfigurationobject stsadm command. SharePoint blogging legend Bil Simser wrote about this a loong time ago, and he'll help you avoid my SQL nastyness below:-) The (totally unsupported) solutionI could obviously revert my svn trunk and try to rebuild and deploy my old component-setup in order to allow loading of the orphan, but that seemed just too painful in a dev-environment. Que SQL: USE MYSHAREPOINTCONFIGDB SELECT [Id], [ClassId], [ParentId],[Name],[Status],[Version],[Properties]FROM [Objects] WHERE ClassId in   (SELECT [Id]   FROM [Classes]   WHERE FullName like 'Pzl.Framework%') Obviously replace your typename in the last statement. This will allow you to see the object registrations and I'll let you figure out the delete statement for those yourself:-) When the invalid object registrations are gone, you can take care of the entries in the Classes table. Totally unsupported but helpful for your dev environment when you don't want to recreate your WebApplication or farm.  [...]

Arctic SharePoint Challenge 2011 Announced!

Fri, 14 Jan 2011 14:36:00 GMT

Me and the guys at Puzzlepart have been working with some of our friends at NSPUG (Computas, Steria and Microsoft to be specific) for the past months in planning a different SharePoint event up here in the cold north. It's scheduled adjacent to the SharePoint Best Practices Conference in London in case some of our international friends wants to join in.


We're aiming to throw one hell of a hands-on event with a highly competitive factor for those of you with a slightly higher interest for the SharePoint platform than the average cat on the block.

Stay tuned with and make sure you follow @SPChallenge (Dexter the Lynx challenge mascot) on twitter:


Google GMail routes mail not adressed for gmail to GMail

Wed, 15 Sep 2010 18:17:00 GMT

I need to get this out of my system:

Google finds it appropriate to redirect email addressed to my company address (NOT Gmail) to my GMail account based on me using that address as a password recovery address in my GMail account. When I remove this recovery address. They keep remembering. Details and how Google states that they are doing no evil here.

They also think its appropriate to do the same thing with email flowing through Google Apps where I'm a member of a mailing list - again registered with my company, NOT gmail account.

Google: Please allow email going through your systems be routed to their original recipients and don't try to "help" me out. Especially when you don't support bulk forwarding emails in any easy way so at least I can get all the stuff you steal into Outlook in one go.

Should be a good reason to stick with Microsoft Exchange and SharePoint:-)


Display a PowerPoint deck in SharePoint 2010 using Office Web Apps

Thu, 09 Sep 2010 06:43:00 GMT

During a SharePoint 2010 training class i was conducting this week we were implementing a case originally created for MOSS 2007, where the author of the case had added a requirement to show a PowerPoint deck in a SharePoint page. This threw me a bit off, as I couldn't remember seeing any direct functionality for this. I turned out that the author had intended the students to research 3rd party solutions for this.

I started thinking about Office Web Apps. "Where are the built in Office Web Apps webparts" I thought.. Nowhere, it would turn out, so I started to experiment with a good old friend; the PageViewer webpart.

Using the Office Web Apps link to a SharePoint 2010 hosted document directly will not work, because its blocked for use in frames (PageViewer is just an iframe you know..). But if you open a document in Office Web Apps, and then click the Pop-Out button you'll get another URL which does.


This could be a starting point for a nice little codeplex webpart solution some time in the future. Until then; enjoy the PageViewer:-D

Location-Based Metadata #sp2010plaintalk

Sun, 29 Aug 2010 10:32:00 GMT

This is the first post in a series of SharePoint 2010 plaintalk (#sp2010plaintalk) aimed at SharePoint professionals who are exploring features of the platform, typically to do feasibility assessments for applying platform features in projects. With every new version of the platform I tend to spend a lot of time digging through the marketing and technical content of the new features to understand what a new feature *really* does. We'll start out with a small one on Location-Based Metadata (sounds fancy doesn't it:)

The techie #sp2010plaintalk is that the: Location-based Metadata is the same as the old default value setting for list columns, only applied to SPFolder objects with a form of inheritence. This enables you to set different static default values for different folders in a document library.

Use it when: you want differentiated default values for (simple typed) columns in different folders in your doclib.

Watch out for: lookup columns which doesnt work. Managed metadata does though..

Scenarios: My initial hunch for this feature was that I might be able to use it to apply dynamic values in some way, such as tagging documents in a project doclib with a project key. Because this scenario applies to the entire doclib there is no difference to the common default value functionality.

Read moreLocation-based Metadata on MSDN, Pascals walkthrough with screenshots

That's it folks. If you have a #sp2010plaintalk experiences don't hesitate in using this template to post it on your blog:)


The "Yesterdays Party" Code Smell

Wed, 16 Jun 2010 05:06:00 GMT

Discussions are going strong here at the Puzzlepart code camp in Colombo and we're noticing things about the way we work all the time. Commonly our discussions happens on video when the team is distributed, but for these weeks we're all onsite and we're really taking advantage of that. Yesterday the team got into a YAGNI discussion while our art director Christian was designing some of the wireframes for one of our upcoming products. Chris had added a UI element that was not really in the sprint because he felt that it completed the total impression of the purpose of the page, and this element had details in it that others on the team had objections towards. The element was not a priority so we decided to procrastinate the issue. The interesting part was that Chris opted to keep the element in the wireframe, even though it was conflicted. "It will be useful when we're coming back to this discussion" he said. Based on this I started reflecting a bit on some of the things that happen in the codebase.A common codesmell is the precense of a piece of code that is not really in use, but really seem to do something smart. The huge problem with these things is that its really hard for anyone other than the person who wrote it to delete it with confidence, and it even gets harder over time. "This thing looks really clever, it HAS to be there for a reason".All in all, having any cruft in your product that is not really in use is inherently BAD, and over some beers last nite we came up with the comparison of "Yesterdays Party". Imagine being at a party and at the end of the evening after completing a lot of highly successful and effective implementations of various beverages, you make a final trip to the bar before final call. You've got all these ideas about what you really need to throw into your system before you close shop for the evening, so you buy one beer, one bottle of red wine, one Long Island Iced Tea and some shooters. When the bar closes you obviously haven't been able to finish even half of these, but you decide to bring them to the afterparty at your house we're you're definitely going to need it. You sneak out the stuff under your jacket, and head off to the kebab shoppe on the way home. At this point your hunger is immense and you decide to bring back a large kebab dinner plate, some extra fries, a small cheese burger for the road, and a baked potato.Waking up the next morning you observe that your fridge is now filled up with stuff you didn't eat or drink, but seemed really clever at the time. For some of the items you decide to keep them because you actually convince yourself that you're going to eat that baked potato later on in the day, for other items (like the opened bottle of beer) you keep it just because you feel bad about being so darn stupid to bother to bring it so you don't want to relate to it anymore.As time passes and the items in your fridge is starting to collect mold and now you're getting really weary about touching it. So the morale is: If it seems like a great idea at the time to keep some stuff that you've gathered, then you're probably better off throwing it away immediately (or not get it in the first place), instead of waiting to see if you're actually going to need it. Applies to code, wireframes, tooling, documentation++ Food from yesterdays party  [...]

Creating Office add-ins with VSTO with Add-in Express

Thu, 20 May 2010 10:32:00 GMT

Back in 2005 I wrote several posts addressing challenges related to building and packaging Office add-ins with VSTO. We managed to complete a few very cool add-ins for customers, but I have to admit that we did have our share of problems.

There are still developers out there who are faced with the same challenges that contact me regarding this topic. Unfortunately some of the related content for my posts are lost, and the original sourcecode is not available for the public (customer property).

Since then I've created a couple of Office add-ins, and at Puzzlepart we are currently using some prototype office add-ins to support our products for SharePoint 2010. For the past few years we've moved from pure VSTO on to using Add-In Express. Our experiences so far are very good, and I would like to recommend anyone that are about to write and deploy a Microsoft Office add-in to at least research the offerings from Add-In Express. Creating add-ins are almost always more complicated than you first think, and if this is not your primary development focus I strongly recommend paying for a license and getting the full value of someone with years of experience in this field to support you through a product and through their forums and support services.

Add-In Express are supporting all major versions of Microsoft Office, including Microsoft Office 2010 in both 32 and 64 bit versions.

Good luck creating great add-ins for Office!

Puzzlepart Product Boxing Rocks

Fri, 07 May 2010 00:11:00 GMT

I had a few main drivers for starting the Puzzlepart project in the first place. First; working with great people, secondly having fun at work following the team principles.Third; always challenge with new ways of work.

One of the main concepts that has evolved in our team is the concept of "tangible". Anything and everything HAS to be tangible and touchable and we thrive for this in everything that we do. The past two days of workshopping is a great example of this. Andreas had experienced good results from doing "product boxing" in TANDBERG and we decided to try it out for ourselves.Basically the team has to create a prototype of the off-the-shelve box for whatever product we intend to release.

Now we've done it and our portfolio of Enterprise 2.0 Microsoft SharePoint 2010 product boxes are standing in front of us on the mantlepiece (or on the patio as in this picture):


Closing up shop after two days of intense discussions we've concluded that another asset is added to our team culture: Boxing rocks!


Puzzlepart Team Complete

Thu, 06 May 2010 22:34:00 GMT

This monday, Andreas Eide joined our team as the 9th key player in our business mission. Andreas joins us from TANDBERG where he has spent the past years managing the R&D of video collaboration solutions used by customers no less important than the White House. Andreas concluded the establishment of the Puzzlepart core team, and throughout the past few months concrete plans have started to emerge, pinpointing the direction to realizing real Enterprise 2.0 applications for the Microsoft SharePoint platform.

Andreas completes a very cool team of professionals (in my subjective opinion) who are going to make some noise in the coming years. In our roster we have senior architects such as Kjell-Sverre Jerijærvi and Øystein Garshol, and our Art Director Christian Manholt handling the ux and visuals. To make it happen we got a crew of SharePoint-specialist developers headed up by Indika Rathnasekara.

Puzzlepart will deliver a completely new offering for Microsoft SharePoint through a cloud-ready product portfolio of business-focused applications. Think Apple AppStore for SharePoint!

The team, however, is not entirely complete. We're still looking for one or two passionate and ambitious technologists to join us for this journey based out of our Oslo office.


In the coming months we're going to address important SharePoint 2010 technical issues and we'll start presenting our product concepts to all-y'all. These are indeed exciting times :-)



Efficient Workflow Architectures at Software 2010 in Oslo

Wed, 10 Feb 2010 17:53:00 GMT

Tomorrow I'm doing a session at the Software 2010 conference arranged by Den Norske Dataforening (DND) in Oslo.

The topic is on realizing the potential of an efficient workflow architecture with todays enterprise software tools & technologies. A lot of the content and reflections are based on my previous job as a consultant working with enterprise software solutions and solution architectures based on the Microsoft Platform. It's also largely inspired by one of last years meetings in IASA Norway which adressed the subject of workflow architectures.

(If you're interested in software architecture, please join us for a meeting at IASA Oslo!)

Today I'm also doing some consultancy, but my main focus is on Puzzlepart (launch of new website is imminent:-)) and the daunting task of creating a new generation business applications for Microsoft SharePoint, bringing the Enterprise 2.0 vision even closer for businesses making a bet on the Microsoft technology stack.

In this context we really need to think about how our software products, that will plug into the SharePoint enterprise platform, can play nice with the rest of the enterprise ecosystem, and stimulate to things like Efficient Workflow Architectures.

In my talk tomorrow I'll show how SOA'ish architectures on the Web have lead to sites such as which provides everyone with a service catalog that can be consumed and mashed up for any sane and insane purpose.

These concepts are now brought into the Enterprise world, and my hypothesis is that if you are able to provide an enterprise architecture that mimics the attributes of public services, then you'll be able to apply current workflow tools and technologies to realize a massive value for your business.I'll also provide the audience with some general introductions to workflow concepts and gotchas, and round up by trying to provide some tools for measuring the ROI of an investment in achieving a true "Business Mashup" with workflow support (and reaching BPO / BPM nirvana:))

Hopefully I will convince some of the audience about this tomorrow, and at the least I'm looking forward to engaging in interesting discussions with the community at Software 2010.

My presentation is available (in Norwegian) here. If you're after the appendix or speakers notes please get in touch with me and I'll supply you with the PowerPoint deck.

If you need to get in touch with me don't hesitate to use the contact form here on my blog, or contact me through my LinkedIn Profile.

Can Subversion do shelving? And should you really?

Thu, 10 Sep 2009 07:05:00 GMT

This morning Chatura, one of the Puzzlepart core developers, asked me how we should approach the need for "shelving" with our Subversion repositories. Chatura has extensive experience with TFS and wants be able to use the powerful tools of TFS on our development platform too.

Shelving is a Team Foundation Server term describing ”temporary” commits. Svn doesn’t put a name on this, but encourages teams to establish their own strategy for shelving. In my opinion this is a good thing because you'll need to get the communication and understanding going within the team and establish some best practice for your scenario. With svn teams usually select one of two trunk strategies that influences how you “shelve”:

  • Stable trunk; Team thrives to keep commits to trunk always building and testing out OK. This often introduces a need for an explicit shelving strategy. Most common here is (as probably described below) the use of temporary branches.
  • Unstable trunk; The team accepts the trunk to be unstable and encourages frequent commits. This strategy is often supplemented with a versioned branch which is used as source for the CI system etc.

I.o.w. shelving in svn, regardless of strategy, requires the team to master branching. Branching (imo) is a lot easier in svn than in other scc systems, but it’s easy to get confused about what is connected to what branch etc. In this regard its always best to try to keep it to a minimum. Trumpi has a pragmatic guide on the use of svn branches to mimic shelving.

My approach so far has been to aim for “Stable trunk”. Whenever I’m releasing or using components in some other project I create a descriptive tag (not branch) for this version so that I can always get back to exactly that codebase in case the release or consuming project gets into trouble.

If a pressing need for branching occurs we should create a new branch, commit our “shelved” code here and return to working on the trunk (much as Trumpi described). The important thing is that the branch-commit should be completed and merged into the trunk ASAP. Rouge branches collecting dust in your repository is lethal cruft for your codebase.

Much of the shelving needs often stems from working on too many things at once, or that the trunk contains too many, or unrelated components. We need to keep this in mind too. If we make sure we work on, and complete, one autonomous piece of value at a time, and that these tasks are split into < 8 hour chunks we’ll very seldom get the need for shelving. Said in another way; a frequent “need” for shelving might be a “smell” indicating that we could have done better planning. So this actually stems back to our work in the issue tracker. Think about defining tasks for yourself and your team members that can be completed as a whole, instead of huge tasks that take days or weeks and you'll see much less need for shelving.

So yes; we can do shelving from time to time, but it should most definitely be an exception to the rule and we should think long and hard about what we are doing to the codebase whenever we feel the need to put something on the shelf. This is also one of the reasons why we prefer Subversion over TFS; you have to think about how you do things. Software development projects are complex and with individual needs, and these issues should be well communicated and understood within the team. Giving developers easy-out-options and quick wizard'ish buttons might help immediately, but often omits the real challenge.



Upgrading Forefront TMG to Beta 3 - Modify the backup/export xml to enable import

Mon, 07 Sep 2009 11:30:00 GMT

For those of you who had installed a previous beta of Forefront TMG (yes, it's the new name for ISA Server) you might have had the pleasure of experiencing your TMG server going down after the 180+7 days grace period with the message "the evaluation period has expired" in the eventlog.

It's really hard to figure out the Forefront TMG version history, but currently (September 09) the latest one I've found is the Beta 3.

The upgrade path is based on backup (export) and restore (import) of your settings, so make sure you export your setup before you uninstall the previous version. After you've installed the new version you'll get some trouble importing again: "An XML DOM document object [...] could not be imported because its based on a newer build".

After some creative xml-file hacking we managed to get the import working. We upgraded the xml elements fpc4:Build and fpc4:Version to reflect the new version number 7.0.7509.100. That didn't do the trick, so the next step was to also alter the fpc4:IsaXmlVersion from 6.2 to 7.0. After that change the backup restored successfully.

After the import all our SSL based services seemed to work fine, but the regular http services didn't.

First hunch was to set up a log filter to see what went through the TMG server. A curious new behaviour from the prior beta to Beta 3 is that we used to be able to filter logs based on the Destination Host Name property. In Beta 3 it seems like this post has gone into effect with this field beeing empty.

After a lot of troubleshooting the problem was so elementary that it's almost embarrassing. The Beta 3 installer for Forefront TMG actually installs IIS7 and sets up an active default website on port 80, thus blocking all your traffic. You'll see indications of this in your eventlog with the message "The Web Proxy filter failed to bind its socket to port 80". I.o.w. run inetmgr and stop the damn thing to get your HTTP traffic back online.


Setting up the Lenovo Telenor Broadband Connection on Windows 7

Tue, 30 Jun 2009 15:36:00 GMT

I'm on Flesland right now and decided to get the free trial for the Telenor Turbo 3G for Lenovo a go. After applying here Telenor will instruct you to use Thinkvantage Access Connections to get online but this won't work with Windows 7 (or it might be the 64x version).

However all you need to do is to set up a new dial up connection in windows. Use *99# as phone number and the telephone number associated with the SIM card (screenshot) for as username and password. Connect and you're ready and blogging from the airport:)

Bandwidth seems nice so far..

UPDATE: I got the thing working the first time, but after returning home the connection didn't seem to work anymore. I kept getting an error message from the dial-up connection saying Error 734: The PPP Link Control Protocol Terminated.  I wasn't able to get any useful support from Telenor on this, and a lot of googling led me to reinstall the drivers and trying every possible PPP setting. None of this helped. Finally I realized that the Mobile Broadband Connect program (the one used for fetching the IMEI number etc) did some fancy initialization of the Broadband card. Tried to start that program and then connect, but that made the PPP connection fail due to the modem beeing in use. Now I closed the Mobile Broadband Connect app and reconnected.

So; Before connecting with the dialup connection you need to run the Mobile Broadband Connection software once. 

401 errors when accessing Sharepoint or IIS locally from Windows 2008 Server

Thu, 18 Jun 2009 18:02:00 GMT

Phui.. after months of problems logging into I finally got some help and I'm back in:)

Most experienced web developers and IT pros have encountered the good ole' DisableLoopbackCheck problem when accessing websites from the local machine (when they work when accessing them externally). Today I had to take an extra spin around the block when setting up a Sharepoint site on a Windows 2008 server with IIS 7 with host headers.

From my experience with Windows 2003 the only thing you needed to do was to create the DisableLoopbackCheck registry key, but with Windows 2008 server I also had to add the actual host header urls into another registry key. Put simply: with Windows 2003 you could get away with only one of the resolutions described in this kb article, and now you'll need to do both:)

  • Method 1: (recommended): Create the Local Security Authority host names that can be referenced in an NTLM authentication request
  • Method 2: Disable the authentication loopback check


"Operation could destabilize the runtime" error with ASP.NET Medium Trust level in Cassini on Vista

Thu, 07 May 2009 15:48:00 GMT

Just because this apparently is not noted anywhere within googles reach I wanted to make a note of this for the potentially frustrated:

If you're trying to run an ASP.NET app under medium trust on Vista with UAC enabled you'll probably see this exception:

System.Security.VerificationException: Operation could destabilize the runtime.

Steps to reproduce:

Create blank ASP.NET web application project. Clear web.config of anything but "". Do "View in Browser" on Default.aspx.

I have not been able to reproduce this on XP machines or Vista machines running with UAC disabled.

The error does not occur if you load the same website in IIS. Disabling UAC most likely also solves the problem with Cassini (still not verified).

Reporting Services does not display Hyperlink for Placeholder with Go to URL Action

Thu, 26 Mar 2009 20:27:00 GMT

Got really puzzled about this thing. Fortunately Christian Norbakk had the explanation of the problem:

When using Reporting Services in Sharepoint Integrated mode a Placeholder with Go to URL action will not render as a hyperlink for VALID internal links. It will, however, work for external links and for INVALID internal links. Now if that's not a but I don't know anything anymore:-)

Notice that the links work in Visual Studio Preview mode for the report. It's only after you deploy the report that all valid internal links are stripped.

Christian also told me that Øystein Garshol had managed to work around the quirk by applying a tiny javascript wrapper around the valid internal link which seemed to trick ReportingServices out of eliminating the link. That will be my next attempt too.

Nag me in comments if I forget to update this post with how it went..

Review of the List Web Part for Microsoft Dynamics CRM 4.0

Fri, 09 Jan 2009 17:56:00 GMT

Javista recently announced the release of the Sharepoint 2007 List Web Part for Microsoft Dynamics CRM 4.0. By coincidence one of Puzzlepart services customers needed some connections between MOSS and CRM 4.0 so I decided to take the new webpart for a test run. Read on for screenshots and a feature run-down.For those of you who tried the last webpart for CRM 3.0, this is not really a big step forward. First of all it's kind of hard to get the impression of what's in the package without actually downloading and installing. The documentation in the installer package is a good read, and you should actually read the whole thing. If you don't want to pull down the msi in order to read this you can grab it here.The functionality of the webpart is much like last time. You'll get a good impression of what can be done by checking out the configuration options in the toolpart: After providing proper credentials you're allowed to select entity and view for display in the webpart. You can show all columns or just a single one. The "Look and Feel" option is not too exciting. The "Current Page" option (screenshot) removes the possibility to arrange columns (width etc) and it doesn't look all that much like current page, so it's just a lesser option than the "Microsoft Dynamics 4.0" (screenshot) Look and Feel.The security is really easy if you are running CRM and Sharepoint on the same box, but since no one really does that in production you need to have your kerberos settings in shape. The documentation talks about this, but it's a bit weak. Check out Spence Harbars kerberos util and his upcoming whitepaper for details on this topic if you're not familiar with Kerberos. Spences util doesn't address CRM specifically at the moment but you can regard the relation from Sharepoint to CRM much in the same way as the Sharepoint to SQL Server relationship. Kerberos is really something you want to get right from the getgo.UPDATE: The Microsoft CRM Team Blog just posted a more detailed article on Trust for delegation and kerberos with the webpart. So what is the usefulness of this webpart?The value here lies in the possibility to display a predefined set of information from CRM and allow users to access CRM directly through the new button or doubleclicking on the rows to open crm in a new window. This really doesn't differ much from a rather plain IFrame integration, and you can ask why you have to deploy a 1,3mb component to do something like that. The real upside here comes with webpart connections. The webpart provides the data from its views through the IWebPartRow and IWebPartTable interfaces which can open up for some cool dashboards with filtered data from Sharepoint lists or your SQL Server Business intelligence stuff. The webpart will provide the data you see in the view through webpart connections.In the past I implemented a webpart with much of this featureset where the toolpart acted in the same way. The feature I added back then allowed for presetting props to select a single entity, i.e. an account with the account name "Joes Burgers". This allowed for configuring a webpart to show "Contacts for account with [name] like [Joes Burgers]". This opens for a lot more usage scenarios and I'd hoped that MSFT had included such functionality in this release. UPDATE2: The Microsoft CRM Team blog just published a guide on using this one webpart to build dashboards. Now all they need to do is add a feature to remove everything but the actual grids, and provide a detail item-level view.If anyone sees other smart usage areas for this webpart feel free to post them here![...]

Solution for Subversion 502 Bad Gateway problem when using Forefront as reverse proxy

Sun, 28 Dec 2008 14:43:00 GMT

Just as a slight note to self, but possibly useful for others running Subversion under Apache 2 on Windows (2008 in my case) behind Forefront TMG (nextgen ISA Server). The setup was working very good until I tried committing a move or a copy from my local machine. Typically things started going wrong when doing renames with ReSharper through VisualSVN in Visual Studio.You'll see errors like these:

"Server sent unexpected return value (502 Bad Gateway) in response to COPY"

Some research will quite quickly identify the problem as related to the use of a reverse proxy (Forefront in my case) and problems when using https externally and http internally. Christian Stocker suggests using a perl script to solve this problem, and Tor Håkon Haugen adds some more SSL config, but there is a much simpler solution available if your setup is much like mine. Just add this line to your httpd.conf:

RequestHeader edit Destination ^https http early

Running TypeMock with Gallio on build server or agent without local install

Tue, 16 Dec 2008 16:44:00 GMT

I tend to dislike having to do local installs of software on my Puzzlepart build servers (or agents) because this also means that developers will need to install something specific to be able to build the project. That's bad and unfortunately the norm for the projects I've downloaded and reviewed lately. To avoid this I've got all my common build dependencies in a shared repository in svn, and I use svn externals to add this to the root of my project trunks. This enables me to, over time, create tags on my buildtools repository and have older projects reference older build tools as I upgrade my stack. My scenario was to use the Gallio msbuild task to run my tests and also use the integrated TypeMock testrunner in this context because I need to do a lot of Sharepoint unit testing. First problem was that Gallio uses the 4.0 version of the runner. This was fixed by adding the regkey as described in my gallio-dev forum post. Second problem was that TypeMock.Integration.dll (which Gallio uses) depends on registry to locate the installdir for typemock. I want to be able to run this without having to run the TypeMock MSI so some registry keys needs to be manipulated. First I added most of the TypeMock 5.1 binaries to my buildtools svn repository (no, didn't bother to investigate which files I actually HAD to include - TypeMock Team: It would be nice to have this documented in order to create the smallest possible footprint for this scenario). Then I updated my build script to manipulate registry on the build machine. Yes, this is kinda bad and it requires running under local administrative rights, but it works. I also might note that I passed a feature request on to the TypeMock team to make the Typemock.Integration.dll look for a config file in the same dir as the Typemock.Integration.dll file to resolve TypeMock installdir, company and licensekey. There is some added complexity here to support the current Gallio distribution. In the future ignore that and just rely on the 5.0 regkey stuff as soon as gallio ships with the 5.0 version of the typemock.integration.dll. Here is the sample MsBuild task that does all the registry baddness using the RegistryRead and RegistryWrite tasks from the MsBuildTasks project on tigris: $(MSBuildProjectDirectory)\buildtools\TypeMock HKEY_LOCAL_MACHINE\SOFTWARE\TypeMock\TypeMock.NET HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\TypeMock\TypeMock.NET $(TypeMock40RegKey) G09F-APBQ-2AF9-2N2D-D7C1 PUZZLEPART

A few comments on the Microsoft Dynamics 5.0 sneak peek

Wed, 10 Dec 2008 10:07:00 GMT

Simon Hutson wrote about the new features of CRM 5.0 and was forced to remove it again. Fortunately Stefano Demiliani posted it too, and now the content is reblogged all over:)The release time for CRM 5.0 is indicated to be late 2009, or 2010. From the looks of it I would guess 2010 with the changes they're making, and with an indicated tighter relation to Sharepoint it's not unlikely that the release of these two products will go hand-in-hand. There are a few interesting things to notice between the lines of Stefanos feature list: The Ribbon UI arrives in HTML. This is not likely done solely by the CRM team. My guess (and hope) is that they're coordinating a web-based Ribbon UI for CRM and Sharepoint. A quite bold move given the mixed feedback on the Ribbon UI in Office. Nevertheless, this will be the Microsoft businessproduct signature moving ahead. Expect to see an enhanced experience of the ribbon for Silverlight enabled browsers.Cleaning up navigation. (Single page forms) Navigating CRM 4.0 was no joy. Too many windows. My best experience in using it was actually Firefox with IE Tab because that resulted in sensible tabbing for CRM with no tweaking. Now they've added a good old-fashioned familiar leftnav for clicking around in the subtree of panes. I just hope they make permlinking easier this time (4.0 makes it very hard to permlink to something like an accounts contacts).More options for customization. Stuff like Team-owned entities is really a double-edged sword. The nice thing is that entities only required for some special team will only appear in that scope. On the other hand this implies that customization descisions can be made on a team basis making overall governance of the system very hard, and (in most cases) lead to CRM spaghetti after a while (consultants: behave:)). A more flexible form layout engine also opens for easier customization. Here I would also like to see a SDK documented way of creating custom webforms with ASP.NET in an easier way than ISV integrating. In the lifespan of CRM 5.0 we should expect users to demand slightly cooler forms than a web-based formdesigner can deliver. And: Howcome Microsoft can't create ONE web form designer? Currently there's one in InfoPath Forms Services, WSS and now in CRM. With the introduction of drag'n'drop form editing in the CRM 5.0 Web UI I would definately say that the CRM designer is (from v5.0) the more attractive one.Taking the multiple forms engine problem further we'll see even more duplication with the new feature for Filtered Lookups. Compare this to KWizComs product Cascading Lists Plus. It's all about filtering lists; make it native in some way and share between the apps. More sharepoint integration. They're adding native document management within CRM using WSS. Finally.  Development & Deployment. The indicated new stuff for Solution Management in CRM 5.0 bares a lot of resemblence to the current Sharepoint solution management. Creating a namespace strategy for ISVs with "publishers" is a good idea (that DotNetNuke had in 2003), and solution dependencies is a useful feature for WSS 3.0. I'm hoping we'll see a complete convergence of deployment models between CRM and Sharepoint here, because we really don't need two. Sharepoint should get simpler and tighter and CRM should get more structure. Managing solution deployment to webfarms is one of the things CRM needs to address better. Also I'd like to see a lot less complicated procedure for deploying CRM plugins (come on guys; this is hell right now).That's my 2 cents on the late[...]