Мы сделали и проще и сложнее одновременно: сами требования хранятся как Issues в Redmine, соответственно, там создаются, правятся и обрабатываются. А в единый документ я их собираю прямиком из базы отдельным php-скриптиком. Его выдача в случае необходимости распечатывается, объявляется документом требований и отправляется заказчику.