CSDM Relationship Question

Robert Campbell
Tera Guru

I question two of these.  Should they be reversed?

 

RobertCampbell_0-1691163645290.png

 

Doesn't a business application consume an application service?  I would also think that an application service would consume a SDLC component, not the other way around.

9 REPLIES 9

CMDB Whisperer
Mega Sage
Mega Sage

Depends on what you mean by "should".  🙂  

  • SDLC Component. - I agree that it is nonsensical to say that an SDLC Component "Contains" an Application Service.  It doesn't.  It can't.  It's nonsense.  However, the direction of that relationship is correct.  The reason it must be in this direction is that the SDLC Component is an optional connector between the Business Application and the Application Service, so it has to maintain the directionality of that relationship or else the Impacted Business Applications calculation won't work.  I have posted separately on this, and I believe that the descriptor of this relationship should change.  Options could include SDLC Component --> Deployed To --> Application Service.  Or something similar.
  • The screen shot above is actually incorrect for Business Application.  The correct relationship, based on what ServiceNow actually creates for you, is actually Business Application --> Consumes --> Application Service, Not "Consumed by".  I've also indicated in other posts that I don't think this Consumes/Consumed By relationship is very intuitive or meaningful here.  I think a Deployed To/As or Instantiated By relationship would be more appropriate and intuitive.  But I don't see that changing.

The opinions expressed here are the opinions of the author, and are not endorsed by ServiceNow or any other employer, company, or entity.

I thought the relationship and the direction was flip flopped for the business application to application service and I agree consumes may not be the right word but I understood that. I guess contains would be more appropriate as I see the business application containing a lot of services to be fully functional.

 

Are you saying... actually, after writing what I wrote and reading what you wrote, they are "using" contains.  Not sure why they then used consumed by incorrectly to represent consumes.  If SDLC is optional and it using the contains, maybe it's more of a typo than a misrepresentation because if you remove the optional SDLC it would read Business Application contains Application Service.

 

Did you leave feedback on https://docs.servicenow.com/bundle/rome-servicenow-platform/page/product/csdm-implementation/concept...  That's what I'm going to do and maybe they'll address it.

Not quite.  Typically the Application Service should be an instance of a specific Business Application.  If you want to define the various components (e.g. microservices) within a Business Application, that's where you would have multiple relationships between the business application and its SDLC Components, and separate relationships between each SDLC Component and its respective deployed Application Service entry points (for each Environment they are deployed in.  Breaking down a Business Application into its separate components should not be done using Business App --> App Service relationships.

 

Yes, Business Application "Consumed by" is a typo for "Consumes" (which in turn begs a separate design question), whereas SDLC Component "Contains" relationship is just a design question for CSDM. 

 

As for the typo itself, I can see now that you are referring to an older version of the Documentation page (Rome).  If you switch to San Diego or later version of the documentation you will see they already corrected the typo.  🙂 


The opinions expressed here are the opinions of the author, and are not endorsed by ServiceNow or any other employer, company, or entity.

I'd like to suggest a different relationship type for the Business Application to Application Service relationship:

 

Business Applications are developed, then packaged together with other Business Applications to create an executable for deployment to Application Stacks at one or more locations with a company. These locations might be development and testing environments within Internal IT, consumer facing production environments running in each retail store or environments that support manufacturing locations. Each needs its own running instance of the executable to support their Business Capabilities. In the CSDM Model, these running instances are Application Services. Each has an install status and operational status and a severity that is based on the severity of alerts arriving from monitoring tools. Service Maps are used to help visualize the dependencies between components and determine the root cause when incidents are created.

 

In my experience working with complex "Home Grown" applications, each Business Application is created and managed separately in source code libraries.  These applications are packaged with other related applications to create an executable(Application Service) that goes through functional and performance testing.  After testing is complete, a Deployment Manager coordinates the deployment of these Applications Services to each environment or location within the company where it is used.

 

Some customers assume that each Business Application always has 1:1 relationship to an Application Service where it was deployed. This may be the case if you have purchased a vendor application that comes packaged as a single executable that can't be broken down into separate applications. 

 

More complex vendor applications may have separately licensed components, each with their own installation binaries, install processes, databases, and installation directories. I would model each licensed component as a Business Application because over time, each will have it's own version history that is independent of the others. If it's a licensed Application, it needs to be managed as its own Business Application in your APM Portfolio.

 

At each location where the complex vendor App is deployed, the components installed may be uniquely suited to the needs of that location. For example the HR module might only be installed where there are  HR teams that hire while the Manufacturing related components may only be deployed to manufacturing sites.

 

The resulting executable is deployed to one or more locations where an application stack has been provisioned.

The executable that is running on each of these application stacks is operational and is usually monitored.

 

I've reported the new

Business Application "Consumes" Application Service

CSDM relationship as a defect that needs to be changed to reflect the true relationship between Business Applications and Application Services. I would prefer the relationship be

Business Application "Deployed to:: Used by" Application Service

or 

Application Service "Uses:: Used by" Business Application

 

Either of these are better than the current relationship which confuses all my clients.