A recent update based on KB3178570 made it impossible to change the project contract after project transactions were made. This was done to prevent a problem in a specific scenario. However, this also caused a regression in functionality.
All information from the project contract is stored in the project transactions, including the funding source. To that end changing the project contract on a running project should be possible. This allows users to change the customer (and other commercial details) of a running project for all new transactions. In the meanwhile the existing transactions can be invoiced based on the old project contract.
This functionality is even more needed since a funding source cannot be change while project transactions exist (which is good) and working with multiple funding sources is not allowed when working with item requirement and/or project salesorders.