Migration

Migration is the project, not a detail.

When the import covers your source system, the data comes in through the same entry point and under the same rules as someone typing on the screen, and you receive a report showing what came in.

Example · reconciliation reportTest run on a copy
Products1,284 created · 37 updated · 6 rejected
Lots912 released · 14 in quarantine
Stock ledger18,406 ledger entries
Balance by lotchecked against the sum of the source ledger
Inconsistencies23 lots flagged for review

Illustrative values. The report contains only counts, with no personal data.

The method

Four steps, in this order.

01

Measure the current database

We count what exists in today’s system, with read-only access and totals only, before importing anything.

02

Confirm with the pharmacist

Each code without a clear meaning in the previous system is given a documented destination, and the responsible pharmacist approves the mapping.

03

Test-run on a copy

The import runs on a copy of the data and ends with a count-based reconciliation report.

04

Publish with approval

The data only takes effect in the live system after the test run, with explicit, recorded approval.

What comes over

From the catalog to the inventory history.

The data goes in one row at a time, with the same validations as someone using the screen. A rejected row is counted in the report without blocking the others.

Products, categories, capsule types, shelf lives, synonyms and capsule and packaging rules

Suppliers

Lots with their parent lot, receiving records and adjustments

Stock ledger history, with pure substance

Lot assays

Lot and adjustment numbering continuing from where the previous system left off

How the data is handled

What comes in is counted; what diverges stays in plain view.

Source identity

Each imported record keeps its source table and identifier, which appear on the record and cannot be changed outside the import.

Can be run again

A new run with the same data neither duplicates nor changes anything, and a record the pharmacy deleted does not come back.

Change at the source

If a ledger entry changes in the previous system after it was imported, the new run reverses it and records the replacement, indicating which entry it replaces.

Inconsistencies in plain view

Lots with a problem at the source, such as a negative balance or expired with a balance, come in flagged as imported and not reconciled, for your team to resolve.

Confirmed meanings

The lot statuses and ambiguous fields of the previous system have their meaning confirmed in writing by the pharmacy before the import.

What is not migrated

Names of users from the previous system, the username and password for SNGPC (ANVISA’s controlled-substance reporting system), bank details and supplier contacts are not imported. The pharmacy enters this data.

Questions about the migration.

We assess your source system before the proposal and state in writing what the import covers, without accessing the pharmacy’s data.
No. Whatever was inconsistent at the source comes in flagged and in plain view, and the correction is made afterwards by your team, with a reversal and a new ledger entry when it concerns inventory.
Yes. The responsible pharmacist confirms the codes and factors with an uncertain meaning, and the pharmacy confirms the meaning of the lot statuses before the import.

Tell us which system you are coming from.