When embedded in an LMS/CMS framework, we need to let the framework decide when a gradebook should be created, and we need to let the framework decide which gradebook to show. As a result, the GradebookService interface has a "createGradebook" method, and our presentation layer provides a way to specify the UID of the gradebook to be shown.
So who creates and manages the gradebook UID? The "createGradebook" service can make up its own and return it to the caller to keep track of. Or the caller could make up a UID that it guarantees to be unique for all gradebooks in the database, and pass it through to the "createGradebook" service. Either approach would support the required functionality.
We chose the first option, which makes it our responsibility to guarantee uniqueness of gradebooks within the local database. But if our integrators feel strongly that life would be easier if they specified a UID for us (and have us throw an exception if they were wrong), I'm certainly open to bribery.