External System Integration

This article is a short introduction to how Securaze handles external system connections. It includes a feature overview, a standard use-case step-by-step guide, as well as a quick FAQ section.

The Securaze software suite provides an all-in-one solution for secure drive erasure and hardware diagnostics, which is a crucial step in increasing hardware lifespan and eliminating e-waste. As such, a logical step forward is integrating the platform with existing ERP and ITSM solutions, to provide optimal flexibility and interoperability.

Feature Overview

Real-Time Product Status Updates

The primary feature of our external system integration is real-time product data export while device is being processed. Depending on your preference, you can get product data before device erasure, receive progress updates, or get data after processing is finished. Furthermore, any changes made in our Dashboard can be reflected in the external system. Naturally, it’s up to the user to choose their desired configuration and data export triggers.

User-defined Smart Field Mapping

In order to achieve maximum compatibility with other systems, our external integration supports configurable smart field mapping. You can map fixed values, rename our fields to your desire, and even aggregate listed components by a certain property into a separated text value.

Pre-erasure External Integration

If you already have your product registered on the external system, the erasure operator can enter its external ID before the erasure process begins. Alternatively, you can send the external ID in the response to one of our product status updates.

External Erasure Method Retrieval with Erasure Auto-start

In the case when the external system already provides setting up erasure instructions per device or hard drive, we can use that data in our system. We query the external system for wipe methods and automatically start erasing drives on successful wipe method retrieval.

Automatic Erasure Report Delivery

After each device erasure, Securaze creates a digitally signed and certified PDF erasure report, with all the necessary device and erasure details. If you activate automatic erasure report delivery, this report will be sent to a set endpoint in the external system.

Step-by-step Guide

This Step-by-step guide describes the setup of a new JSON external system integration.

The setup is found in the Securaze Dashboard / Settings / External System settings. Securaze System Administrator will create JSON settings, and user needs to provide accurate information for system integration.

1. Establishing a connection between Securaze and the external system (JSON Example)

Field

Usage

Name

Name for the external system connection

Please select direction

IN: Data coming only into Securaze
OUT: Data only gets sent out from Securaze (suggested)
IN+OUT: Both directions enabled

Hostname

The public reachable hostname of the external system.

Port

The public reachable port of the external system.

Please select protocol

The security protocol of the external system.
HTTPS (suggested)
HTTP

Please select authentication type

None

Bearer (suggested)

Bearer Token

The bearer token for authentication

Path

The path which should be called on the external system.

Example:

2. Setting up the desired triggers and client behavior

Triggers for external service

External trigger on start session

External system gets called when a device session is started (e.g. erasure, diagnose, connection)

On WebUI modifications

External system gets called when a manual modification on the Securaze Dashboard has been done to the device

On processing modifications

External system gets called when product updates are being received (e.g. device configuration, and similar)

On erasure progress

External system gets called on erasure progress

On processing finished

External system gets called when erasure is finished

Send erasure report when generated?

Send erasure report to external system YES/NO

 

Provide External ID on device check

If the external system provides an External ID, then the format can be setup here.
The client will ask after device detection for the External ID and will stop processing until the External ID has been entered.

External ID Regular Expression

Regular Expression, empty for no regular expression check

External ID Regular Expression Description

Description for the Regular Expression

External ID Name on External Service

Name of the External ID, this is shown to to the operator in the Securaze Clients.

 Example:

3. Setting up field mapping

 The field mapping object might be a little hard to understand at first, but it boils down to a few simple factors:

  • External field goes to the left, Securaze field goes to the right, e.g. (“ExternalField“: “{SecurazeField}“);

  • A regular string represents a fixed value, e.g. (“FromSecuraze“: “true“) will put a fixed value of true for all products;

  • A string in curly braces represents a value from Securaze, e.g. (“Manufacturer“:”{Vendor}”);

  • If you wish to aggregate an array of objects, you use the following syntax:
    “ExternalField“: “{SecurazeField[separator].Property}“

