# CoA Documentation

# Table of Content

# Certificates of Analysis - CoA

# Purpose of CoA

Manufacturers of materials are required to deliver Certificates of Analysis (CoA) for each batch of products together with the physical product. The basis for these are regulations such as EN 10204 or specifications of customers, which are part of orders.

The main content of CoA documents is the origin of the product and its physical attributes such as dimensions, mechanical properties, or chemical composition. Furthermore, it contains information about the commercial transaction to enable the customer to link it to their purchase order.

# Current situation

Manufacturers create CoAs in the form of PDF documents and share them by email with their customers, with a few exceptions using EDI to send data electronically to their customers.

People like using PDFs a lot as they are a great way to present data in the same way as what has been the most common storage and data retrieval medium for centuries: paper. However, both paper and PDF documents are hard to grasp for computers:

  • The data cannot be used directly, it has to be extracted by transcribing manually or using OCR (Optical Character Recognition).
  • The transcription process is error-prone, humans and computers tend to produce errors at an unknown rate.

Despite the fact all certificates contain essentially the same information, the transcription process is hard due to the variations in layouts, naming, and processing - printing, manually signing, and scanning certificates making electronic processing much harder and more error-prone.

This document contains the results of an effort to create electronic CoA leaving the legacies of paper, PDF and EDI and restart with a fresh approach.

# Design goals

Based on previous experiences and the analysis of many certificates in a PoC project the following design goals have been agreed on with manufacturers and customers:

  • well defined and documented modern format - JSON.
  • easy to read for software developers, quality managers, and business people.
  • extensible to cover future requirements.
  • published as open-source to support a broad adaption by the industry.
  • supported by open source tools to speed up adoption.
  • ensuring backward compatibility by supporting PDF as visualization.
  • creating the foundation for the development of an industry ecosystem.

# CoA Structure

# Certificate of Analysis

Attribute Description Mandatory Visible
CertificateLanguages One or two languages can be specified into which the property names on the PDF and HTML renderings are translated. The format is defined by ISO 639-1:2002 (opens new window). The languages supported by a version are defined in the property CertificateLanguages (opens new window) Yes No
Id The certificate identifier Yes Yes
Date The certificate issuing date Yes Yes
Standard The standard defining the certificate. Consists of the required property name, e.g. "EN 10204" and the optional property type, for the class of certificate, e.g. "3.1" for EN 101204 certificates. Yes Yes

# Parties

The parties are the entities that are involved in the business transaction. The Manufacturer and Customer are both mandatory. The Receiver is the entity that receives the product and is optional.

Attribute Description Mandatory Visible
Name The name of the company Yes Yes
Street The address, a string or an array of up to three strings line Yes Yes
ZipCode The ZIP code Yes Yes
City The city Yes Yes
Country The two-letter ISO country code according to https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2. Yes Yes
Email The email address to be used to send certificates to the company. No Yes
Identifiers One or more unique company identifiers. Currently, VAT (opens new window), DUNS (opens new window), and Cage Codes (opens new window) are supported. One of VAT or DUNS is required. Yes No
AdditionalInformation An array of additional free text information on the company. No Yes
# Business Transaction

The BusinessTransaction contains the essential information documenting the exchange between the buyer and seller. The Order and Delivery are both mandatory. OrderConfirmation is optional.

# Order

The Order describes the order of the Customer to the Manufacturer.

Attribute Description Mandatory Visible
Id The order identification. Yes Yes
Position The order position number. No Yes
Date The date of issuing the order. No Yes
Quantity The order quantity. Yes Yes
QuantityUnit The unit of the order quantity. Yes Yes
CustomerProductId The internal product identifier of the Customer. No Yes
CustomerProductName The internal product name of the Customer. No Yes
GoodsReceiptId The identifier for the receipt of the goods issued by the Customer. No Yes
# Order Confirmation

The OrderConfirmation describes the confirmation of the order to the Customer.

Attribute Description Mandatory Visible
Id The identifier of the order confirmation. Yes No
Date The date of order confirmation issuance. No No

OrderConfirmation is optional and not rendered on the HTML or the PDF view.

# Delivery

Delivery describes the delivery of the Manufacturer to the Customer.

Attribute Description Mandatory Visible
Id The identifier of the delivery note. Yes Yes
Position The position on the delivery note. No Yes
Date The date of issuing the delivery note. No Yes
Quantity The shipped quantity. Yes Yes
QuantityUnit The unit of the shipped quantity. Yes Yes
InternalOrderId The internal order identifier issued at the manufacturer. No Yes
InternalOrderPosition The position on the internal order issued at the manufacturer. No Yes
Transport A reference to the transport, e.g. the license plates of trucks or container numbers No Yes

