Basic components and system architecture of the Zigbee module.

ZigBee Layers
ZigBee Components
The metadata itself is stored in separate metadata components and thus it is possible to add metadata support for new profiles/clusters.
ZCL Metadata Providers describe a set of clusters, profiles and devices, which the ZCL Metadata service uses to process ZCL frames exchanged between our Zigbee stack implementation and your network. They provide XML-based descriptions of ZCL clusters and profiles to the other components of the Zigbee module (console commands, visual editors and test tools). Optionally it can include interfaces and constants used in the descriptions.
The Zigbee Module has built-in metadata providers for all functional domains defined in the General ZCL specification. In this case the definition of each functional domain is included in a separate metadata provider. Home Automation and Smart Energy profile providers are also included in the Zigbee Module. In the common case one provider defines one profile and the clusters and devices defined by this profile.
In the OSGi context each metadata provider is represented by a separate bundle. The first condition which distinguishes a metadata provider bundle is the presence of the "zcl-metadata" folder that contains the resources of clusters, devices and profile definitions. A metadata provider is identified by the symbolic name of the bundle that contains the "zcl-metadata" resources. The second condition is to declare the symbolic name of the provider in the Metadata configuration.
The metadata configuration of the Metadata Provider bundle contains two properties: the one specifies the symbolic names of the bundles, which are considered Default Providers for the ZigBee Module, the other - the Provider Extensions.
When a bundle is installed in the framework, it is checked for availability of zcl-metadata resource folder in its jar file. If present, it is considered a Metadata Provider. Then based on a check in the metadata configuration, the bundle is considered either a Default Provider or an Extension Provider.
The ZCL Metadata Service is registered asynchronously. It waits to parse and store all pending providers, which means all required default providers and initially registered extensions.
The module contains Cluster-to-Device-Class-Object mapping for various Zigbee profiles and It is possible to add support for new profiles.