Hi @megatower66,
I just tried with the latest version of OpenZeppelin Upgrades Plugins for Truffle and was able to use the dry run functionality of Truffle, but only when I did a dry run for the deploy and the upgrade.
When I did an upgrade with a dry run when I hadn't done a dry run on the deploy it failed. I have created an issue for this: https://github.com/OpenZeppelin/openzeppelin-upgrades/issues/241
I would add a step before.
- Run unit tests on implementation contracts (v1 and v2 etc).
Run higher level tests on the upgradeable contracts (interact via the proxy).
See OpenZeppelin Upgrades: Step by Step Tutorial for Truffle for an example.
Truffle migrations will handle this for you, if you use a unique number in order, such as:
1_initial_migration.js
2_deploy.js
3_upgrade.js
I would recommend after deployment to look at using a multi-sig to manage the upgrades.
See: https://docs.openzeppelin.com/learn/preparing-for-mainnet#set-admin