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 |
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. |
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.