Collection of custom integrations I made with LeanIX. Code execution is scheduled using Azure Automation, see azure-automation-jobs folder for the procedural logic invoking any of the modules here.
Advanced Python library for integration with LeanIX, because as an architect you demand flexibility. This module serves as base for integrations provided below. See leanix/leanix.py
Purpose:
- Easy interoperability between Python and the LeanIX graphQL API - without having to code lots of GraphQL yourself.
Features:
- Create/update/archive factsheets
- Adding tags
- Create contracts (if you have the Contract customization enabled)
- Facilitates re-authentication/retry when needed
- Search in factsheets
- Creating relations between factsheets, dynamically
- Management of Resources to factsheets
- Create metrics/schema's
- Get SaaS discovery intelligence (i.e. for Zscaler integration)
Purpose:
- Why integrate with ServiceNow or other CMDBs if you can generate parts of your metamodel based on what is instantiated/consumed on Azure?
Features:
- Integration with Azure Graph
- Integration with Azure Cost Management API
- Generates IT Component structure based on Resource Groups
TODO:
- Integration with GPT4o to auto-generate Modules to a given application
See: celonis/celonis.py and the following Python Runbooks: leanix-celonis-integration.py and leanix-celonis-bpmn-integration.py
Purpose:
- Loads all BPMN Processes from Celonis (formerly known as Symbio) into LeanIX for mapping.
- Link your Applications to your Processes, including BPMN diagrams - in the same way how SAP does this with Signavio integration - but then for Celonis/Symbio!
- Communicate to your Process Owners how IT is realizing their Processes.
How it works:
- Based on Celonis/Symbio v2 API loads process structure in memory
- Runs through this and copies each logical process as Business Context (process category) into LeanIX
- Adds BPMN diagram itself (as PNG and SVG) as Resource to each Process, including hyperlinks to Symbio.
- You can create a custom portal showing the BPMN diagrams.
Purpose:
- Load contracts from Coupa into LeanIX such that Architects/those responsible can receive notifications about when an opportunity arises to make a (commercial) transition in view of roadmap
How it works:
- Facilitates initial load, since standard Coupa API does not filter on custom-fields that contain granular commodity codes (as is common practice), approach taken is to pull all POs from a granular IT category
- Based on Suppliers found from all POs in the granular commodity category, all contracts are pulled pertaining to each supplier
- Sanitized Contracts are uploaded to LeanIX via GraphQL
Features:
- Rudimentary auto-detection for existing Applications and Providers in LeanIX metamodel during load
- Auto-detection of Amendment vs Contract factsheet sub-types
- Facilitates currency conversion for contracts in non-group currency (i.e. EUR)
- Downloads contracts zipfile from Coupa, unzips and uploads PDF as Resource to Contract
- Also does some hard-coded tenant-specific matching of i.e. hardware/telephony/statements of work and licenses (later is relevant)
Scheduling:
- Can be scheduled in Azure Automation, make sure to add required packages as wheel (.whl)
- Dependencies for runbook: gql, requests_toolbelt, tenacity
TODO:
- Update IT Components with Cost from contracts
Used resources:
- https://compass.coupa.com/en-us/products/product-documentation/integration-technical-documentation/the-coupa-core-api/resources/transactional-resources/contracts-api-(contracts)
- https://docs-eam.leanix.net/reference/example-queries-and-mutations
- https://exchangeratesapi.io/
Purpose:
- Lifecycle your websites, just like you would applications.
How it works:
- Integrates with Akamai Report API v2 to pull all websites
- Loads Metrics (hits and CDN effectiveness %) into LeanIX
Features:
- Grouping by Akamai CP code
- Show # hits, bandwidth and CDN offload % as a timeseries for decision making
Generated factsheets (note also past 90 day summary on main factsheet, for easy sorting in Inventory)

See leanix/leanix.py (discovery methods) and leanix-load-zscaler-metrics.py
Purpose
- To lifecycle your apps, you need to know the architect's vision, cost and usage. The latter is difficult to track, but no longer with this!
- Knowing how many users your apps utilize over time is a great way to support architecture decision making.
How it works:
- Utilize internal Zscaler discovery API to plot usage Metrics by application
Purpose:
- Send adaptivecard in Teams to update your team of a change made within LeanIX
Features:





