Purpose, Scope, and Rationale
Purpose
Keeping an updated view of IT spending can be daunting. Working out how to structure your data, while designing and implementing a cost management model with aggregations, dataflows, and information gathering is a major undertaking. However, support is available through the Ardoq IT Cost Management (ITCM) use case, which comes preconfigured to provide a quick start-up and fast results. ITCM in Ardoq isn’t designed to replace financial tools but instead provides a cost lens to Enterprise Architecture.
But why undertake the journey of Cost Management? Below in “Why do IT Cost Management in Ardoq?” we cover the 5 clear-cut benefits for a company to dive into ITCM. This metamodel document describes the rationale for doing ITCM, sets the scope for the use case, and provides a deep understanding of how to apply and expand ITCM.
Scope
This use case documents and analyzes the current high-level cost of key capabilities, and the technology and organizational units that support them. It provides the means to answer 3 key questions:
What is the cost of key business and technical capabilities?
What is the cost of my application and server portfolio?
What is the cost of organizational units, including:
Cost directly associated with organizational units
Cost of application ownership
Cost of application consumption
A large part of IT and capability cost comes from people and value streams that deliver, implement, maintain, and change technology and capabilities. The costs associated with organizations - for example people - are now included in ITCM through the addition of cost directly related to organizational units and cost attributed from IT ownership and usage. The cost of processes are not covered in the scope of ITCM. In this version, we derive cost from servers, applications, and organizational units.
Rationale
The subject of IT Cost Management is vast. To narrow the scope of our IT Cost Management Guide while delivering the most value for the amount of work needed, we have made the following decisions:
Infrastructure Cost is Server Cost
Servers are part of the whole IT infrastructure, so why not include, for example, the cost of datacenters? In our experience, servers are assets with a direct and tangible cost derived directly from procurement of the hardware. Datacenter cost, for example, consists of ongoing rent, power, cooling, etc., and is more difficult to make concrete and accurate. If you have completed the IT Lifecycle Management use case guide, all your servers should already be in Ardoq, ready to be enriched with cost information. See Extending the Metamodel for a description of how to include datacenters in your metamodel.
Costs of Projects/Change Initiatives
The cost of a business capability and application are more than just running the underlying technology. People in the organization deliver the capabilities. They also develop and maintain the servers and applications through change initiatives and daily development and maintenance. Cost directly associated with organizational units is accounted for and aggregated in the cost of Business Capabilities. Ardoq acknowledges the need to account for the cost of change initiatives. This can be done with our Strategy to Execution Use Case series that describes change initiatives and how they connect to IT and the wider business strategy.
Why Not Technology Business Management (TBM)?
Technology Business Management (TBM) is a value-management framework [...]. Founded on transparency of costs, consumption, and performance[...] (https://www.tbmcouncil.org/learn-tbm/tbm-taxonomy/)
Ardoq is based on a practical subset that gives immediate insight into cost and how it’s related to business capabilities. It is possible to start with our model and then expand into something more comprehensive - like TBM - when the outcomes demand that level of detail. Ardoq covers much of the same ground as TBM, using Business and Technical Capabilities. You can find more information about TBM here: TBM Council
Why Do IT Cost Management in Ardoq?
ITCM in Ardoq gives you 5 clear benefits:
Optimize your IT spending - from a business and IT management perspective
Cost management has many perspectives depending on the user. Application owners might want clear insight into one or more applications and the cost attributed from the servers hosting the application. Business stakeholders might be keener to understand the cost of key business capabilities and if the spending is on par with the importance of the capability. CIOs responsible for IT budgets can easily locate major IT cost pools using technical capabilities.
2. Provide a clear view of the source of costs
Understanding these relationships can be the difference between success and failure in cost management. Ardoq’s flexible graph database presents all data - including cost - as a set of related and interlinked assets. Great emphasis is placed on the relationship between these assets. This allows you to understand dependencies, opportunities, and constraints better. In addition, Ardoq lets you aggregate from individual costs to organizational units, capabilities, and strategies relevant for decision-making.
3. Create a clear weighted overview of capability and technology costs
Full control over the financial impact of an application on one or more capabilities or organizational units can be the key to correctly accounting for IT spending. If your most expensive application helps realize more capabilities and organizational units, but one in particular more than others, Ardoq’s predefined IT Cost Management use case allows you to precisely allocate attributed cost.
4. Set the foundation for allocation, show, and chargeback
The IT Cost Management use case in Ardoq is designed to get you quickly started and provide value from the get-go. But what if the financial management of your company needs more advanced insights? The ITCM use case is designed to scale and grow as the maturity and demands expand for instance, if more advanced topics like budget allocations or showback are required. ITCM implements a simple version of showback to answer the question of what the cost of application consumption is. See an example of the showback report below.
5. Enable future use cases
The ITCM use case is designed to provide value on its own, while setting the foundation for development in adjacent areas where cost information is necessary. For example, Application Rationalization, Cloud Migration, Strategic Change Prioritization, Strategy to Execution, or other topics where cost/benefit analysis is pertinent.
Metamodel
Before we get into the metamodel, it is important to understand some core financial terms. Central to the cost model is the concept that the same cost properties can be added to any component type, be it an application, a business product, or a business capability. 2 of these properties are entered directly, while the cost model calculates the other 3. The metamodel is depicted in the figure below.
The basic cost properties are CAPEX and OPEX.
CAPEX represents a Capital Expenditure that results in the acquisition of an asset. It is typically a one-time expense. From an accounting point of view, the value of that asset must then be depreciated and tax deducted over its lifetime.
OPEX represents an Operational Expenditure when the business buys a product or service on a pay-as-you-go basis. This ongoing cost is fully tax-deductible in the year it is incurred.
How organizations categorize expenses as CAPEX and OPEX can vary. Ardoq’s model is flexible enough to support your organization’s way of working. You can easily configure the model to match your categorizations and still benefit from the queries, aggregations, and reports we provide.
A simple example might be the cost of an individual server. The cost of the server hardware could be categorized as CAPEX, since the organization owns an asset with a value that will depreciate with time. However, the cost of the power required to run the server would be considered OPEX, as it is an ongoing expense.
Component Types
The base model for the ITCM use case utilizes these 5 component types:
Server
Application
Organizational Unit
Business Capability
Technical Capability
CAPEX and OPEX are captured on the Server, Application, and Organizational Unit components. This input is used to calculate the aggregated cost values. Since the model rests on the same 5 field properties, these will be explained in more detail after the key component types are introduced.
The Component Types can be roughly divided into 2 types - a cost bearing Component Type and a cost attributing Component Type. Component Types can also be both. As an example, Servers bears only its own cost. Applications bears both its own cost and attributes cost from Servers, and Capabilities only attributes cost. Organizational Units, such as Applications, bears its own cost, and attributes cost from Applications.
Cost Bearing Component Type | Cost Attributing Component Type |
Servers | Applications |
Applications | Capabilities |
Organizational Units | Organizational Units |
Server
Ardoq defines a server as a computer without a screen. As Ardoq sees it, a server is a unit of computing hardware dedicated to managing specific resources (RAM, CPU, Storage, etc.). Servers may be specialized by function, depending on their hardware configuration or the software products deployed onto them. If information about servers is not available in your instance of Ardoq, please perform the Information Technology Lifecycle Management (ITLM) Use Case.
Ardoq’s concept of server component type can be compared to the ArchiMate concept of a Device.
If you have followed the ITLM use case, then servers in Ardoq can be either physical, virtual, or containers. In this use case, CAPEX and OPEX can be assigned to both types of servers. Beware that if the cost of a virtual server is accounted for in the cost of the physical server hosting it, adding cost to the virtual server will apply this specific cost twice. This caveat will be mended in future releases of the ITCM use case.
Application
As covered in greater detail in the Application Lifecycle Management Metamodel article, an application is the configuration of lower-level software or technology to provide specific business capability or technology capability, perform a defined task, or analyze specific information.
An application is the component that binds together the technology and business domains and is an essential part of ITCM.
Organizational Unit
Organizational modeling documents the relationship between the external and internal organizations and an organization’s structure. Organizational Units decompose into business units, departments, sub-organizations, committees, teams, and groups to enable the creation of organizational hierarchies. Organizational modeling is covered in greater detail in the Organizational Modeling Metamodel article.
Understanding Organizational Cost
Organizational cost has 3 parts:
Direct cost which is incurred at the organizational units
Cost of ownership of applications
Cost of application consumption
Cost of ownership is considered structural in this Use Case in the sense that the cost fields described in Dataflow, Calculations, and Fields assign attributed cost to the Organizational Units that have the Owns reference to the application. Cost of consumption follows the Consumes reference from organizational units to applications, and can be extracted from a predefined showback report in Ardoq.
Business Capability
A business capability describes what a business does without explaining how. More than one department can be involved in delivering a business capability. Internal organizational structure changes more often than what a business does, so the best practice is to not replicate a business’ organizational structure.
In ITCM, the business capabilities show the cost of running a business. In this version of ITCM, the business capability accounts for cost attributed from applications, the cost inherited from servers to applications, and the direct cost of organizational units. If your business capabilities are not documented in Ardoq yet, please see Business Capability Modeling: Best Practice Module Guide and Business Capability Realization Guide.
Understanding Business Capability Cost
A business capability is a logical construct that only reflects cost that is “attributed,” producing what the business capability delivers. In this version of ITCM, direct organizational cost, application cost, and by inheritance, server cost is included in the calculation of business capability cost. A more in-depth explanation of which mechanisms guide the cost calculations is provided in Dataflow, Calculations, and Fields below.
Technical Capability
Technical capabilities provide a helpful abstraction from specific technical systems to generic functionality provided by applications. In the context of ITCM, technical capabilities describe the IT cost from an IT-management perspective.
The image below exemplifies the applications and underlying servers supporting the technical capability “Integration”. This example shows the applications used to supply the organization's IT systems, with data from other sources. To define technical capabilities in your organization, please see the TCM guide.
Division of Cost Between Business and Technical Capabilities
Business capabilities and technical capabilities are inherently different in that they represent different perspectives on cost:
Business capabilities portray the cost of running the business
Technical capabilities portray the cost of running IT
Therefore the application and organizational costs are aggregated in their full to both capability types.
Dataflow, Calculations, and Fields
Dataflow
The fields used to calculate cost can be applied to all component types in the model. Consequently, ITCM can be extended to more component types than the ones suggested in this metamodel (see Extending the metamodel). The application of these fields to multiple component types is illustrated in the figure below.
One of the goals of ITCM is to aggregate CAPEX and OPEX up from low-level components to components that represent business areas, such as business capabilities. Some cost fields must also exist on business area component types to allow that aggregation. You will not set direct values on the cost fields in these component types, but a value will be calculated by aggregating the values from the lower-level components they are connected to. For instance, the application and server components.
Notice that the cost flow from Organizational Unit to Capability only includes Total Direct Cost as further described in Cyclical Cost Flow.
The aggregation of cost is controlled by four things:
The references between
Business and Technical Capability and Application
Organizational Unit and Application
Application and Server component
Business and Technical Capability and Organizational Unit (see References)
The fields “Cost Type Attribution” on references
“Cost Attribution Percentage” on references
Hierarchical roll-up. As the only cost metric, Total Cost is rolled up through the parent-child hierarchies
The references are important in the aggregation of cost, which is why it’s crucial to be mindful of creating the right connections. As described further under Extending the metamodel, the type of references is irrelevant. The direction is important for the cost aggregation to work. Below is an example of the references between the 5 component types:
Calculations
For the calculations to work, both the Cost Type Attribution and the Cost Attribution Percentage fields have to be present on all the references between the Component Types where cost aggregations are wanted. The field Cost Type Attribution needs to have both choices deselected for full cost aggregation. If either choice in Cost Type Attribution is selected that cost type, for example, Direct Cost, will be excluded from the cost aggregation flow.
The aggregation of cost follows a simple yet powerful algorithm, which is split into two steps:
If at least one of the references between the target and source component (ex Application and Server) has a value above 0 (zero) in the “Cost Attribution Percentage” field. The algorithm divides exactly according to the percentage. For instance:
Cost of a Server is 15,000 and it supports two Applications using an even split of cost (7,500 to each Application)
Application A has CAPEX and OPEX totaling 22,000.
Total Cost of Application A is therefore 29,500
Application A Realized only one Business Capability that gets attributed 100% of the Applications cost.
Application B has CAPEX and OPEX totaling 26,000
Total Cost of Application B is therefore 33,500
Application B Realizes two Business Capabilities with:
25% of cost attributed to Capability A1.1 (Cost Attribution Percentage = 25).
75% of cost attributed to Capability A1.2 (Cost Attribution Percentage = 75)
Capability A1.1 attributes
29,500 from Application A
8,375 from Application B (25% of 33,500)
Capability A1.2
Gets attributed 25,125 (75% of 33,500)
Gets attributed 40,000 from the Organizational Units Total Direct Cost
The parent Capability A1 receives the roll-up cost from Capability A1.1 and A1.2
If the “Cost Attribution Percentage” field is empty or 0 (zero) on all references, then the cost is evenly distributed over the number of references.
The image below visualizes the above example of Ardoq’s cost model.
Fields on the Components
Field | Type | Description | Definition |
CAPEX | Number (input) | Capital Expenditure |
|
OPEX | Number (input) | Operational Expenditure |
|
Budget CAPEX | Number (input) | Budgeted Capital Expenditure |
|
Budget OPEX | Number (input) | Budgeted Operational Expenditure |
|
Total Budgeted Cost | CalculatedNumber | Optional field to calculate budgeted total cost. Placed on Organizational Unit, but can be added to any Component Type. | The sum of Budget CAPEX + Budget OPEX |
Calculated Number | The cost is directly tied to the specific component. Ex. license, support & maintenance etc. | The sum of CAPEX+OPEX | |
Calculated Number | The cost inherited from a source component. Ex an Applications cost + the server costs for running on the application. | Total Direct + Attributed Cost from referenced Components. | |
Calculated Number | Shows the Total Cost of the Component, and the Components children. | Total Direct + Total Attributed Cost from the Component in question and all its children. | |
Calculated text | Data Quality field showing the total percent of the cost being attributed from the specific component. Calculated for each component type where Cost Attribution Percentage is filled out. Further explanation. | In the image above, if the field Cost Attribution Percentage on Application B was 35% for Capability A1.1 and 75% for Capability A1.2 the result in this field located on Application B would be:
Business Capability: 110% | |
Calculated checkbox | Data Quality field showing if the component’s cost is over-allocated. | Take the above example: this checkbox would be set to ‘checked’ because Technical Capability is over-allocated. |
References
ITCM is implemented using 4 kinds of references:
Reference | Description |
Is Supported By | Represents the operation of one component is a requirement or precondition for the operation of another.
Ex: an Application Is Supported By a Server |
Is Realized By | Represents that a component implements the logical requirements, behaviors, or characteristics defined by another component.
Ex: a Business Capability Is Realized By an Application |
Owns | Represents that a component has overall responsibility for another component.
Ex: an Organizational Unit Owns an Application |
Consumes (optional) | Represents that a component consumes or potentially consumes or gains value from another component.
Ex: an Organizational Unit Consumes an Application |
Fields on the References
Field | Type | Description | Definition |
Cost Type Attribution | Multi-Select List | Decides which type of cost of the source component should be excluded in the cost aggregation. |
|
Cost Attribution Percentage | Number (input) | Allows specifying a percentage of a source components cost that will be aggregated to target components attributed cost. |
|
Cyclical Cost Flow
The implementation of Cost Type Attribution marks a difference from the first version of the ITCM Use Case. The field accompanies an updated version of the cost flow logic to support cyclical cost flow, like the flow portrayed in the illustration below. The cost of Applications flows to Business Capability twice: directly and through the Organizational Unit.
To prevent this side effect of cyclical cost flow, we’ve implemented a cost type flow selector, where you can, as depicted below, adjust which cost type should be included in the cost flow.
In the picture above, only direct cost is attributed from Organizational Units to Capabilities. Thus we avoid the Application cost attributed to the Organizational Unit interfering with the cost of the Business Capability.
Quality of the Use Case
The quality and usefulness of the use cases are directly proportional to the quality and detail of the data you put into Ardoq. To achieve a high-quality output, ensure a high-quality input. Be mindful of weighted allocation (Cost Attribution Percentage), where the attribution of costs is unevenly distributed.
Practical Implementation in Ardoq
If previous use cases are complete, the ITCM does not require additional component types or references. Prerequisite use cases are: Information Technology Lifecycle Management, Application Lifecycle Management, Business Capability Realization Guide, and the Technical Capability Modeling side quest. What the ITCM use case delivers is a structure and calculations to enable uniform and flexible cost aggregation, no matter which component types and references are used. The Gremlin code for the previously described calculated fields can be found in the Gremlin code section in this document.
Workspaces
Ardoq recommends the simplest model to do the job. The picture below illustrates the workspaces and their relations used to implement the ITCM bundle.
If You Have an Existing Dataset in Ardoq
You might have an existing dataset you’d like to fit the ITCM use case into. Due to Ardoq’s flexible model, you have many possible ways to develop the data set, with so many possible outcomes that Ardoq could not pre-create a use case implementation plan that’ll work in all cases. However, it is possible to create the fields of the ITCM use case in your own components and references. Remember to adjust the Gremlin code (see the Gremlin code section) to match the specific model. For help adjusting the Gremlin code please contact your dedicated Customer Success Manager.
To make implementation easier, be mindful of the following:
The field Cost Type Attribution is located on all the references where cost aggregation is relevant This field is empty by default enabling cost flow between the component types in question
Make sure to consider potential cyclical cost flow, and adjust the Cost Type Attribution field accordingly
Extending the Metamodel
Ardoq’s flexible model and the approach to cost aggregation implemented in this use case makes it possible to expand the model if you need to add component types.
Using datacenters as an example, if you already have the information in your Ardoq dataset and want to include the cost of extended infrastructure, the only missing piece is to associate the fields with the datacenter component type. Then, ensure that the reference is from Server to the datacenter components and associate the Cost Type Attribution and Cost Attribution Percentage fields with the reference type. The cost will then aggregate automatically. Please read the article Seven Principles for Creating a Great Enterprise Architecture Metamodel for guidance on what to be mindful of when extending your metamodel.
Gremlin Code
This section contains the Gremlin Code used to implement the Calculated Fields of the ITCM use case.
Total Attributed Cost
This contains the Gremlin Code that aggregates the underlying components cost to the target component Total Attributed Cost. The code checks the field Cost Type Attribution, and only aggregates the cost type that isn’t selected. The code also takes into account the specific weighting in Cost Attribution Percentage.
def referenceTypes = ['Is Realized By', 'Is Supported By', 'Owns']
def defaultFieldNames = ['total_attributed_cost', 'total_direct_cost']
def toAPIFieldName = {
if (it.get() == 'No Attributed Cost Flow') return 'total_attributed_cost';
if (it.get() == 'No Direct Cost Flow') return 'total_direct_cost';
return '';
}
def getCostTypeAttributionFieldNames = {
values('cost_type_attribution').
unfold().
map(toAPIFieldName).
fold().
map{
fieldNamesToExclude = it.get()
defaultFieldNames.findAll{ defaultFieldName ->
!fieldNamesToExclude.contains(defaultFieldName)
}
}
}
def hasCostTypeAttribution = {
getCostTypeAttributionFieldNames().unfold().count().is(gt(0))
}
g.V(ids).
project('id', 'name', 'value').
by(id).
by('name').
by(
union( // <-- This is new
coalesce(
outE(*referenceTypes).filter(hasCostTypeAttribution()).as('reference').
filter(hasCostTypeAttribution()).
map(
map(getCostTypeAttributionFieldNames()).unfold().as('fieldName').
project('percentage', 'totalCost').
by(
select('reference').
choose(
has('cost_attribution_percentage'),
values('cost_attribution_percentage'),
inV().
inE(*referenceTypes).as('otherReference').
project('fieldNamesOnOtherReference', 'fieldName').
by(getCostTypeAttributionFieldNames()).
by(select('fieldName')).
filter{ it.get().fieldNamesOnOtherReference.contains(it.get().fieldName) }.select('otherReference').outV().
where(eq('reference')).
by(label).
by(outV().label()).
count().
map{ 100 / it.get() }
)
).
by(
select('reference').
project('fieldName', 'component').
by(select('fieldName')).
by(inV()).
map{ it.get().component.property(it.get().fieldName).orElse(0) }
).
math('percentage * totalCost / 100').
sum()
).
sum(),
constant(0)
).map{ it.get().toInteger() }, // <-- The comma at the end here is new
__.in('ardoq_parent').values('total_attributed_cost', 'total_direct_cost').sum() // <-- This is new
).sum() // <-- This is new
)
Total Direct Cost
The Total Direct Cost Gremlin Code sums up the values of CAPEX and OPEX.
g.V(ids).
project('id', 'name', 'value').
by(id).
by('name').
by(project('capex','opex').
by(coalesce(values('capex'), constant(0))).
by(coalesce(values('opex'), constant(0))).
math('capex + opex'))
Total Cost
The Total Cost Gremlin Code sums up the value of Total Attributed Cost and Total Direct Cost of the current Component Type and all its children.
g.V(ids).
project('id', 'name', 'value').
by(id).
by('name').
by(values('total_direct_cost', 'total_attributed_cost').unfold().sum().map{ (it.get() as Double).round(0) })
Total Attribution Percentage
This Gremlin Code calculates the sum of a component's total Cost Attribution Percentages to other components. The cost allocation is divided into the target Component Type. For example, if an Application has specific weights on references to both Business and Technical Capabilities. Then the Gremlin Code will calculate the sum of Cost Attribution Percentages to Business and Technical Capabilities separately. A result could, for example, be “Technical Capability: 110%, Business Capability: 70%”
g.V(ids).
project('id', 'name', 'value').
by(id).
by('name').
by(
inE().has('cost_attribution_percentage').
group().
by(otherV().label()).
by(values('cost_attribution_percentage').sum()).
map{ it.get().keySet().collect{ key -> "${key}: ${it.get().get(key)}%" }.join(', ') })
Cost Attribution Percent Data Quality
This code checks if the sum of the Cost Attribution Percentage from one given component to another Component Type exceeds 100%. If it does, the checkbox named Cost Attribution Percent Data Quality is set to ‘checked’.
g.V(ids).
project('id', 'name', 'value').
by(id).
by('name').
by(
inE().has('cost_attribution_percentage').
group().
by(otherV().label()).
by(values('cost_attribution_percentage').sum()).
map{ it.get().values().any{percentage -> percentage > 100} })
Conclusion
Did this pique your interest? To access our pre-configured ITCM bundle, including all the fields, calculations, dashboards, presentations, surveys, and broadcasts, go to the best practice module and download the ITCM use case bundle. Now you’re ready to take on IT Cost Management in Ardoq.
Document versions
Date | Responsible | Rationale |
Mar 25, 2022 | Rasmus Valther Jensen | Published |
Jan 4, 2023 | Rasmus Valther Jensen | v2
|
Oct 10, 2024 | Leart Kollqaku | v2.0.1 - Corrected Cost Model visual, cost numbers, and scope paragraph. |
Dec 11, 2024 | Leart Kollqaku | v2.1.1 - Updated metamodel diagram. |