By now alot of you will be familiar with Configurations right? I am using XML configuration files extensively in my current project - they're a method of affecting the way your package executes - the most common use is to store connection strings for connection managers.
I have built my packages in such a way that different packages can use the same configuration file. For example I have a "Master" configuration file that stores information that all of my packages will need (e.g. connection strings for my log files, warehouse database and metadata database). Our project makes use of many source systems so I also have a configuration file for each source system as well - that way every package that accesses a certain source system can use the appropriate configuration file. Reuse is good I'm sure you agree!! [Its worth saying at this point that you need uniformity in your naming of connection managers - naming conventions obviously help here!!]
The next step I have implemented after this is to use indirect configurations. Put simply this is where the location of each configuration file is stored in an environment variable rather than being hardcoded into the package. This is a great model because it makes the use of configurations incredibly easy. Instead of having to define the configuration file for each package and employ strict file locations that become fixed I simply have to pick which configuration I use from a drop-down list containing my environment variables and its flexible enough that if I need to change the location of the configuration files I don't need to change the hardcoding in each package (of which I have many) - I just change the environment variable.
Is anyone else using indirect configurations? What do you think of them?
One other thing - don't forget the gotcha with indirect configurations!
-Jamie
UPDATE 14th November 2005:
I am working on a client site where I don't have privelages with my development account to add environment variables. I do have a different account with which I DO have permissions but I didn't know how to launch "System Properties" from the command-line - which would have enabled me to launch it using the runas command. My fellow boffins at Conchango helped me out here and informed me that the command I needed was:
runas /u:"<user-account>" "control.exe sysdm.cpl"
And courtesy of my colleague Lee Irvine, here's a link alot more useful commands like these: http://www.ericphelps.com/batch/rundll/