<!-- DO NOT REMOVE THIS -->{{Template:HowTo/End}}<!-- DO NOT REMOVE THIS -->
==Plugin Initialization Timing==
The Plugin initialization and upgrade mechanism has been improved and stabilized.{{Version/ServerSince|5.2.0}}
Previously, each plugin was fully initialized one after another — meaning all initialization steps (system definitions, database schema update, content initialization) were completed for plugin A before plugin B was started.
As of this change, the initialization follows a phase-based approach: each phase is executed for all plugins before the next phase begins. The phases are:
* System Definitions – All MetaClasses, MetaProperties, Classifications, and SelectiveLists for all plugins are registered first. This ensures that all system meta definitions are known before any database or content work begins.
* Preprocess DB Update – Pre-processing of the database update runs for all plugins.
* Update DB Schema – The database schema is adapted for all plugins.
* Postprocess DB Update – Post-processing runs for all plugins.
* Initialize Content – System content is initialized and updated for all plugins.
Plugins are processed in dependency order — if Plugin A depends on Plugin B, Plugin B is always initialized first within each phase.
This approach prevents issues that previously occurred when a plugin tried to access MetaClasses or MetaProperties from another plugin that had not yet been initialized.
==See also==