How to add a document to the vault and copy all/most metadata from an existing document.

We have a use case where we have a document class with lots of required fields.  The document is for an agreement which has an expiration date.  When the document expires, they will need to put a new document into the vault but would like to copy over all of the metadata that they put in on the original doc as nothing has changed except the date or the cost.  So what would you suggest for adding a document to the vault but copying the metadata from another doc?