# apache/ofbiz-plugins architecture

> Architecture diagram of the GitHub repository apache/ofbiz-plugins, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-11). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/apache/ofbiz-plugins
- Repository: https://github.com/apache/ofbiz-plugins

## Overview

OFBiz Plugins is a set of optional enterprise extensions for the OFBiz framework, with e-commerce as its most prominent product capability. This tree samples several separate workflows rather than one end-to-end application: web requests, LDAP authentication, content/product search indexing, and developer reload tooling. The graph preserves those distinct branches and includes other visible plugin domains. Edges are limited to relationships shown in excerpts or the source index; most ecommerce internals and other unsampled plugin wiring cannot be established from the supplied evidence.

Main entry points: [`devreload/src/main/java/org/apache/ofbiz/devreload/DevReloadContainer.java`](https://github.com/apache/ofbiz-plugins/blob/trunk/devreload/src/main/java/org/apache/ofbiz/devreload/DevReloadContainer.java) (Reload container), [`lucene/src/main/java/org/apache/ofbiz/content/search/SearchServices.java`](https://github.com/apache/ofbiz-plugins/blob/trunk/lucene/src/main/java/org/apache/ofbiz/content/search/SearchServices.java) (Search services), [`ldap/src/main/java/org/apache/ofbiz/ldap/LdapLoginWorker.java`](https://github.com/apache/ofbiz-plugins/blob/trunk/ldap/src/main/java/org/apache/ofbiz/ldap/LdapLoginWorker.java) (LDAP login), [`lucene/src/main/java/org/apache/ofbiz/content/search/SearchWorker.java`](https://github.com/apache/ofbiz-plugins/blob/trunk/lucene/src/main/java/org/apache/ofbiz/content/search/SearchWorker.java) (Search worker)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_search["Search"]
  node_search_services["Search services"]
  node_search_worker["Search worker<br/>[SearchWorker.java]"]
  node_indexer["Document indexer"]
  node_indexer_container["Indexer container"]
  node_lucene_document["Lucene document"]
  node_content_document["Content document"]
  node_product_document["Product document"]
  node_search_events["Search events<br/>[SearchEvents.java]"]
end

subgraph group_identity["Identity"]
  node_ldap_login["LDAP login"]
  node_auth_interface["Auth handler interface"]
  node_auth_base["Authentication base"]
  node_openldap["OpenLDAP handler"]
  node_active_directory["Active Directory"]
  node_cas["CAS handler"]
  node_ldap_service[("LDAP directory")]
end

subgraph group_runtime["Runtime tooling"]
  node_reload_container["Reload container"]
  node_debouncer["Debouncer<br/>[Debouncer.java]"]
  node_model_reloader["Entity model reloader"]
  node_hot_swap["Hot swap agent<br/>[HotSwapAgent.java]"]
  node_file_manager["Recording file manager"]
end

subgraph group_business["Business plugins"]
  node_ecommerce["E-commerce"]
  node_forum["Forum events<br/>[ForumEvents.java]"]
  node_payment["First Data payments"]
  node_asset_maintenance["Asset maintenance"]
  node_scrum["Scrum events<br/>[ScrumEvents.java]"]
  node_scrum_services["Scrum services<br/>[ScrumServices.java]"]
  node_project_tools["Project utilities<br/>[Various.java]"]
end

subgraph group_web["Web plugins"]
  node_multisite_filter["Multisite filter<br/>[WebSiteFilter.java]"]
  node_request_wrapper["Site request wrapper"]
  node_jsp_view["JSP view handler"]
end

node_user(("User"))
node_browser(("Browser"))

node_user -.->|"requests search"| node_search_services
node_search_services -->|"delegates indexing"| node_search_worker
node_search_services -->|"queues product"| node_indexer
node_search_services -->|"creates product doc"| node_product_document
node_search_worker -->|"queues documents"| node_indexer
node_search_worker -->|"creates content doc"| node_content_document
node_indexer_container -->|"uses indexer"| node_indexer
node_content_document -->|"implements"| node_lucene_document
node_product_document -->|"implements"| node_lucene_document
node_ldap_login -->|"dispatches handler"| node_auth_interface
node_ldap_login -->|"loads handler"| node_openldap
node_openldap -->|"extends"| node_auth_base
node_active_directory -->|"extends"| node_auth_base
node_auth_base -->|"implements"| node_auth_interface
node_cas -->|"uses handler contract"| node_auth_interface
node_ldap_login -.->|"authenticates against"| node_ldap_service
node_reload_container -->|"uses"| node_debouncer
node_reload_container -->|"uses"| node_model_reloader
node_reload_container -->|"uses"| node_hot_swap
node_reload_container -->|"records compiler output"| node_file_manager
node_browser -.->|"uses storefront"| node_ecommerce
node_browser -.->|"sends request"| node_multisite_filter
node_multisite_filter -->|"wraps request"| node_request_wrapper
node_browser -.->|"requests view"| node_jsp_view

click node_search_services "https://github.com/apache/ofbiz-plugins/blob/trunk/lucene/src/main/java/org/apache/ofbiz/content/search/SearchServices.java"
click node_search_worker "https://github.com/apache/ofbiz-plugins/blob/trunk/lucene/src/main/java/org/apache/ofbiz/content/search/SearchWorker.java"
click node_indexer "https://github.com/apache/ofbiz-plugins/blob/trunk/lucene/src/main/java/org/apache/ofbiz/content/search/DocumentIndexer.java"
click node_indexer_container "https://github.com/apache/ofbiz-plugins/blob/trunk/lucene/src/main/java/org/apache/ofbiz/content/search/DocumentIndexerContainer.java"
click node_lucene_document "https://github.com/apache/ofbiz-plugins/blob/trunk/lucene/src/main/java/org/apache/ofbiz/content/search/LuceneDocument.java"
click node_content_document "https://github.com/apache/ofbiz-plugins/blob/trunk/lucene/src/main/java/org/apache/ofbiz/content/search/ContentDocument.java"
click node_product_document "https://github.com/apache/ofbiz-plugins/blob/trunk/lucene/src/main/java/org/apache/ofbiz/content/search/ProductDocument.java"
click node_search_events "https://github.com/apache/ofbiz-plugins/blob/trunk/lucene/src/main/java/org/apache/ofbiz/content/search/SearchEvents.java"
click node_ldap_login "https://github.com/apache/ofbiz-plugins/blob/trunk/ldap/src/main/java/org/apache/ofbiz/ldap/LdapLoginWorker.java"
click node_auth_interface "https://github.com/apache/ofbiz-plugins/blob/trunk/ldap/src/main/java/org/apache/ofbiz/ldap/commons/InterfaceOFBizAuthenticationHandler.java"
click node_auth_base "https://github.com/apache/ofbiz-plugins/blob/trunk/ldap/src/main/java/org/apache/ofbiz/ldap/commons/AbstractOFBizAuthenticationHandler.java"
click node_openldap "https://github.com/apache/ofbiz-plugins/blob/trunk/ldap/src/main/java/org/apache/ofbiz/ldap/openldap/OFBizLdapAuthenticationHandler.java"
click node_active_directory "https://github.com/apache/ofbiz-plugins/blob/trunk/ldap/src/main/java/org/apache/ofbiz/ldap/activedirectory/OFBizActiveDirectoryAuthenticationHandler.java"
click node_cas "https://github.com/apache/ofbiz-plugins/blob/trunk/ldap/src/main/java/org/apache/ofbiz/ldap/cas/OFBizCasAuthenticationHandler.java"
click node_reload_container "https://github.com/apache/ofbiz-plugins/blob/trunk/devreload/src/main/java/org/apache/ofbiz/devreload/DevReloadContainer.java"
click node_debouncer "https://github.com/apache/ofbiz-plugins/blob/trunk/devreload/src/main/java/org/apache/ofbiz/devreload/Debouncer.java"
click node_model_reloader "https://github.com/apache/ofbiz-plugins/blob/trunk/devreload/src/main/java/org/apache/ofbiz/devreload/EntityModelReloader.java"
click node_hot_swap "https://github.com/apache/ofbiz-plugins/blob/trunk/devreload/src/main/java/org/apache/ofbiz/devreload/HotSwapAgent.java"
click node_file_manager "https://github.com/apache/ofbiz-plugins/blob/trunk/devreload/src/main/java/org/apache/ofbiz/devreload/RecordingFileManager.java"
click node_ecommerce "https://github.com/apache/ofbiz-plugins/blob/trunk/ecommerce/src/main/java/org/apache/ofbiz/ecommerce/misc/ThirdPartyEvents.java"
click node_forum "https://github.com/apache/ofbiz-plugins/blob/trunk/ecommerce/src/main/java/org/apache/ofbiz/ecommerce/forum/ForumEvents.java"
click node_payment "https://github.com/apache/ofbiz-plugins/blob/trunk/firstdatapaymentgateway/src/main/java/org/apache/ofbiz/firstdatapaymentgateway/FirstDataPaymentServices.java"
click node_asset_maintenance "https://github.com/apache/ofbiz-plugins/blob/trunk/assetmaint/src/main/java/org/apache/ofbiz/assetmaint/FixedAssetMaintServices.java"
click node_scrum "https://github.com/apache/ofbiz-plugins/blob/trunk/scrum/src/main/java/org/apache/ofbiz/scrum/ScrumEvents.java"
click node_scrum_services "https://github.com/apache/ofbiz-plugins/blob/trunk/scrum/src/main/java/org/apache/ofbiz/scrum/ScrumServices.java"
click node_project_tools "https://github.com/apache/ofbiz-plugins/blob/trunk/projectmgr/src/main/java/org/apache/ofbiz/project/Various.java"
click node_multisite_filter "https://github.com/apache/ofbiz-plugins/blob/trunk/cmssite/src/main/java/org/apache/ofbiz/cmssite/multisite/WebSiteFilter.java"
click node_request_wrapper "https://github.com/apache/ofbiz-plugins/blob/trunk/cmssite/src/main/java/org/apache/ofbiz/cmssite/multisite/MultiSiteRequestWrapper.java"
click node_jsp_view "https://github.com/apache/ofbiz-plugins/blob/trunk/ecommerce/src/main/java/org/apache/ofbiz/ecommerce/webapp/view/JspViewHandler.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_search_services,node_search_worker,node_indexer,node_indexer_container,node_lucene_document,node_content_document,node_product_document,node_search_events,node_user,node_browser toneBlue
class node_ldap_login,node_auth_interface,node_auth_base,node_openldap,node_active_directory,node_cas,node_ldap_service toneAmber
class node_reload_container,node_debouncer,node_model_reloader,node_hot_swap,node_file_manager toneMint
class node_ecommerce,node_forum,node_payment,node_asset_maintenance,node_scrum,node_scrum_services,node_project_tools toneRose
class node_multisite_filter,node_request_wrapper,node_jsp_view toneIndigo
```

## Components

### Search

- [Search services](https://github.com/apache/ofbiz-plugins/blob/trunk/lucene/src/main/java/org/apache/ofbiz/content/search/SearchServices.java): `lucene/src/main/java/org/apache/ofbiz/content/search/SearchServices.java`
- [Search worker](https://github.com/apache/ofbiz-plugins/blob/trunk/lucene/src/main/java/org/apache/ofbiz/content/search/SearchWorker.java): `lucene/src/main/java/org/apache/ofbiz/content/search/SearchWorker.java`
- [Document indexer](https://github.com/apache/ofbiz-plugins/blob/trunk/lucene/src/main/java/org/apache/ofbiz/content/search/DocumentIndexer.java): `lucene/src/main/java/org/apache/ofbiz/content/search/DocumentIndexer.java`
- [Indexer container](https://github.com/apache/ofbiz-plugins/blob/trunk/lucene/src/main/java/org/apache/ofbiz/content/search/DocumentIndexerContainer.java): `lucene/src/main/java/org/apache/ofbiz/content/search/DocumentIndexerContainer.java`
- [Lucene document](https://github.com/apache/ofbiz-plugins/blob/trunk/lucene/src/main/java/org/apache/ofbiz/content/search/LuceneDocument.java): `lucene/src/main/java/org/apache/ofbiz/content/search/LuceneDocument.java`
- [Content document](https://github.com/apache/ofbiz-plugins/blob/trunk/lucene/src/main/java/org/apache/ofbiz/content/search/ContentDocument.java): `lucene/src/main/java/org/apache/ofbiz/content/search/ContentDocument.java`
- [Product document](https://github.com/apache/ofbiz-plugins/blob/trunk/lucene/src/main/java/org/apache/ofbiz/content/search/ProductDocument.java): `lucene/src/main/java/org/apache/ofbiz/content/search/ProductDocument.java`
- [Search events](https://github.com/apache/ofbiz-plugins/blob/trunk/lucene/src/main/java/org/apache/ofbiz/content/search/SearchEvents.java): `lucene/src/main/java/org/apache/ofbiz/content/search/SearchEvents.java`

### Identity

- [LDAP login](https://github.com/apache/ofbiz-plugins/blob/trunk/ldap/src/main/java/org/apache/ofbiz/ldap/LdapLoginWorker.java): `ldap/src/main/java/org/apache/ofbiz/ldap/LdapLoginWorker.java`
- [Auth handler interface](https://github.com/apache/ofbiz-plugins/blob/trunk/ldap/src/main/java/org/apache/ofbiz/ldap/commons/InterfaceOFBizAuthenticationHandler.java): `ldap/src/main/java/org/apache/ofbiz/ldap/commons/InterfaceOFBizAuthenticationHandler.java`
- [Authentication base](https://github.com/apache/ofbiz-plugins/blob/trunk/ldap/src/main/java/org/apache/ofbiz/ldap/commons/AbstractOFBizAuthenticationHandler.java): `ldap/src/main/java/org/apache/ofbiz/ldap/commons/AbstractOFBizAuthenticationHandler.java`
- [OpenLDAP handler](https://github.com/apache/ofbiz-plugins/blob/trunk/ldap/src/main/java/org/apache/ofbiz/ldap/openldap/OFBizLdapAuthenticationHandler.java): `ldap/src/main/java/org/apache/ofbiz/ldap/openldap/OFBizLdapAuthenticationHandler.java`
- [Active Directory](https://github.com/apache/ofbiz-plugins/blob/trunk/ldap/src/main/java/org/apache/ofbiz/ldap/activedirectory/OFBizActiveDirectoryAuthenticationHandler.java): `ldap/src/main/java/org/apache/ofbiz/ldap/activedirectory/OFBizActiveDirectoryAuthenticationHandler.java`
- [CAS handler](https://github.com/apache/ofbiz-plugins/blob/trunk/ldap/src/main/java/org/apache/ofbiz/ldap/cas/OFBizCasAuthenticationHandler.java): `ldap/src/main/java/org/apache/ofbiz/ldap/cas/OFBizCasAuthenticationHandler.java`
- **LDAP directory**

### Runtime tooling

- [Reload container](https://github.com/apache/ofbiz-plugins/blob/trunk/devreload/src/main/java/org/apache/ofbiz/devreload/DevReloadContainer.java): `devreload/src/main/java/org/apache/ofbiz/devreload/DevReloadContainer.java`
- [Debouncer](https://github.com/apache/ofbiz-plugins/blob/trunk/devreload/src/main/java/org/apache/ofbiz/devreload/Debouncer.java): `devreload/src/main/java/org/apache/ofbiz/devreload/Debouncer.java`
- [Entity model reloader](https://github.com/apache/ofbiz-plugins/blob/trunk/devreload/src/main/java/org/apache/ofbiz/devreload/EntityModelReloader.java): `devreload/src/main/java/org/apache/ofbiz/devreload/EntityModelReloader.java`
- [Hot swap agent](https://github.com/apache/ofbiz-plugins/blob/trunk/devreload/src/main/java/org/apache/ofbiz/devreload/HotSwapAgent.java): `devreload/src/main/java/org/apache/ofbiz/devreload/HotSwapAgent.java`
- [Recording file manager](https://github.com/apache/ofbiz-plugins/blob/trunk/devreload/src/main/java/org/apache/ofbiz/devreload/RecordingFileManager.java): `devreload/src/main/java/org/apache/ofbiz/devreload/RecordingFileManager.java`

### Business plugins

- [E-commerce](https://github.com/apache/ofbiz-plugins/blob/trunk/ecommerce/src/main/java/org/apache/ofbiz/ecommerce/misc/ThirdPartyEvents.java): `ecommerce/src/main/java/org/apache/ofbiz/ecommerce/misc/ThirdPartyEvents.java`
- [Forum events](https://github.com/apache/ofbiz-plugins/blob/trunk/ecommerce/src/main/java/org/apache/ofbiz/ecommerce/forum/ForumEvents.java): `ecommerce/src/main/java/org/apache/ofbiz/ecommerce/forum/ForumEvents.java`
- [First Data payments](https://github.com/apache/ofbiz-plugins/blob/trunk/firstdatapaymentgateway/src/main/java/org/apache/ofbiz/firstdatapaymentgateway/FirstDataPaymentServices.java): `firstdatapaymentgateway/src/main/java/org/apache/ofbiz/firstdatapaymentgateway/FirstDataPaymentServices.java`
- [Asset maintenance](https://github.com/apache/ofbiz-plugins/blob/trunk/assetmaint/src/main/java/org/apache/ofbiz/assetmaint/FixedAssetMaintServices.java): `assetmaint/src/main/java/org/apache/ofbiz/assetmaint/FixedAssetMaintServices.java`
- [Scrum events](https://github.com/apache/ofbiz-plugins/blob/trunk/scrum/src/main/java/org/apache/ofbiz/scrum/ScrumEvents.java): `scrum/src/main/java/org/apache/ofbiz/scrum/ScrumEvents.java`
- [Scrum services](https://github.com/apache/ofbiz-plugins/blob/trunk/scrum/src/main/java/org/apache/ofbiz/scrum/ScrumServices.java): `scrum/src/main/java/org/apache/ofbiz/scrum/ScrumServices.java`
- [Project utilities](https://github.com/apache/ofbiz-plugins/blob/trunk/projectmgr/src/main/java/org/apache/ofbiz/project/Various.java): `projectmgr/src/main/java/org/apache/ofbiz/project/Various.java`

### Web plugins

- [Multisite filter](https://github.com/apache/ofbiz-plugins/blob/trunk/cmssite/src/main/java/org/apache/ofbiz/cmssite/multisite/WebSiteFilter.java): `cmssite/src/main/java/org/apache/ofbiz/cmssite/multisite/WebSiteFilter.java`
- [Site request wrapper](https://github.com/apache/ofbiz-plugins/blob/trunk/cmssite/src/main/java/org/apache/ofbiz/cmssite/multisite/MultiSiteRequestWrapper.java): `cmssite/src/main/java/org/apache/ofbiz/cmssite/multisite/MultiSiteRequestWrapper.java`
- [JSP view handler](https://github.com/apache/ofbiz-plugins/blob/trunk/ecommerce/src/main/java/org/apache/ofbiz/ecommerce/webapp/view/JspViewHandler.java): `ecommerce/src/main/java/org/apache/ofbiz/ecommerce/webapp/view/JspViewHandler.java`

### Other components

- **User**
- **Browser**

## Connections

- User → Search services: requests search
- Search services → Search worker: delegates indexing (evidence: `lucene/src/main/java/org/apache/ofbiz/content/search/SearchServices.java`)
- Search services → Document indexer: queues product (evidence: `lucene/src/main/java/org/apache/ofbiz/content/search/SearchServices.java`)
- Search services → Product document: creates product doc (evidence: `lucene/src/main/java/org/apache/ofbiz/content/search/SearchServices.java`)
- Search worker → Document indexer: queues documents (evidence: `lucene/src/main/java/org/apache/ofbiz/content/search/SearchWorker.java`)
- Search worker → Content document: creates content doc (evidence: `lucene/src/main/java/org/apache/ofbiz/content/search/SearchWorker.java`)
- Indexer container → Document indexer: uses indexer (evidence: `lucene/src/main/java/org/apache/ofbiz/content/search/DocumentIndexerContainer.java`)
- Content document → Lucene document: implements (evidence: `lucene/src/main/java/org/apache/ofbiz/content/search/ContentDocument.java`)
- Product document → Lucene document: implements (evidence: `lucene/src/main/java/org/apache/ofbiz/content/search/ProductDocument.java`)
- LDAP login → Auth handler interface: dispatches handler (evidence: `ldap/src/main/java/org/apache/ofbiz/ldap/LdapLoginWorker.java`)
- LDAP login → OpenLDAP handler: loads handler (evidence: `ldap/src/main/java/org/apache/ofbiz/ldap/LdapLoginWorker.java`)
- OpenLDAP handler → Authentication base: extends (evidence: `ldap/src/main/java/org/apache/ofbiz/ldap/openldap/OFBizLdapAuthenticationHandler.java`)
- Active Directory → Authentication base: extends (evidence: `ldap/src/main/java/org/apache/ofbiz/ldap/activedirectory/OFBizActiveDirectoryAuthenticationHandler.java`)
- Authentication base → Auth handler interface: implements (evidence: `ldap/src/main/java/org/apache/ofbiz/ldap/commons/AbstractOFBizAuthenticationHandler.java`)
- CAS handler → Auth handler interface: uses handler contract (evidence: `ldap/src/main/java/org/apache/ofbiz/ldap/cas/OFBizCasAuthenticationHandler.java`)
- LDAP login → LDAP directory: authenticates against
- Reload container → Debouncer: uses (evidence: `devreload/src/main/java/org/apache/ofbiz/devreload/DevReloadContainer.java`)
- Reload container → Entity model reloader: uses (evidence: `devreload/src/main/java/org/apache/ofbiz/devreload/DevReloadContainer.java`)
- Reload container → Hot swap agent: uses (evidence: `devreload/src/main/java/org/apache/ofbiz/devreload/DevReloadContainer.java`)
- Reload container → Recording file manager: records compiler output (evidence: `devreload/src/main/java/org/apache/ofbiz/devreload/RecordingFileManager.java`)
- Browser → E-commerce: uses storefront
- Browser → Multisite filter: sends request
- Multisite filter → Site request wrapper: wraps request (evidence: `cmssite/src/main/java/org/apache/ofbiz/cmssite/multisite/WebSiteFilter.java`)
- Browser → JSP view handler: requests view
