Section §8

Integration inventory

File imports/exports, APIs, third-party touchpoints, scheduled jobs.

This section catalogues every data exchange between MES-Plus and an external system, plus every scheduled job that runs inside the customer’s environment to support those exchanges. The inventory is the source for §11 risk items relating to the broker and the integrations more broadly.

8.1 Inventory

#NameDirectionCounterpartyFormatTransportFrequencyOwner
1Bank A payment outOutBank AABO 1.2SFTP, key authWeekly Fri 16:00Broker
2Bank A statement inInBank AMT940SFTP, key authDaily 06:00Broker
3Bank B payment outOutBank BMultiCashSFTP, passwordAd-hocBroker
4Bank C payment outOutBank CISO 20022 pain.001HTTPS API + certAd-hocBroker
5Bank D payment outOutBank DABO 1.2SFTP, keyAd-hocBroker
6Bank E payment outOutBank EABO 1.2SFTP, keyAd-hocBroker
7Customs portalIn/OutČNB-equivalentXML, signedHTTPS web servicePer declarationBroker
8EDI partner #1 — INVOIC outOutLarge customer #1EDIFACT D.96ASFTPPer invoice batch (typically 1×/day)SSIS
9EDI partner #1 — ORDERS inInLarge customer #1EDIFACT D.96ASFTPDaily 02:00SSIS
10EDI partner #1 — ORDRSP outOutLarge customer #1EDIFACT D.96ASFTPDaily 04:00SSIS
11EDI partner #2 — ordersInLarge customer #2Custom CSVSFTPDaily 03:00SSIS
12EDI partner #2 — invoicesOutLarge customer #2Custom CSVSFTPDaily 03:30SSIS
13EDI partner #3 — ordersInLarge customer #3Custom CSVSFTPDaily 03:00SSIS
14EDI partner #3 — invoicesOutLarge customer #3Custom CSVSFTPDaily 03:30SSIS
15BI exportOutAWS S3 bucket → BI warehouseCSV (12 files)AWS CLI, IAM keyDaily 02:00SSIS + .bat
16Payroll exportOutPayroll vendor systemCustom CSVManual upload via browserMonthlyManual
17Tax-filing exportOutAccountant’s officePDF + XMLEmailMonthlyManual
18Engineering BOM/routing intakeInEngineering file shareManual entryManual UI entryPer engineering changeManual

Eighteen integrations total. Fifteen automated (entries 1–15), three manual (entries 16–18).

8.2 The broker — what it is, what it does

The custom integration broker is a single Windows Service on APP01:

  • Implemented in C#, .NET Framework 4.7 (not .NET Core / .NET 5+)
  • Approximately 18 000 lines of customer-written code, plus two referenced third-party DLLs (SecureBlackbox for SFTP and Aspose.Cells for spreadsheet manipulation)
  • Persistent state in three database tables (broker_queue, broker_log, broker_config)
  • Configuration via XML file (broker.config.xml) plus the broker_config table
  • Logs to broker.log (flat file) plus broker_log (database)
  • Email-on-error to it@customer mailing list

The broker handles entries 1–7 of §8.1 (bank and customs). It does not handle EDI (those are SSIS) or BI export (also SSIS).

Authentication and secrets: SFTP keys and customs-portal certificates live on disk in a folder readable only by the service account (svc_broker). Passwords in broker.config.xml are AES-encrypted with a key derived from the machine ID; the key is not externally backed up. A machine rebuild without prior export of this key would render the secrets unrecoverable. [Sev-2, R-07]

Failure handling: per-integration retry counts and backoff are configurable. Failures past the retry threshold land in broker_log with status failed; an email is sent. No alerting beyond email.

Source code provenance: the customer holds the C# source in an internal git repository (since 2018; before that, on a network share with versioned filename copies). The two third-party DLLs are licensed; SecureBlackbox is still maintained by its vendor, Aspose.Cells likewise.

8.3 SSIS estate

Seven SSIS packages handle entries 8–15:

PackageFunctionScheduleSource last touched
edi_in_ordersEDI partners #1, #2, #3 — order intake02:00–03:002022
edi_out_acksEDI partner #1 — order acknowledgements04:002019
edi_out_invoicesEDI partners #1, #2, #3 — invoice output03:302022
bi_export_masterDaily CSV export of master-data deltas02:002024
bi_export_transDaily CSV export of transactional deltas02:152024
data_archiveQuarterly archive of old inventory transactions to inventory_transactions_archiveQuarterly2018
stats_refreshWeekly statistics rebuild for query plansSunday 04:002016

The 2018 and earlier packages use older SSIS components (some deprecated). They still run on the SQL Server 2014/2019 hosts but warn in the SSIS log at every run. [DOC]

Owner: customer’s IT (the same person who maintains the broker). External SSIS expertise is available regionally but has not been retained.

8.4 Inbound vs outbound — coupling profile

ClassCountFailure of this class blocks…
Inbound (data into MES-Plus)5 (entries 2, 7, 9, 11, 13)Sales process for EDI customers (entries 9, 11, 13); cash application for entry 2; customs clearance for entry 7
Outbound (data out of MES-Plus)10Payment for entries 1, 3–6; customer invoicing for entries 8, 12, 14; BI dashboard for entry 15
Bidirectional3 (entries 7, plus EDI pairs treated as one logical relationship)as above

The customer’s most fragile dependency is on EDI partner #1 — the largest customer by revenue, with a strict SLA on EDIFACT INVOIC turnaround (invoice must arrive by 06:00 same day as goods are received in their warehouse). Two missed SLAs in 12 months trigger a chargeback clause. [DOC, customer-supplied contract excerpt]

8.5 Manual / un-automated touchpoints

Three integration points are not automated:

  • Payroll export (entry 16) — the HR administrator runs a custom report, exports CSV, logs into the payroll vendor’s portal, uploads. Monthly. Documented but error-prone (auditor observed one re-upload during the audit window due to a misformatted column).
  • Tax-filing export (entry 17) — accountant exports PDFs and XMLs, emails them to the external tax accountant who files with authorities. Monthly.
  • Engineering changes (entry 18) — engineer enters BOM and routing changes manually into MES-Plus screens. The audit observed a backlog of approximately 30 pending changes at the time of audit; this is partly because the engineer responsible has been on extended leave. [INT, OBS]

The manual touchpoints are candidates for §12 modernisation; they are not currently broken, but each has fragility.

8.6 Integration risk concentration

Two structural risks dominate:

  1. Single-person broker knowledge. The integration broker has one maintainer who retires in 2027. Broker rewrite (or at least documentation extraction) is the highest-priority finding in §11. [Sev-1, R-02]
  2. Encrypted secrets without external key escrow. The broker.config.xml encryption key is machine-bound and not backed up off-machine. A loss of APP01 without prior key export would force the customer to obtain all SFTP credentials and certificates fresh from every counterparty — a multi-week task. [Sev-2, R-07]

§11 catalogues these and other risks; §12 maps them to remediation tiers.