We currently have a ticket raised for this, but just wanted to get a general idea on how the greater public handle deployments across multiple environments.
We currently have: 3 separate Development Environments; System Integration; User Acceptance; and Production environments.
We are also running development using the Agile Methodologies, with deployment cycles every 2-3 weeks.
This means we need to package and deploy solutions from our various development environments (through MSBuild Scripts) to System Integration; UAT; and then Production quite often.
Our solutions follow a simple pattern: InfoPath Forms with SmartObjects integrated to allow all form data to be stored in SQL Server; SharePoint Content Types to handle the Forms within a Form Library; and K2 Processes that are launched from within the Form.
When deploying our solutions, we are:
- Changing our environment in the object browser to point to the new Environment;
- Refreshing the InfoPath Form to change the connection strings to point to the new Environment;
- Rebuilding the project;
- Creating a deployment package from VS 2010 to generate a MSBuild script;
- Running a batch file that runs the MSBuild script to deploy to the environment.
Unfortunately, this doesn't remap the SmartObject connection files in the InfoPath Forms properly, and there are some connection strings that continue to point to the development environment. It seems we are still having to: Publish the Form as Source File; run through the XML and XSF files to remap to the correct environment; Publish the XSF back over the top of the XSN file prior to deployment.
This process is long and tedious. We have a number of SmartObjects in each form, and a number of processes that we deploy. We are having to do this for each environment install, and then back again to get development up and running properly as well.
Is anyone else experiencing this headache, and if so, what are you doing as a work-around as this isn't really an option for us. We are potentially looking at removing SmartObject Integration from the Form itself and just handle it from the Workflow, but we are quite deep into our development and such a change in design would cost us dearly (missing our deadlines).