At Qdabra Software, we do a lot of consulting projects involving InfoPath. That's our bread and butter, so to speak. We've been toasting InfoPath solutions now for over 3 years, and many years before that as employees on the InfoPath product team at Microsoft (Greg, Shiraz, and Patrick worked on the 25 out-of-box solutions back in 2001).
Our customers have also helped us understand the most common coding customizations. By “coding customization” I am referring to business logic added to an InfoPath form to support features that don't exist in the out-of-box product. InfoPath 2007 supports coding in .NET (C#/VB.NET) and InfoPath 2003 supports .NET and script (JavaScript or VBScript). Here's a list of some of the most common feature requests requiring code:
Workflow – Set status, assign to next user, and send email comments and notifications
Revision Tracking – Track of edits to the form and enable comment history.
Forms Dashboard – Quickly view large numbers of forms with sorting, grouping, and filtering. Instant open and close of forms for rapid data entry and review. SharePoint and other dashboards require complex customization to handle thousands of forms.
Advanced Search – Free text search of form data across all forms.
Active Directory integration – Automatically validate username and fill in name and user details.
My forms – Filter forms to those assigned to the current user.
Bulk Editing – Edit data in multiple forms simultaneously.
Notifications – Alert user when a business process involving a form is overdue.
Metadata and Taxonomy Tagging – Create a category taxonomy for forms to organize them for browsing, reporting, pivoting.
Multi-Language Forms – Labels, guidance text, and contextual help in user's native language.
Augment Existing Forms – Forms start out simple, but adding these advanced features to existing forms is difficult.
The amount of code required to implement all of these features easily exceeds 1000 lines. That's a lot of code to maintain in one electronic form. Custom code is the bane of IT for a good reason - it costs money to maintain. We started thinking it would be a good idea to build a sample form that included all of these features in one reusable assembly. We have done these features so many times that we have developed a stable library of code. Why not just make it available to people?
The big question was could we create a sample that was generic enough to be useful for all forms and could we create a way to upgrade forms that have already been written by injecting them into the sample?
We made some key design decisions:
· Reduce time to create professional forms that work well from day one.
· Improve processes by empowering simple forms with these features.
· Lower maintenance costs since no custom code in your form means less bugs.
· Search, open, and modify thousands of forms quickly.
· Create pivot views of your data without complex relational database design.
· Support multiple languages so that your staff worldwide better understands forms.
· Avoid delays with notifications to reduce latency in workflow.
After two months of development, we now have a sample form template (we're calling it qForm Application Template) that provides all of the features above. That's right. You can upgrade you existing InfoPath form to add all of the features listed above. The upgrade tool is automatic but it doesn't guarantee a perfect upgrade. For existing forms that have code or for forms with many views, you will need to perform some steps after upgrade.