Data Flexibility

Learn how to expand and customize your configure8 instance data models

configure8 Data Flexibility allows you to extend the system's current data model schemas and create new ones.

If you want to extend your default configure8 data, there are two options:

1. Extend the system with already existing data types

If you want to add one of the following entities to another entity:

  • Application

  • Environment

  • Library

  • Manifest

  • Person

  • Repository

  • Resource

  • Service

  • Team

You can easily extend that data by following these steps:

  1. Go to Add Settings -> Schemas -> Add Schemas.

  2. Select the Type of entity you want to extend from the list above.

  3. Provide a name, for instance if you want to extend Services: "ExtendedServices". You can use the same name as Identifier.

  4. Don't add anything to the Data Model section.

  5. Add a Relation to the entity you want to add to this.

    1. Select Type, for instance, "Person".

    2. Add a name, for instance "BusinessOwner".

    3. Add a display name, for instance "Business Owner".

    4. Add the Foreigner Name field, for instance "BusinessOwner".

    5. Add the Foreigner Display Name, for instance, "Business Owner".

    6. Select the relation type. In this case, Many to One, as many services can have one but only one BusinessOwner.

    7. See the Display Settings section to see how you can control how the data is displayed in tables or inside schemas entities.

You can only extend a system schema once, so any other change or relation you want to add should be made in the same extended schema.

2. Create new data types and relate them with current system entities

You can also create new base schemas to model your specific data types and create multiple relations from this to all other catalog entities.

Check the full docs below on adding new schemas or look at our samples here.

Adding a Schema

To add a new schema to your organization, go to Settings -> Schemas -> Add Schema:

Schemas can only be added and edited by Administrators

1. Details

Type

Defines the general type of entities that can be created or extended in our system.

  • Application

  • Base

  • Environment

  • Library

  • Manifest

  • Person

  • Repository

  • Resource

  • Service

  • Team

You can only extend the currently existing system schema for the application, environment, service, library, manifest, person, repository, resources, service, and team.

You can only add a new schema for those types once; to add any other attribute or relation, you just need to edit the existing one.

Subtype

Defines the specific domain of the entity that you are creating. Sub-types only exist for:

  • Base

  • Resource

You can have multiple schemas with different sub-types for Base and Resources types.

You can then extend that schema by using the same subtype in a new one. This will import all data fields from the original base schema.

Name

Name that the user will see in the User Interface.

The name can be up to 150 characters.

Identifier

An identifier is a unique identifier or your schema, so you won’t be able to use it twice. This is used in your schema URL, for instance "domains" would be acessible in https://app.configure8.io/dnr-domains.

Identifier is auto-generated based on the Name, but you can change it if needed clicking on the lock icon.

Identifier can be "A-Z" , "_","-" and "0-9".

You can select a logo for your schema. This logo will be displayed in the Schemas table.

Description

Add a description to explain for other Admins what is this schema about.

2. Data model

Form JSON Schema

This field is not required, but it´s used to add more data fields and data field validations to the schema. It can be used to validate inputs that are pushed via the public API or directly in the UI for the new fields.

It is not required as we already have some default fields for each new schema, which you can check in the System Inherited Data Model field below. If you want to add more fields, then you should add it here.

You can also push Base schemas JSON properties with no validation. If the Form JSON Schema is empty we will accept anything in the payload.

{
  "$id": "https://app.configure8.io/snyk.issues.schema.json",
  "title": "Snyk Issue",
  "description": "Snyk Issue",
  "type": "object",
  "required": [
    "severity"
  ],
  "properties": {
    "severity": {
      "description": "",
      "type": "string"
    }
  }
}

You can check the full supported syntax here.

Data Model JSON

This field is not required and it's used to add columns to the schema entity tables. By default no field will be displayed in the columns, not even the default ones from System Inherit Data Model. If you want to add new fields than you should add those properties here. For instance:

[{
    "columnName": "Severity",
    "name": "severity",
    "calc": "details.severity",
    "hidden": false
}]
  • columnName: The name that will be displayed on the table.

  • name: Property name in the entity JSON.

  • hidden: if you want hide this field in the tables. For instance if you just want to use it on the calculations but not show in the table.

  • calc: from where you want to take the value. Complex operations can be performed here.

Check the full calculated properties docs and samples here.

System Inherited Data Model

View-only system schema for the selected "Type" that is inherited by default from configure8.

The additional Data Model JSON fields will be merged with this at the end of the process. But we will always show here the system original one.

3. Relations

Here we can add relations from multiple data types and fields into this schema.

  • Application

  • Environment

  • Library

  • Manifest

  • Person

  • Repository

  • Resource

  • Service

  • Team

  • Custom Schemas

Target schema we want to make a relation to this schema.

Name

The property name of this entity is in the scope of this schema.

This property will need to pass when pushing data via the API.

This is also the identifier for the relation when doing Custom Calculated Properties or Custom Data Scorecard Check. Note that the relationship has two sides, so you need to know from where you start the relationship "navigation". Scorecards will always be from the service side. Calculated properties will be from the schema you add to the new column.

Display Name

The UI name of this entity is in the scope of this schema.

Foreigner Name

The property name of this entity is in the scope of the other entity to which it's related.

Foreigner Display name

The UI name of this entity in the scope of the other entity it's related.

Relation Type

Relation Type will define how these two entities relate to each other. These are the available options:

  • One to One: Every entity has one foreign entity and vice versa.

  • One to Many: One entity can have many foreign entities.

  • Many to One: Many entities can have just one foreign entity.

  • Many to Many: Many entities can be related to many foreign entities.

Display settings

When adding new relations the following behavior will happen to your display settings.

Tables

A count with the number of that entity relations will appear on the tables and you can select the display or not of that column in the columns settings:

If you want to display the actual value(s) of the relation(s) in the table columns you can add a custom column in the Data Model JSON section.

"One" side of relations

For the one side of relations the Field and it's data will be displayed inside the About section in the entity Overview page:

You can also add a relation Tab to show that relation, but in this case as it's a "One" relation it will only display 1 (or 0) items.

Many side of relations

To display the "Many" side of relations you need to add a new tab as you can see in the section below.

4. Tabs

Overview

After saving your schema, you are able to add and configure tabs that show up on an entity's detail page at the top of the page.

You can add relation type of tabs to display relations that this schema have has described in the Display settings section above. You can also reorder the tabs to your needs:

Currently the "Overview" tab will still show up for service entities and still allows configuration of plugins as it has been before

Creating/Configuring A Tab

Adding a tab will allow you to configure a tab's name & description:

Adding/Configuring Widgets

And then you can click "Add Widget" and select a widget. This list includes all of our preconfigured schema widgets or "Custom Widget" that can be defined in JSON. Check the full widgets docs and examples here.

After selecting a "Custom Widget", you can preview the output that will displayed on the entity tab:

At the tab page where you added multiple widgets you can configure specific layouts for the widgets to be displayed.

Last updated

Copyright © 2023 configure8, Inc. All rights reserved.