Sorry, missed the how.
We keep copies of every custom report, form, script, custom office customization, spreadsheet used for interfacing, Access database, 3rd party add-on, VI job (exported), etc, that we have built or installed and anything else they will share. We keep these in a customization folder under the clients product folder. We update all this every time we do an upgrade as we end up touching and verifying all of it. We also update as part of our annual system review which is included with most of our support / access plans.
We also have a permanent files folder for each client that contains copies of install codes, ROR requests, etc. We also have a spreadsheet for each client that documents the network environment. This documents all accounts we use to work on their system by domain or application. We also document every server used to deploy any application we support. This include server name, IP, OS version info, SQL version info, etc. Last, we document how we remotely access their network. I have attached an example copy of and environment survey workbook.