---
id: post/jpearson-blog/1419
type: post
title: Another Look at App Integration in Business Central – Part 2
summary: This post demonstrates how to integrate two independent Business Central apps without creating a direct dependency between them by using interfaces and a shared app integration layer. The approach allows apps to register and discover each other's functionality at runtime using enums, dictionaries, and version management.
tier: community
language: en
tags:
  - app integration
  - interfaces
  - dependency management
  - architecture
  - design patterns
  - runtime registration
system: integration
review:
  state: reviewed
  by: opus
  at: "2026-10-08T02:01:05.452Z"
  flags: []
generated:
  at: "2026-10-08T01:26:53.141Z"
  pipeline: 0.2.0
  prompts:
    extract-post: 1
  input_hash: 0613460cb81fce9f42085fcd53603895ecc01032ddf661d87f4af2c2535e4f33
evidence:
  - kind: blog
    url: https://jpearson.blog/2025/05/07/another-look-at-app-integration-in-business-central-part-2/
    title: Another Look at App Integration in Business Central – Part 2
    date: "2025-05-07"
    commit: null
    t: null
    quote: null
  - kind: blog
    url: https://jpearson.blog/2025/05/07/another-look-at-app-integration-in-business-central-part-2/
    title: Another Look at App Integration in Business Central – Part 2
    date: "2025-05-07"
    commit: null
    t: null
    quote: The challenge that we are trying to solve is to allow Business Central apps to call each other's functionality without creating a dependency.
  - kind: blog
    url: https://jpearson.blog/2025/05/07/another-look-at-app-integration-in-business-central-part-2/
    title: Another Look at App Integration in Business Central – Part 2
    date: "2025-05-07"
    commit: null
    t: null
    quote: Each app should have a clear set of responsibilities which does not overlap with the responsibilities of another app.
links:
  learn: []
  objects: []
  features: []
  topics: []
  localizations: []
  videos: []
  posts: []
  guidelines: []
post_id: "1419"
source_id: jpearson-blog
source_name: James Pearson
url: https://jpearson.blog/2025/05/07/another-look-at-app-integration-in-business-central-part-2/
published_at: "2025-05-07T17:08:28.000Z"
author: James Pearson
full_text: false
words: 1459
quotes:
  - text: The challenge that we are trying to solve is to allow Business Central apps to call each other's functionality without creating a dependency.
    why_it_matters: This defines the core problem the solution addresses - enabling optional app integration without tight coupling
  - text: Each app should have a clear set of responsibilities which does not overlap with the responsibilities of another app.
    why_it_matters: Explains the architectural principle driving the design - separation of concerns ensures maintainability and independent deployment
code_objects_mentioned:
  - interface IShippingAgentIntegration1.0
  - interface IApp
  - enum App
  - codeunit App Integration
  - codeunit Shipping Agent Integration
  - codeunit Calc. Shipping Charges
systems:
  - integration
  - development
versions_mentioned: []
preview:
  embeddable: true
  frame_url: https://jpearson.blog/2025/05/07/another-look-at-app-integration-in-business-central-part-2/embed/
  image: https://i0.wp.com/jpearson.blog/wp-content/uploads/2025/03/macro-1452987_1280.jpg?fit=1200%2C783&ssl=1
  image_alt: null
  image_w: 1200
  image_h: 783
  site_name: James Pearson
  favicon: https://jpearson.blog/wp-content/uploads/2018/09/cropped-semicolon.jpg?w=32
  probed_at: "2026-10-07T11:51:05.708Z"
---

# Another Look at App Integration in Business Central – Part 2

[Read the post](https://jpearson.blog/2025/05/07/another-look-at-app-integration-in-business-central-part-2/) · James Pearson (James Pearson) · 2025-05-07 · 1459 words · tier community · reviewed (checked by Opus)

> This post demonstrates how to integrate two independent Business Central apps without creating a direct dependency between them by using interfaces and a shared app integration layer. The approach allows apps to register and discover each other's functionality at runtime using enums, dictionaries, and version management.

## Key points

- Apps can integrate without direct dependencies by implementing interfaces defined in a shared app integration layer
- An App Integration codeunit uses a dictionary to store and manage implementations of interfaces from different apps
- Version numbers in interface names enable future contract changes while preventing breaking changes
- Consuming apps check for interface implementation before calling external app functionality, with fallback logic if unavailable
- The pattern separates concerns with each app owning specific responsibilities through single responsibility principle

## Quotes

- "The challenge that we are trying to solve is to allow Business Central apps to call each other's functionality without creating a dependency." (This defines the core problem the solution addresses - enabling optional app integration without tight coupling)
- "Each app should have a clear set of responsibilities which does not overlap with the responsibilities of another app." (Explains the architectural principle driving the design - separation of concerns ensures maintainability and independent deployment)

## AL objects mentioned

As named in the post. A name that matches one object page by exact type and name links to it; the others stay as named.

- interface "IShippingAgentIntegration1.0"
- interface "IApp"
- enum "App"
- codeunit "App Integration"
- codeunit "Shipping Agent Integration"
- codeunit "Calc. Shipping Charges"

Not found in BC28-30: interface "IShippingAgentIntegration1.0", interface "IApp", enum "App", codeunit "App Integration", codeunit "Shipping Agent Integration", codeunit "Calc. Shipping Charges".

## Context

- Features: Interface-based app integration, Runtime implementation registration, Version management for interfaces, Dictionary-based implementation storage, Implementation discovery and casting, Event-based initialization, Fallback logic for missing implementations

Source: James Pearson, community blog. Summary, key points and quotes are derived (CONTENT-NOTICE.md); read the original for the full text.
