Skip to main content

The migration report

Every import writes ssis-migration-report.md into the output folder. It is built from what that import did, so it cannot claim more than the importer did. The report uses the words of all the importers: a job is an SSIS package, a component is a task, a container, or a data flow component.

Sections​

SectionWhat it holds
TotalsPackages, components, and the count per status; the number of components flagged for review
Per jobFor each package: its components and how many are flagged
Most frequent source componentsEach SSIS class (Microsoft.DerivedColumn, STOCK:FOREACHLOOP, …), how often it occurs, how often it is flagged
Needs reviewEvery flagged component: package, class, name, status, and the reason
Scope of this reportWhat the statuses do and do not claim
Packages that failed to importPackages that could not be read or converted and have no workflow, with the error; only when there are any
Database connectionsThe Hop connections written and where; for each, the connection manager it came from and what to check: the password variable to set, Windows authentication, a new name, a Generic connection to complete. Says so when the folder is not in a Hop project, as Hop GUI then does not find the connections
Project parametersThe environment configuration file written for each project with parameters; only when there are any
Hop settingsHOP_EMPTY_STRING_DIFFERS_FROM_NULL=Y, and how Slowly Changing Dimensions match business keys (SSIS_KEYS_IGNORE_CASE)

From a real report: three of the four rows in the Needs review section of the flight operations warehouse, a public SSIS project of three packages under the MIT licence:

JobComponentNameStatusWhy
Flight_Load_DWMicrosoft.PackagePackage1PARTIALVariables [CurrentDate] are computed when the workflow starts. SSIS evaluates them each time they are read: if a task changes a variable they depend on, set them again after it. (+1 more)
Flight_Load_DWMicrosoft.SCDLoad DimPassenger (SCD)PARTIALA row whose fixed attribute changed goes to the Fixed Attribute Output and not to the Changing Attribute Updates Output; check that this matches SSIS for your rows.
Update_Fact_CompletionMicrosoft.FlatFileSourceLoad FactCompletionUpdates csvPARTIALDate and time columns are read as strings: SSIS parses them with the locale, whose format is not in the package. Convert them with a Select Values and a format.

How a component's status is decided​

The status starts from the component's converter, as listed in the component mapping. What happened during the import can then change it:

What happenedReported as
The converter carried the settings acrossAUTO
The converter carried it across, but a known part of the behaviour is not: an error output not routed, SQL parameters substituted as text, a fuzzy match whose scores differPARTIAL
A part needs a person: a Script Task, a Script Component that was not translated, an expression the translator does not support, an event handler Hop has no event forMANUAL
The converter threw an error; the component is a Dummy with the error in its descriptionUNSUPPORTED
No converter for the component; it is a Dummy that keeps its name, position and hopsUNSUPPORTED

Always flagged​

Some components are flagged whatever else happened, because they always need a person to look:

  • every Script Task and Script Component: their code is listed with the file it was written to; a Script Component translated by a language model is flagged as "Machine-translated script", with the model and any doubts left;
  • Execute SQL Tasks and database sources whose ? parameters became ${variables}: Hop substitutes them as text;
  • Fuzzy Lookups, Cache Transforms and Excel Destinations, which behave differently in a known way;
  • Merge Joins after a Sort with comparison flags, whose result in SSIS depends on row order;
  • Join actions in a workflow, as Hop can start a Join twice when its branches finish at the same moment;
  • Execute Package Tasks that run a package file rather than a package of the project;
  • package and container event handlers, sensitive parameters, and variables computed by expressions.

Richer reports​

An add-on that implements the importer's IImportReportProvider interface replaces the first five sections with its own. Nothing in the importer depends on one being installed.