# Product

The manufacturer provides the key information about the product - specifically the Name and the FillingBatchId, which is the charge/batch identifier relevant for the customer. Additional properties can be added by the manufacturer as wanted or requested by the customer.

Attribute Description Mandatory Visible
Id The identifier for the product at the manufacturer. Yes Yes
Name The name of the product as given by the manufacturer, the trade name. Yes Yes
CountryOfOrigin The two-letter ISO country code of the country in which the product was manufactured. No Yes
PlaceOfOrigin The location of the plant in which the product was manufactured. No Yes
FillingBatchId The identifier of the batch/lot/charge of filling into transport. Yes Yes
FillingBatchDate The date of filling into transport. No Yes
ProductionBatchId The identifier of the production batch. No Yes
ProductionDate The day on which the product was manufactured. No Yes
Standards The list of standards to which the product conforms, e.g. ISO, EN, or customer-specific standards. No Yes
ExpirationDate The day on which the product becomes unusable. No Yes
AdditionalInformation An array of additional free text information on the product. No Yes

# Analysis

In Analysis the results of each inspection, either required by regulation or customer specification, are given. As of v1.0.0, Analysis is no longer a required property.

Attribute Description Mandatory Visible
LotId The lot identifier of the inspection example. No Yes
PropertiesStandard The inspection properties of the certificate according to a standard. Not rendered on the certificate. For further details see Support for standardization of property names No No
Inspections Array of Inspections Yes Yes
AdditionalInformation An array of additional free text information. No Yes
# Inspection

In Inspection each inspection and its results are documented.

Attribute Description Mandatory Visible
PropertyId The identifier of the property according to the definition provided in PropertiesStandard. Used for mapping of translations of Property. No No
Property The property measured. Yes Yes
Method The reference to the definition of the method such as EN, ISO, or factory standards. Yes Yes
Value The data type of the measured value. Yes Yes
ValueType The data type of the measured value, can be a string, number, date, date-time, or boolean Yes Yes
Minimum The lower limit according to the specification. No Yes
Maximum The upper limit according to the specification. No Yes
Unit The unit of the value. No Yes
TestConditions A description of the conditions under which the test was executed. No Yes

It should be noted that the structure supports non-numeric results. The measured Value must be provided as a string and the type of the value provided in ValueType. This enables the rendering of numeric values according to the format conventions of the first language specified in Rendering in one or two languages.

# Declaration of Conformance

Attribute Description Mandatory Visible
Declaration The text of the declaration of conformity Yes Yes
CE Certain products require a CE marking. This property defines all mandatory fields including the CE image to provide it on a certificate. No Yes

# Disclaimer

A generic disclaimer.

Attribute Description Mandatory Visible
Disclaimer The text of the Disclaimer No Yes

# Attachments

Attachments are additional optional data complementing the certificate. Examples could be data sheets, processing instructions, and others. These are not rendered on the certificate.

Attribute Description Mandatory Visible
Hash The hash of the unencoded data file. Yes No
FileName The name of the file. Yes Yes
MIME-Type The MIME/Type of the data file. Yes No
Encoding The format in which the data is encoded. Yes No
Data The data encoded as defined in Encoding. Yes No

# Contacts

A list of contacts can be added to a certificate, most prominent the inspection representative responsible for the issuing of the certificate.

Attribute Description Mandatory Visible
Name The name of a person Yes Yes
Role The role of the person named Yes Yes
Department The department a person is with Yes Yes
Email The email address of the person or department Yes Yes
Phone The phone number of the person or department Yes Yes

# Features

Additional features complement the JSON Schema increasing its utility for the industry.

# Standardization of layout

# Current situation

Currently, all market participants provide certificates in an individual layout driven by the following parameters:

  • The data available in their ERP and QM systems which varies a lot.
  • The corporate identity and design guidelines.
  • The technologies and their capabilities to define layouts and renderings of PDF documents.

In addition, all vendors might use slightly different wording for the same fields on certificates. This leads to a situation in which the variety of layouts and wordings results in difficulties and errors in processing inbound certificates. Furthermore, all attempts to use OCR to automate processing fail because of the variance of designs - even with a lot of effort to automate recognition and mapping, humans are required to review the results as the error rates are simply unacceptable.

# Objectives

The objectives for a new layout are

  • Standardized and well-defined document structure.
  • Easy to read for humans.

It should be mentioned that a standardized layout of PDF and HTML renderings is well appreciated by receivers of certificates.

# Example

In the example (opens new window), the language EN was specified for rendering.