Table mapping is a complex custom object with 4 root properties: PCProduct, MobileProduct, StorageProduct and DisplayProduct. Each one of these properties contains an object with values mapped like so: External: Securaze
For fixed values, you input a regular string in the "Securaze" section: ExternalField: FixedValue. For a field in our table, you enclose the field in curly brackets: ExternalField: {SecurazeField}. If you wish to aggregate an array field in our table, use the following syntax: ExternalField: {SecurazeArrayField[separator].Property}

Currently supported fields in Securaze:

PC: Disks (array of objects), MemoryComponents (array of objects), MotherboardComponents (array of objects), CPUComponents (array of objects), GPUComponents (array of objects), NetworkComponents (array of objects), BatteryComponents (array of objects), CreatedAt, CreatedAtTS, ExternalID, InventoryID, InventoryNumber, SKU, ColliID, Chassis, OS, Vendor, Model, SerialNumber, Grade, TypicalProblems, DataWipeMethod, DataWipeTimestamp, DataWipeEmployee, DVD, CPU, CPUshort, RAM, ScreenSize, Resolution, HPA, DCO, SMARTOverall, PowerOnHours, ReallocatedSectors, WriteErrors, PermanentErrors, PendingErrors, TransportColliName, Colli, TransportColliArrived, TransportColliArrivedTS, ColliProcessEnded, TriggerName, LabelComment1, LabelComment2, LabelComment3, LabelComment4, Notes, EraseOnly, CreatedUserUsername, CreatedUserFirstName, CreatedUserLastName, CreatedUserEmail, CreatedUserID, ANumber, MDM, DEP, FindMyMac

Mobile: Disks (array of objects), MemoryComponents (array of objects), MotherboardComponents (array of objects), CPUComponents (array of objects), GPUComponents (array of objects), NetworkComponents (array of objects), BatteryComponents (array of objects), CreatedAt, CreatedAtTS, ExternalID, InventoryID, InventoryNumber, SKU, ColliID, Chassis, OS, Vendor, Model, SerialNumber, IMEI, IMEI2, Grade, TypicalProblems, DataWipeMethod, DataWipeTimestamp, DataWipeEmployee, CPU, RAM, DisplaySize, OperatingSystem, OperatingSystemVersion, OperatingSystemVersionPreProcessing, DeviceColor, NetworkStandard, AvailableSimCardSlots, InstalledSimCards, SdCardAmount, BatteryHealth, BatteryCapacity, TransportColliName, Colli, TransportColliArrived, TransportColliArrivedTS, ColliProcessEnded, TriggerName, LabelComment1, LabelComment2, LabelComment3, LabelComment4, Notes, CreatedUserUsername, CreatedUserFirstName, CreatedUserLastName, CreatedUserEmail, CreatedUserID, ANumber, InternalName, Stolen, Financed, SimLock, FindMyIphone, MDM, CarrierLock

 

Storage: Disks (array of objects), CreatedAt, CreatedAtTS, ExternalID, InventoryID, InventoryNumber, SKU, ColliID, Vendor, SerialNumber, TypicalProblems, DataWipeMethod, DataWipeTimestamp, DataWipeEmployee, DVD, CPU, CPUshort, RAM, HPA, DCO, SMARTOverall, PowerOnHours, ReallocatedSectors, WriteErrors, PermanentErrors, PendingErrors, TransportColliName, Colli, TransportColliArrived, TransportColliArrivedTS, ColliProcessEnded, LabelComment1, LabelComment2, LabelComment3, LabelComment4, Notes, EraseOnly, CreatedUserUsername, CreatedUserFirstName, CreatedUserLastName, CreatedUserEmail, CreatedUserID

Disk object contains: Model, SerialNumber, Size, SizeBytes, SizeGB, SizeGiB, WipeStartedTS, WipeFinishedTS, CreatedAtTS, LastModifiedAtTS, Type, Magnetic, HPA, DCO, Health, Shredded, WipeStatus, WipeMethod, WipeVerify, WipeProgress, Sectors, ReallocatedSectors, PowerOnHours, ProgramFails, UncorrectableErrors

