• I'll give it a try... though I am by no means an expert in SSIS.

    I believe that the easiest way to use relative paths is to wrap the path in a variable. Not ideal, as you will have to fill this in when you call the package, but it would work. However, I prefer to stored B and C in msdb and then develop A. Yes, it makes development a hassle, but it makes it simpler to make changes. I would also suggest adding some sort of a variable for the DB server instance so that you can call from production or dev, and pass this variable to any child packages. Or, as an alternative, you can code everything into a single SSIS package that calls instances of itself. I have done this with a dependency based data load that has more than 100 unique objects built from it, and while complicated it seems to work well.

    Anyone else, please feel free to correct me if I am leading him astray. He did ask for "best practices", and all I can offer is my practices. 😉