Assessment guide
The assessment walks a folder and writes one HTML report. It does not convert workflows or generate SQL. Every file that is not listed below is skipped. A file that cannot be read is marked failed, and the scan continues. A file larger than 512 MB is not read. An .xml file is classified from the earliest signature in its first 1 KB. Folders named .git, __pycache__, .venv, venv, and node_modules are skipped.
Report
The report is written to reports/<folder>.html. Pass -o name.html to choose the file name. A full path is used as given. --skip talend leaves a technology out. Repeat the flag to skip more than one.
- Confidence is recognized inventory divided by the items that count. Types marked useless for migration are left out. Every other type counts, including unrecognized ones.
- Complexity is simple, medium, high, very high, or very very high, from the file's size. Workflow files are sized by weighted inventory. Display, logging, and metadata items count 0, and custom code such as scripts and transformers counts 2 to 3. SAS and COBOL are sized by code lines, which leave out blank lines, comments, and generated Data Integration code.
- Complexity drivers raise that size for patterns that make migration harder than size alone shows. Examples are SAS macro code, retain and first./last. logic, and generated code; COBOL
GO TO,REDEFINES, packed decimals, file handling, CICS, and program calls; workflow loops, child jobs, branching, and many tool types; and items the converter does not handle. Each driver adds up to a set percentage, and the total is capped at 2.5 times the size. The report shows the multiplier and the main drivers under each band. - MCU for SAS and COBOL programs is code lines divided by 500, so a short program is a fraction such as 0.33 or 0.5. JCL and copybooks use 1,000 lines. For Alteryx, DataStage, Informatica, and SSIS, 10 weighted tools equal one MCU, with complexity bands at 10, 20, 30, and 50. Talend uses 15, because its components are finer grained. Qlik uses 20 weighted statements. ODI counts only mappings, scenarios, steps, and procedures, not key and column metadata. Total MCU is the sum and is the figure used for a purchase quote.
- SQL and Python are the share of counted items. A file is marked SQL only when the Python share is zero. Otherwise it needs Python as well.
Alteryx
Handled
.yxmd,.yxmc, and.yxwzworkflows.- Workflows of those types packed inside a
.yxzpzip. .xmlwhose opening looks likeAlteryxDocument.
Not handled
- Other Alteryx files, including
.yxdb,.yxft, and.cyz. - Zip members inside a
.yxzpthat are not workflows.
DataStage
Handled
.dsxtext exports that start withBEGIN HEADERorBEGIN DSJOB..dsxXML exports, and.xmlthat is aDSExportor starts withBEGIN HEADER.
Not handled
.isxpackages. They are counted and not opened.- A
.dsxthat is neither an export nor XML.
Informatica
Handled
- PowerCenter
.xmlwhose opening containsPOWERMARTorREPOSITORY. .binmapping files whose contents are JSON, starting with{or[.
Not handled
.binfiles that are not JSON.- XML that is not a PowerCenter export.
- Parameter files, session logs, and other Informatica artifacts.
Qlik
Handled
.qvsload scripts..qvfand.qvwapps, scored from the load script inside the file.
Not handled
.qvddata files.- A binary app whose load script is compressed in a form the reader cannot open. It is marked failed with "No load script was found."
ODI
Handled
.xmlwhose opening containsSunopsisExport.
Not handled
- Other ODI files, including exports that do not use that root.
SSIS
Handled
.dtsxpackages..xmlwhose opening containsDTS:ExecutableorMicrosoft.Package.
Not handled
.ispacproject packages,.dtprojprojects, and.dtsConfigfiles.
Talend
Handled
.itemand.xmljobs whose root isProcessType, or that contain anodeorcomponentItem.
Not handled
- Context
.itemfiles, XMI, and routines that are not jobs. .properties,.java, and zipped job archives.
COBOL
Handled
.cbl,.cob, and.cobolprograms. A line counts as a statement when it starts with a COBOL verb, or when a verb followsELSE,WHEN, orAT END. Continuation lines and paragraph names are not counted..cpycopybooks that contain data-description entries..jcland.procmembers that containJOB,EXEC, orPROC, with or without a leading//.- A
.jclanalysis file scored from the job text it carries.
Not handled
.txtand other extensions, even when the text is COBOL or JCL.- Easytrieve and other languages that share those folders.
- A file with a handled extension that is not a program, a copybook, or JCL.
SAS
Handled
.sasprograms. Counted items include data steps, proc steps, SQL, macros, arrays, retain, merge, do loops, if / else, include,%let, and libname, plus set, infile, where, hash objects, andcallroutines. A proc or statement is recognized only when it is on the supported lists insas_reader.py. For example,proc glmandcall missingare reported as unrecognized..egpEnterprise Guide projects. The zip is read in memory. Task order comes fromproject.xml, and each task is scored from itscode.sasor embedded code. The SAS is not written out.- Data Integration programs inside a
.sasfile. They are recognized when the text contains%macro etls_,%etls_,_CLIENTTASKLABEL,transformID, oretls_loader. Lines before%etls_setDebug, bookkeeping%letlines, and theetls_loaderwrapper are left out.proc sqlandproc appendinside that wrapper are kept.
Not handled
- Data files such as
.sas7bdat, logs (.log), and listing output (.lst). - A
.sasfile that is not a program, and an.egpthat is not a zip or that contains no SAS program.