Memory Component object contains: Vendor, SerialNumber, ComponentModel, Description, Width, Size, Slot, RAMType, CreatedAtTS, LastModifiedAtTS

Motherboard Component object contains: Vendor, SerialNumber, ComponentModel, Description

CPU Component object contains: Vendor, SerialNumber, ComponentModel, Description, Capacity, Clock, Size, Slot, Version, Width, Generation, ShortName, CreatedAtTS, LastModifiedAtTS

GPU Component object contains: Vendor, SerialNumber, ComponentModel, Description

Network Component object contains: Vendor, SerialNumber, ComponentModel, Description

Battery Component object contains: Vendor, SerialNumber, ComponentModel, Description, BatteryHealth, BatteryCycleCount, BatteryDesignCapacity, BatteryFullChargeCapacity, CreatedAtTS, LastModifiedAtTS

 

As the data changes regular the best place is to check it on the Dashboard itself during setup.

It produces the following product object:

  {   Manufacturer: 'LENOVO',   Model: 'LENOVO ThinkPad T400',   Serial: 'L3BML5D',   Asset: '-',   'Tech ID': 'root',   HDDSerialNumbers: '090217FC1220NCGK29AD',   WidgetID: 'Securaze',   Override: 'true',   HDDs: [     {       Model: 'HITACHI HTS72321',       SerialNumber: '090217FC1220NCGK29AD',       StorageComponentID: 511962443,       BusInfo: '',       LogicalName: '/dev/sda',       Size: '160041885696',       Type: 'hdd',       WipeParams: null,       WipeResult: '',       WipeMethod: 'dod_e',       WipeVerify: 'last',       WipeProgress: 100,       Sectors: '312581808',       ReallocatedSectors: '0',       WipeStarted: '2021-02-03T15:49:29.000Z',       WipeStatus: 'erased',       WipeFinished: '2021-02-03T18:47:22.000Z',       HPA: 'not available yet',       DCO: 'not available yet',       SMART: 'Good condition\n' +         'Raw_Read_Error_Rate: 0\n' +         'Spin_Retry_Count: 0\n' +         'Power_Cycle_Count: 233\n' +         'G-Sense_Error_Rate: 0\n' +         'Power-Off_Retract_Count: 44433421\n' +         'Load_Cycle_Count: 1341\n' +         'Temperature_Celsius: 29 (Min/Max 16/55)\n' +         'Reallocated_Event_Count: 0\n' +         'Current_Pending_Sector: 0\n' +         'Offline_Uncorrectable: 0\n' +         'UDMA_CRC_Error_Count: 0\n' +         'Throughput_Performance: 3330\n' +         'Load_Retry_Count: 0\n' +         'Spin_Up_Time: 1\n' +         'Start_Stop_Count: 303\n' +         'Reallocated_Sector_Ct: 0\n' +         'Seek_Error_Rate: 0\n' +         'Seek_Time_Performance: 37\n' +         'Power_On_Hours: 2136',       OverallState: 'Good condition',       PowerOnHours: 2136,       ProgramFails: 0,       UncorrectableErrors: 0,       CommandTimeouts: null,       PendingSectors: 0,       UncorrectableSectors: 0,       Presets: '{"ErasureHDD":{"Method":"dod_e","Verification":{"Method":"-","CustomValue":0}}}',       CreatedAt: '2021-02-03T11:30:22.000Z',       LastModifiedAt: '2021-02-03T22:49:33.000Z',       Shredded: false,       ShreddedInfo: null,       Deleted: false,       ComponentID: 511962443,       DataWipeEmployeeID: 1,       CreatedBy: 1,       LastModifiedBy: 1,       DataWipeEmployee: 'root',       Health: 100     }   ]

 

4. Confirming integration on both sides

After successful integration via ExternalID, the product details page in Securaze will show info about its connections with the external system (or systems).

FAQ

Is it necessary that the external system is accessible on the internet?

Yes. Without public internet access, Securaze cannot communicate with the external system.

Will Securaze have access to any other data of my external system?

No. Securaze will only use the specified Hostname and Path to communicate with your system.