Metric Calculation Reference¶
This page documents the deterministic OpenEA Community 1.5.2 metric formulas implemented by AnalyticsService. It is the technical reference for interpreting persisted object metrics.
Persistence and recalculation¶
Metrics are stored in object_metrics with:
object_idmetric_typescoreband- JSON
explanation calculated_at
Relevant repository writes enqueue a deduplicated background recalculation job. The worker recalculates Data Quality first because the risk formulas can depend on it.
All numeric scores are rounded and bounded to 0–100.
Persisted bands¶
OpenEA 1.5.2 stores the following generic band with persisted metrics:
| Score | Persisted band |
|---|---|
| 0–24 | Low |
| 25–49 | Moderate |
| 50–74 | High |
| 75–100 | Critical |
For risk and impact metrics, higher values represent greater concern or reach. Data Quality is different: higher Data Quality is better, so use the score and component explanation rather than interpreting its generic persisted band as a risk label.
Common lookup values¶
Technical Fit risk¶
| Technical Fit | Risk value |
|---|---|
| Excellent | 0 |
| Good | 20 |
| Fair | 50 |
| Poor | 80 |
| Unknown or unrecognized | 40 |
Application lifecycle risk¶
| Lifecycle | Risk value |
|---|---|
| Proposed | 10 |
| Planned | 10 |
| Development | 15 |
| Active | 10 |
| Tolerated | 50 |
| Sunset | 80 |
| Retired | 100 |
| Unrecognized value | 40 |
Technology strategic-status risk¶
| Strategic Status | Risk value |
|---|---|
| Adopt | 0 |
| Strategic | 5 |
| Tolerate | 30 |
| Contain | 50 |
| Migrate | 75 |
| Retire | 100 |
| Missing value defaults to Tolerate | 30 |
Technology lifecycle risk¶
| Lifecycle | Risk value |
|---|---|
| Emerging | 0 |
| Current | 5 |
| Aging | 50 |
| End of Support | 100 |
| Retired | 100 |
| Unrecognized value | 30 |
Criticality multiplier¶
| Criticality | Multiplier |
|---|---|
| Low | 0.75 |
| Medium | 1.00 |
| High | 1.15 |
| Mission Critical | 1.30 |
Capability maturity risk¶
| Maturity | Risk value |
|---|---|
| Initial | 100 |
| Developing | 75 |
| Defined | 50 |
| Managed | 25 |
| Optimized | 0 |
| Missing/unrecognized | 50 |
Confidence score used by Data Quality¶
| Confidence | Quality value |
|---|---|
| Unknown | 20 |
| Low | 40 |
| Medium | 60 |
| High | 80 |
| Confirmed | 100 |
Review freshness¶
OpenEA first calculates a review-freshness risk:
- explicit Next Review Date in the past:
100 - Next Review Date within 30 days:
60 - Next Review Date within 31–90 days:
20 - Next Review Date more than 90 days away:
0 - no Next Review Date, but reviewed within 180 days:
20 - no Next Review Date, last reviewed 181–365 days ago:
60 - no Next Review Date, last reviewed more than 365 days ago:
100 - no completed review and no Next Review Date:
75
Data Quality converts this to a quality component as 100 - review freshness risk. Risk metrics use the risk value directly.
Vendor support horizon risk¶
For Technology Risk, Vendor Support End is converted to:
| Time until support end | Risk value |
|---|---|
| Date missing | 30 |
| Already expired | 100 |
| Less than 6 months | 85 |
| 6 to less than 12 months | 60 |
| 12 to less than 24 months | 30 |
| 24 to less than 36 months | 10 |
| 36 months or more | 0 |
Data Quality¶
Formula:
required fields 30%
+ recommended fields 15%
+ ownership 15%
+ relationship coverage 20%
+ review freshness 15%
+ source confidence 5%
Required fields come from the selected Object Type's schema definition.
Recommended fields in 1.5.2 are:
| Object type | Recommended fields |
|---|---|
| Application | Technical Fit, Business Fit, Strategic Fit, Hosting Model |
| Technology | Strategic Status, Vendor Support End, Vendor, Product |
| Business Capability | Maturity, Strategic Importance |
Other object types have no additional recommended-field list and therefore receive 100 for that component.
Ownership scores 100 when the object has an Owner organization, Owner role, or a recognized object-specific owner property (business_owner, technical_owner, service_owner, process_owner, data_owner, decision_owner, or owner). Otherwise it scores 0.
Expected relationship coverage is:
| Object type | Expected relationship keys |
|---|---|
| Application | supports, uses |
| Business Capability | supports |
| Business Process | supports, realizes |
| Data Object | system_of_record_for |
| Technology | none; coverage is 100 |
Coverage is the percentage of expected relationship keys present on active relationships connected to the object.
The metric explanation also records missing required/recommended fields plus Owner, Current review, and Expected relationships when those conditions reduce quality.
Technology Risk¶
Formula:
vendor lifecycle 30%
+ internal strategy 30%
+ support horizon 25%
+ review freshness 10%
+ data quality risk 5%
data quality risk = 100 - Data Quality score.
The explanation stores the current Lifecycle, Strategic Status, and Vendor Support End date.
Application Risk¶
Formula before criticality:
technology risk 30%
+ technical fit 20%
+ lifecycle risk 15%
+ dependency risk 15%
+ data quality risk 10%
+ review freshness 10%
The weighted result is multiplied by the Criticality multiplier and then bounded to 0–100.
Technology Risk is the highest persisted technology_risk among Technologies connected by an active outbound Application → uses → Technology relationship. If no such persisted metric exists, the technology-risk input defaults to 30.
Dependency risk counts active outbound depends_on relationships:
| Dependency count | Risk value |
|---|---|
| 0 | 0 |
| 1–2 | 25 |
| 3–5 | 50 |
| 6 or more | 75 |
The explanation stores Technical Fit, Lifecycle, dependency count, material Technology count, and criticality multiplier.
Capability Risk¶
Formula:
supporting application risk 40%
+ technology exposure 20%
+ application redundancy signal 10%
+ single point of failure 15%
+ capability maturity 10%
+ data quality risk 5%
Supporting applications are active Applications with an active outbound supports relationship to the Business Capability.
Supporting Application Risk uses the highest persisted Application Risk. If there are no supporting Applications, this input is 100. If supporting Applications exist but no persisted Application Risk is available, it defaults to 40.
Technology Exposure is the highest Technology Risk found through the supporting Applications' active uses relationships.
Application redundancy signal:
| Supporting applications | Signal |
|---|---|
| 0 | 100 |
| 1 | 0 |
| 2–3 | 30 |
| 4 or more | 60 |
Single Point of Failure is 100 only when exactly one supporting Application exists; otherwise it is 0.
These are deterministic signals for investigation. They do not prove duplication or mandate an additional Application.
Impact Severity¶
Impact Severity runs an unfiltered depth-3 Impact Analysis and calculates:
direct dependents 25%
+ critical dependents 25%
+ business reach 20%
+ dependency depth 15%
+ strategic importance 15%
Signals are calculated as follows:
- Direct dependents:
min(100, direct result count × 20) - Critical dependents:
min(100, High/Mission Critical result count × 25) - Business reach:
min(100, unique Business-domain result count × 20) - Dependency depth: depth 0 = 0, depth 1 = 25, depth 2 = 60, depth 3 = 100
- Strategic importance: 100 when
strategic_importanceis High/Critical/Mission Critical; otherwise 50 when object Criticality is High/Mission Critical; otherwise 20
Impact Severity is not a remediation score. It identifies architectural reach that may require stronger change coordination and analysis.
User-facing explanations¶
The View Metrics page renders the persisted formula, components, current inputs, missing/stale items, and deterministic remediation guidance. The UI links back to the Object, Edit form, Relationships, Lifecycle, and Impact Analysis where those are the relevant places to investigate or correct the repository state.