(This is a series of posts covering how to include a WinForm app inside a SharePoint 2007 application. For further info, pleasesee Posts Two, Three, and Four.All of the code can be downloaded in Post Two.)

Last year, I had the opportunity to build a solution that involved integrating a Windows Form application into a SharePoint 2007 (WSS version 3.0). In this post, I’ll layout our architecture thinking and in part two, I’ll describe the technical details.

Business Case

Our challenge was this: we needed an easy way for a small group of our users to upload documents, in batches. They also needed to quickly set the meta data values, as well as set security on individual files.

Using the out of the box uploads just didn’t fit. The single file upload allows set the meta data, but our users would be uploading dozens of files. The multiple upload would allow our users to upload batches of files, but it doesn’t allow them to set the meta data during upload. Also, neither upload method allows the users to set the permissions on the file.

Our Solution

We looked into building a web control of some kind, but ruled that out due to security complexities (if I remember correctly). Another option would have been using a technology like Silverlight (or Flash?), but our team didn’t have the skills necessary to build with these.

So, after looking at what was technically possible, and also what skills our team had, we settled on a Windows Form application. We also decided to deliver it to the clients via Click Once, so we would have the ability to easily update the application in the future.

Lessons Learned

After deploying our solution, we’ve learned a few lessons. First, you’ll need to have the .Net Framework installed on the client computers. We knew this, but we still ran into issues making sure our users had the proper framework version installed. Second, we had issues with authentication. Our issues were due to our testing domain being a separate Active Directory domain from the domain that our end users and their workstations were members of. (See my earlier post about Clearing Saved Passwords for the fix to our problem).

Our third issue was how we dealt with uploading files that were named the same. Our application would replace the existing file with the new file, which is the way we expected it to work. However, our users wanted to upload weekly reports, named the same as the previous week. We solved this by using folders within the document library to keep the sets of reports separate from previous weeks.

One last thing to consider before implementing a solution like this, is what browsers and platforms your users will be working from. We only needed to support IE and Windows, which works fine. However, if you need to support Firefox, there are add-ons that allow Click Once to work with Firefox. This is still a Windows only solution though. In order to support Macs, you’d have to focus on either browser techniques (AJAX?) or Silverlight/Flash.

Summary

Our users are happy with the Click Once app. It allowed them to move all of their content to our SharePoint site in under a couple hours, which they were thrilled with. We’re happy because we can easily deploy updates, our development time was small, and we met all of our business requirements.