Skip to main content
Skip table of contents

Internal Libraries


The Implementation library holds protocol implementations and class default constructors, using platform specific code (i.e. Kotlin or Swift). The Implementation library has a default 'out of the box' implementation for every component, so that an application developer has the option to use the default implementation or create a new one.

Some examples of component implementations provided by the Implementation library are:

  • The chosen database (e.g. using Core Data, ObjectBox, or another database)
  • The network stack (e.g. using NS Network for iOS)
  • The UI framework (e.g. using UIKit to provide the elements required by a login screen).

A component is a collection of protocol definitions (there are no concrete implementations in a component).

Each component requires the following protocols:

The library contains the following components: 

  1. ComponentModels - Contains protocols for model objects used across all components
  2. ComponentCommon - Contains features that are common between all applications. i.e media attachments, address books, udcs and etc.
  3. ComponentLogistics - Contains features specific to the logistics module i.e purchase order approvals.

A component should not maintain reference to another component unless it is the common component.


The API library defines protocols to communicate with web services such as Cantara, JDE or other services. Examples of these protocols include FileService, QueryService and FunctionService. 


The core library contains implementations for the protocols defined in the API library. The implementations are OS-specific, and utilise platform frameworks such as networking, database access and logging.

An example protocol is the HttpClient. In both iOS and Android this protocol defines a post method which expects a future response. The implementation of this protocol would be different for iOS and Android, since they have different networking layers, but the inputs and outputs to the method are the same.


Schema holds all the base model definitions for every object in a CC6 application. The model definitions are grouped into assets, core, distribution, finance, logistics and manufacturing. This is the same grouping that is used for the JDE modules.

Model definitions for objects that are common to more than one module in JDE are categorised as common.

Base model definition of objects is generally expected to inherit from UniqueEntity and conform to a Decodable. Decodable in this instance for both android and iOS means almost the same thing as they both act as a data conversion protocol.

Schema also contains:

  • The requests and responses for the Cantara service
  • The base protocol for all CRUD actions to the database.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.