web
You’re offline. This is a read only version of the page.
close
Skip to main content

Announcements

News and Announcements icon
Community site session details

Community site session details

Session Id :
Small and medium business | Business Central, N...
Suggested Answer

Difference Between BusinessEvent and IntegrationEvent in Business Central

(6) ShareShare
ReportReport
Posted on by 49

Hi I am trying to understand the difference between BusinessEvent and IntegrationEvent.

From what I understand, both are used to publish events that subscribers can react to, but I am not clear on when to use one over the other in real development scenarios.

Could someone explain? I would appreciate a simple explanation with practical examples if possible.

Thank you.

I have the same question (0)
  • Suggested answer
    Aziz Skhiri Profile Picture
    431 on at

    Hello , Both are publisher events you declare in AL code so other extensions or codeunits can subscribe and react to them. They look similar but have different purposes and contracts.

    Simple Difference


    • BusinessEvent:
      This is a stable, public contract.
      Microsoft (or you) promises it won’t change in future versions.
      It should not expose internal implementation details (use clean, business-oriented parameters).
      → Use it when you want to publish something that represents a real business action that partners/ISVs can safely rely on long-term.

    • IntegrationEvent:
      This is a flexible integration point.
      No strong promise of stability — it can evolve.
      You can expose more technical/internal data if needed.
      → Use it for technical integrations or when you’re not yet sure about the final shape of the event.

    Practical Examples


    1. BusinessEvent (stable, business-focused)
       
      [BusinessEvent(true)] procedure OnSalesInvoicePosted(SalesInvoiceHeader: Record "Sales Invoice Header") begin end;
       
      → An ISV can safely subscribe to this and build features like "send to external billing system when an invoice is posted". It’s part of the official business contract.

    2. IntegrationEvent (more flexible)
       
      [IntegrationEvent(true)] procedure OnBeforePostSalesDocument(var SalesHeader: Record "Sales Header"; var IsHandled: Boolean) begin end;
       
       
      → Used internally or by extensions that need to hook into technical flows. You can change parameters later without breaking the "official" contract.

    When to Choose Which?


    • Use BusinessEvent for important business moments (e.g., Order Confirmed, Item Shipped, Customer Created) that external solutions should depend on.

    • Use IntegrationEvent during development, for internal hooks, or when you need to expose more details and might refactor later.
      (You can even promote an IntegrationEvent to BusinessEvent later once it stabilizes.)                                                                                               
    • Rule of thumb: If you want others to build reliable integrations on top of it → BusinessEvent. If it’s more of a technical hook → IntegrationEvent. This distinction helps keep the base application clean while allowing powerful extensibility without constant breaking changes.

    •  
  • Suggested answer
    Grigorios Mavrogeorgis Profile Picture
    2,721 Super User 2026 Season 1 on at
    Hi,
    The confusing part is they run the same way, both you publish and subscribe identical. The real difference is the promise behind them, not the mechanism.

    A BusinessEvent is like a public API contract. When you mark something BusinessEvent you are saying to the world, this event will not change, the signature stays, you can build on it safely. So it carry an implicit promise of stability, Microsoft and ISVs use it for the events they want external systems and other apps to rely on long term.
    An IntegrationEvent has no such promise. It is just a hook point in your code so others can subscribe without modifying your objects, but you are allowed to change it later, and it can expose internal stuff. This is the one you use 95% of the time in normal development, your OnBefore/OnAfter publishers in codeunits are integration events.

    Simple rule, day to day extension hooks use IntegrationEvent. Only use BusinessEvent when you are deliberately offering a stable contract for outside integration.

    ►  If this solved it, marking it verified helps others too.      
    Regards,
    Grigorios Mavrogeorgis
    Business Central Consultant & AL Developer

    Work: Gmsoft Limited
    Blog:  insidebusinesscentral
    LinkedIn: linkedin.com/in/gregorymavrogeorgis

     
     
  • Suggested answer
    OussamaSabbouh Profile Picture
    18,198 Super User 2026 Season 1 on at
    Hello,
    both let other code subscribe and react, but use them for different intentions: BusinessEvent is for a stable, business-level signal like “Sales Order Posted” or “Customer Approved” — something you are promising other extensions/integrations can rely on, almost like a public API, so avoid exposing table/field implementation details. IntegrationEvent is the normal developer hook used inside logic to let extensions change or extend behavior, like “OnBeforePostSalesDocument”, “OnAfterValidateSomething”, or “OnBeforeCreateJournalLine”; it can expose records/variables and is more technical. So in real development, use IntegrationEvent for extension points inside your code, and use BusinessEvent only when you want to publish a clean business milestone that should remain stable over time.
    Regards,
    Oussama Sabbouh
  • Suggested answer
    TAHER_El_Mehdi Profile Picture
    1,982 on at

    Both are publisher events you declare in AL so other extensions or codeunits can subscribe to them. Mechanically they behave the same — you publish, others subscribe. The real distinction is in the contract and intent behind them.

    🔑 Simple Difference


    • BusinessEvent

      • A stable, public contract.

      • Promise: the signature won’t change in future versions.

      • Parameters should be clean and business‑oriented, not exposing internal details.

      • Use it to represent real business actions that partners/ISVs can safely rely on long‑term. 

      •  
    • IntegrationEvent

      • A flexible integration point.

      • No strong promise of stability — can evolve over time.

      • Can expose technical/internal data.

      • Use it for technical hooks, internal extensibility, or when the event shape may change later 

    📌 Practical Examples

    • BusinessEvent (stable, business‑focused)

      [BusinessEvent(true)]
      procedure OnSalesInvoicePosted(SalesInvoiceHeader: Record "Sales Invoice Header")
      begin
      end;

      → External systems can safely subscribe to this to trigger actions like “send invoice to external billing system.” It’s a business milestone.

    • IntegrationEvent (flexible, technical)

      [IntegrationEvent(true)]
      procedure OnBeforePostSalesDocument(var SalesHeader: Record "Sales Header"; var IsHandled: Boolean)
      begin
      end;

      → Used as a hook inside posting logic. Extensions can adjust behavior, override, or add details. Parameters may change in future versions.

    🧭 When to Choose Which

    • BusinessEvent → For important business moments (Order Confirmed, Customer Created, Item Shipped) that external solutions should depend on.

    • IntegrationEvent → For day‑to‑day extension hooks inside your code, technical flows, or when exposing internal records/variables.

    👉 Rule of thumb:


    • If you want others to build reliable, long‑term integrations → BusinessEvent.

    • If it’s more of a technical hook for extensibility → IntegrationEvent

    •  
  • Suggested answer
    Gerardo Rentería García Profile Picture
    27,507 Most Valuable Professional on at

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

Season of Sharing Community Challenge Winners!

Congratulations to our community stars!

Women in Power Builds Momentum

Expanding mentorship, skilling, and AI innovation

Congratulations to the June Top 10 Community Leaders

These are the community rock stars!

Leaderboard > Small and medium business | Business Central, NAV, RMS

#1
OussamaSabbouh Profile Picture

OussamaSabbouh 677 Super User 2026 Season 1

#2
Gerardo Rentería García Profile Picture

Gerardo Rentería Ga... 447 Most Valuable Professional

#3
YUN ZHU Profile Picture

YUN ZHU 366 Super User 2026 Season 1

Last 30 days Overall leaderboard

Featured topics

Microsoft Training Manuals

Product updates

Dynamics 365 release plans