@CharlesTBetz, @IanClayton and the @ITSkeptic were just tweeting about the difference between the service catalog, requestable services and their instances. Since I would like to add some of my 2 cts to that and I am not satisfied to discuss complex data modeling issues using just 140 characters I decided to quickly write up this post.
For me there should be a strong separation between models or types and instances, even if a given instance of one type can be the model for another. For me the service catalog describes all services that are available to a customer, just as the skeptic says – these are not per se available to a user. Someone with money has to order them. If they order these, the services are instantiated as a service (level) agreement. I put the level in parentheses because right now that is not the focus of the discussion.
In addition to this, each service has a list of 0 to many request types. These are the things that a user (for which the organization has ordered the service) can request. So if a customer agrees to a service (level) agreement, the users associated with that customer (named Person in the image) may request the service1.
Each service level agreement (here identified by a ServiceInstance) also contains a list of these request types along with some more customer individual specifications like cost or service level2, called RequestTypeInstance. This is an entity that is both an instance and a model.
A user may then put up a service request (labled RequestInstance), which refers to all the RequestTypeInstances, so provides all the details needed for approving, executing and monitoring the request. Each request will contain multiple RequestTypes as in real life no one will put up with having an “Order” just containing one item at a time.
My idea of some of the needed entities for a Service Catalog
Next time you think about a simple thing like “Service Catalog”, “SLA” or “Service Request”, please think again. The standards are not helping a lot here as they confuse matters more by not being explicit enough in their definitions.
1 This may be more complex than it sounds as the individual request may require formal approval from the client as well, since each request type may incur cost, or other restrictions may apply, e.g. Licensing issues.
2 If the service level should be defined in the Service Catalog or in the list of Service Level Agreements is open to discussion. In my experience any provider with a larger list of customers will have individual service levels per customer, so putting these in the catalog is not useful. In contrast, providers that standardize more should put these in the catalog.