{
    "RefSchemaUrl": "https://schemas.s1seven.com/coa-schemas/v1.0.0/schema.json",
    "Certificate": {
        "CertificateLanguages": ["EN"],
        "Id": "43",
        "Date": "2021-12-12",
        "Standard": {
            "Norm": "EN 10204"
# Sample rendering

This example illustrates the minimal set of data required.

Certificate

# Layout rules

The layout of PDF and HTML renderings are divided into the sections as illustrated.

Certificate layout

Section Rule
Logo The logo must be provided as Base64 (opens new window) encoded PNG file (opens new window). It will be rendered 150 pixel wide.
Manufacturer The company issuing the certificate to the customer, which might be the actual manufacturer or an entity authorized to issue certificates in the name of the manufacturer.
Customer The customer to which the product was sold to.
Receiver The receiver of the goods and certificates which can be the customer, a factory of the customer at a different location or warehouse.
Title Fixed position.
Business data The business data is organized into two columns: on the left the order data as provided by the customer, on the right side the delivery and internal order data of the manufacturer. The names of all available properties are displayed in a fixed layout. If a value is provided for a property it is displayed right to the property name.
Product The names of product properties and their values are only displayed if the property is available in the JSON. The order in which product properties are displayed is fixed.
Inspections The inspections are rendered in the order given in the JSON.
Attachements For all attachments only the name of the attached file is displayed.

# Rendering in one or two languages

# Current situation

In many cases, customers want to get certificates in multiple languages. In one example below Polish and Italian are configured: Italian could be addressing the headquarters and Polish to help shop floor operators without knowledge of English to read and understand the contents of certificates. Furthermore, most current implementations of certificate renderings do not or only partially comply with the conventions to localize number and date formats of the target language, possibly leading to misinterpretations.

# Objectives

The objectives are the

  • Standardization of translations for the terms used on PDF renderings for a large set of languages.
  • Automation of localization of number and date formats.
  • Enabling the addition of new languages simply.

# Example English certificate

In the example (opens new window) the language EN was specified for rendering.

# Cutout from JSON
{
    "RefSchemaUrl": "https://schemas.s1seven.com/coa-schemas/v1.0.0/schema.json",
    "Certificate": {
        "CertificateLanguages": ["EN"],
        "Id": "43",
        "Date": "2021-12-12",
        "Standard": {
            "Norm": "EN 10204"
# Cutout from PDF

English

# Example Italian and Polish certificate

In the example (opens new window) the languages PL and IT were specified for rendering.

# Cutout from JSON
{
    "RefSchemaUrl": "https://schemas.s1seven.com/coa-schemas/v1.0.0/schema.json",
    "Certificate": {
        "CertificateLanguages": ["PL", "IT"],
        "Id": "43",
        "Date": "2021-12-12",
        "Standard": {
            "Norm": "EN 10204:2004",
# Cutout from PDF

Polish and Italian

# Additional languages

Additional languages can be easily added by the following steps:

  • Add the ISO code for the new language to CertificateLanguages (opens new window).
  • Add translations for all field names in <ISO Code>.json to the repository root.
  • Add translations for all CAMPUS properties in CAMPUS/<ISO Code>.json (for details refer to section Support for standardization of property names)
  • Add new fixtures in test/fixtures and then to test/validate.spec.js and test/render.spec.js.
  • Release a new version of the schema.

# Fixing errors

Despite working with an ISO 17100 certified translation provider there will be errors which users can report easily by submitting a bug report on Github (opens new window).

# Support for standardization of properties

# Current situation

On certificates, the test results of inspections are provided for the properties relevant to the customer's specification and application. For each inspection, the applicable standard is given but in many cases, different forms are used. An example is ISO 1133, DIN EN ISO 1133, or DIN EN ISO 1133-2:2012-03, all specifying the same property.

# Objectives

The objective is to support standardized catalogs for properties that can be easily adopted by all stakeholders in the industry.

# Solution

The solution is to add a mapping of identifiers to inspections.

Identifier Property Test condition
38 MVR

Such a list can be easily imported into a QM system and mapped to existing inspection definitions by each industry stakeholder. Manufacturers can add the identifiers to the corresponding entries in certificates so receivers can easily import the value in the right way.

CAMPUS (opens new window), a material information system for the plastics industry supported by many leading companies, contributed such a list which was transformed into an easy to process JSON file format.

# Cutout from JSON
{
    "1": { "Property": "Yield stress", "TestConditions": "" },
    "2": { "Property": "Yield strain", "TestConditions": "" },
    "3": { "Property": "Nominal strain at break", "TestConditions": "" },
    "4": { "Property": "Stress at 50% strain", "TestConditions": "" },
    "5": { "Property": "Stress at break", "TestConditions": "" },
    "6": { "Property": "Strain at break", "TestConditions": "" },
    "7": { "Property": "Tensile Modulus", "TestConditions": "" },
    "8": { "Property": "Tensile creep modulus", "TestConditions": "1h" },
    "9": { "Property": "Tensile creep modulus", "TestConditions": "1000h" },

Full list with english names and test conditions (opens new window).

# Example

In the example, a reference to the standard and its defining body is given in the property PropertiesStandard - CAMPUS. For each inspection property for which a corresponding entry is available in the list, the identifier from the list is added in PropertyId, such as 38 in the example below.

"Analysis": {
    "LotId": "1234567890",
    "PropertiesStandard": "CAMPUS",
    "Inspections": [
    {
        "PropertyId": "38",
        "Property": "MFR",
        "Method": "DIN EN ISO 1133",
        "Unit": "g/10m_",
        "Value": "31",
        "ValueType": "number",
        "Minimum": "0.15",
        "Maximum": "35",
        "TestConditions": "2,16 kg 190° Celsius"
    },

It should be noted that the values for PropertyStandard and PropertyId are not displayed on HTML and PDF renderings - the only viable target for this information is machines, not humans.

It should also be noted that from version 0.3.0, Minimum and Maximum should be strings to allow for correct internationalization without losing trailing zeros.

# Additional Standards

Add the identifier to

export enum ExternalStandardsEnum {
  CAMPUS = 'CAMPUS',
  NewStandard = `NewStandardIdentifier`
}

in https://github.com/s1seven/schema-tools/blob/fix-get/packages/types/src/index.ts#L100-L102 (opens new window). Add new translations as described in above.

# Multi-language support for property names

With the availability of well-defined inspection property identifiers, it is natural to apply the translation logic for the certificate fields to inspection properties. That logic is fully implemented for the list of property identifiers defined by CAMPUS (opens new window).

# Example

"Analysis": {
    "LotId": "1234567890",
    "PropertiesStandard": "CAMPUS",
    "Inspections": [
    {
        "PropertyId": "38",
        "Property": "MFR",
        "Method": "DIN EN ISO 1133",
        "Unit": "g/10m_",
        "Value": "31",
        "ValueType": "number",
        "Minimum": "0.15",
        "Maximum": "35",
        "TestConditions": "2,16 kg 190° Celsius"
    },

# Cutout from PDF

In the example the target language is Turkish. The Turkish translation for the property MFR is looked up via PropertyId from the full list of Turkish names and test conditions (opens new window).

Turkish translation of inspection properties

It should be noted that the original value for Property is used if a value in the property PropertyId is not available. In practice, certificates can contain a mixture of proper translations of property names and the original names as delivered in the JSON file from the manufacturer's system.

# Additional languages

See above.

# Fixing errors

Despite working with an ISO 17100 certified translation provider there might be errors which users can report easily by submitting a bug report on Github (opens new window).

# Attachments

# Current situation

Manufacturers have a lot of data for their products in digital form starting from simple data sheets over large quantities of inspection data to data to optimize the use of them, possibly specific for each production batch.

Users are interested in getting more data about the products they buy for many applications but until now there was no simple and cheap way to get additional data. Digital CoA open a new way to transport additional data as attachment to the JSON document. A receiver can simply extract the attachments from a CoA and process it based on the metadata included.

# Solution

The implemented solution is to add attachments as Base64 (opens new window) data and metadata describing the contents as illustrated below. This allows to attach any kind of data or document to the certificate.

Possible attachements could be

 "Attachments": [
    {
        "Hash": {
            "Algorithm": "SHA256",
            "Encoding": "base64",
            "Value": "fa9e2171dbcf4c73e96fefed7be1582cebc3d42859df423afcea0b4439c4cc48"
        },
        "FileName": "Curves Ultramid.json",
        "MIME-Type": "application/json",
        "Encoding": "UTF-8",
        "Data": "data:application/json;base64, wolQTkcNChoKAAAADUlIRFIAAAFAAAAAw7AIBgAA..."
    }
],

In the HTML and PDF view of CoA JSON documents only FileName of each attachment is rendered in a list.

# Tools

Tools supporting the validation, testing, and rendering as PDF and HTML are available at https://www.npmjs.com/org/s1seven (opens new window). These tools implement the features described in the following for easy adoption by users and developers. The source code and documentation can be found at https://github.com/s1seven/schema-tools (opens new window).

# Licensing

The format definition, examples, translation, and the documentation on this site are published under GNU Affero General Public License (opens new window).