Skip to main content Skip to complementary content

Analysis

QV2QS automatically scans each QlikView document for features and patterns that may require attention after migration. Some findings are informational. Other findings identify unsupported functionality or areas that work differently in Qlik Sense. The results appear in the Other findings section of the executive summary and in the Analysis worksheet of the Excel report.

The analysis is separate from the conversion report. The conversion report measures how well objects converted. The analysis identifies additional compatibility concerns for Qlik Cloud deployment.

What is scanned

QV2QS inspects seven areas of the QlikView document.

Hidden script

QlikView documents can contain a hidden load script that executes before the visible script. The hidden script is stored inside a compressed block in the QVW/QVF binary and is not visible in the PRJ folder. QV2QS extracts the hidden script from the binary and prepends it to the visible load script in script.qvs. When a hidden script is detected, an informational finding appears in the Analysis worksheet and the Other findings section of the executive summary.

Load script patterns

QV2QS scans the load script (LoadScript.txt) for statements and functions that require attention during migration. When a hidden script is present, the hidden script content is included in the scan. Some statements are not supported in Qlik Sense. Other patterns may need path adjustments or alternative approaches. Comment lines and block comments are excluded from scanning.

The following patterns are detected:

Pattern Description
Binary Load BINARY statement that loads data from another QVW file. The data loading approach may need to be revised.
Bundle Load BUNDLE or INFO LOAD statements that embed images in the QVW. Not supported in Qlik Sense.
InputField INPUTFIELD statement for user data entry. Not supported in Qlik Sense.
Direct Discovery DIRECT QUERY statement for live data source connections. Not supported in Qlik Sense.
Include $(Include=...) or $(Must_Include=...) references to external script files. File paths may need adjustment.
Command COMMAND statement that executes operating system commands. Not supported in Qlik Sense.
Execute EXECUTE statement that runs external programs. Not supported in Qlik Cloud.
Image_Size Image_Size function. Not supported in Qlik Sense.
GetCurrentField GetCurrentField function. Not supported in Qlik Sense.
GetExtendedProperty GetExtendedProperty function. Not supported in Qlik Sense.
InputAvg / InputSum Aggregation functions for input fields. Not supported in Qlik Sense.
MsgBox MsgBox function for dialog boxes. Not supported in Qlik Sense.
NoOfReports NoOfReports function. Not supported in Qlik Sense.
ReportComment / ReportId / ReportName / ReportNumber Report-related functions. Not supported in Qlik Sense.

Each finding includes the line number and line text from the load script.

Document properties

QV2QS checks DocProperties.xml for document-level features that require attention. Some are not supported in Qlik Sense. Others are supported but require manual setup or behave differently.

Property Description
Section Access Row-level security is enabled. Qlik Sense supports Section Access but the syntax differs.
Dynamic Data Update Dynamic data update is enabled. Not supported in Qlik Sense.
Direct Discovery Mode Direct Query mode is enabled at the document level. Not supported in Qlik Sense.
Alerts Alert definitions exist. Alerts are not supported in Qlik Sense.
Document OnOpen Actions Document-level OnOpen trigger actions are defined. Requires manual recreation.
Document OnPostReload Actions Document-level OnPostReload trigger actions are defined. Requires manual recreation.
Document Extensions Document extensions are installed. Extensions other than QVAccessibility are not supported.

Field properties

QV2QS detects fields with the Always One Selected property enabled. This property is an engine-level setting that cannot be applied through JSON build output. The property must be applied manually in the Qlik Sense app editor after deployment.

VBA macros

QV2QS reads Module.txt from the PRJ folder and parses all VBA Sub and Function definitions. For each macro, the analysis reports the name, type (Sub or Function), and line count.

QV2QS also cross-references macro invocations by scanning every object XML file and DocProperties.xml for action triggers that call macros. The cross-reference identifies which objects invoke which macros and the sheets where those objects appear. Macros that are defined but never invoked are marked as unused.

Expression quoting in set analysis

QV2QS scans all object expressions (dimensions, measures, show conditions, color expressions, text expressions) and variable definitions for set analysis quoting patterns that behave differently in Qlik Sense. QlikView (before November 2017) treated single-quoted values in set modifiers as case-insensitive searches, identical to double-quoted values. Qlik Sense treats single-quoted values as case-sensitive literals.

The following patterns are detected:

Pattern Rule Likelihood Description Remediation
Single-quoted wildcard ('*US*', 'A?', '^abc') Wildcard in single quotes High Wildcard characters *, ?, and the ^ word-boundary anchor are interpreted as literal text in Qlik Sense instead of search patterns. Replace single quotes with double quotes to restore search behavior.
Single-quoted comparison ('>=5', '<2020') Comparison in single quotes High Comparison operators >, >=, <, <= are interpreted as literal text in Qlik Sense instead of numeric searches. Replace single quotes with double quotes to restore numeric comparison.
Single-quoted fuzzy search ('~company') Fuzzy search in single quotes High The ~ prefix triggers fuzzy matching in double quotes. In single quotes, Qlik Sense treats it as a literal string. Replace single quotes with double quotes to restore fuzzy search.
Single-quoted expression search ('=Sum(Sales)>100') Expression search in single quotes High The = prefix triggers expression search in double quotes. In single quotes, Qlik Sense treats it as a literal string. Replace single quotes with double quotes to restore expression search.
Single-quoted search modifier ('+abc', '-solution') Search modifier in single quotes High The + (must contain) and - (must not contain) modifiers work in double quotes. In single quotes, Qlik Sense treats them as literal strings. Replace single quotes with double quotes to restore modifier behavior.
Single-quoted compound search ('(1|2|3)', '(*ABC*&?*Inc*)') Compound search in single quotes High Compound search with logical operators | (OR), & (AND), ^ (XOR) works in double quotes. In single quotes, Qlik Sense treats it as a literal string. Replace single quotes with double quotes to restore compound search.
Single-quoted value on numeric field ('2020' on a date or number field) Single quotes on numeric field High Single-quoted values match the text representation in Qlik Sense. On numeric or dual fields, the text representation may not match the stored value, causing a type mismatch. Use the unquoted numeric value or double quotes instead.
Unquoted bare string ({USA,France}) Unquoted bare value Low Qlik Sense accepts unquoted values but the behavior is fragile with spaces, operators, or special characters. Wrap the value in single quotes for a literal match.
Bare field reference (<Field1=Field2>) Bare field reference High QlikView allows <Field1=Field2> to transfer selections between fields. Qlik Sense does not support bare field-to-field references in set modifiers. Replace with <Field1=P(Field2)> to use the P() element function.
Bare unbraced value (<Country=USA>) Bare unbraced value High A bare value without braces on the right side of a set modifier assignment. QlikView may interpret the value as a literal or a field reference depending on context. Qlik Sense requires values to be inside braces. Wrap in braces: <Country={USA}> or <Country={'USA'}>.

Single-quoted plain text values on text fields (for example, 'USA') are not flagged. These values work correctly as case-sensitive literals in Qlik Sense.

QV2QS supports bracket-quoted ([Invoice Number]), double-quoted ("Invoice Number"), and grave-quoted (`Invoice Number`) field names on the left side of set modifier assignments. All three quoting styles are recognized during scanning and fixing.

By default, QV2QS automatically fixes single-quoted search values during conversion in object expressions and variable definitions. Single-quoted values containing search syntax (wildcards, comparisons, fuzzy search, expression search, search modifiers, or compound search operators) are converted to double quotes. Single-quoted values on numeric fields that do not contain search syntax are flagged for manual review but not auto-fixed. An experimental fix for unquoted bare string values is also available but disabled by default — pass --fixUnquotedSetValues to enable it. Fixes are applied using positional replacement within set modifier value lists only — field names, function names, and other expression text are never modified. Each fix has an independent toggle (--noFixSingleQuotedSearch, --fixUnquotedSetValues). For more information, see Argument reference.

The results appear in the Expression quoting findings section of the console summary, in the Expression sub-tab of the executive summary dashboard, and in the Expression_Findings worksheet of the Excel report. Each finding includes a Status indicator: Auto-fixed (corrected during conversion), Needs review (requires manual attention), or No fix available (unsupported function). The executive summary dashboard provides a filter toggle to hide auto-fixed rows and focus on items that still need attention. For more information about set analysis syntax differences, see Set analysis in Qlik Cloud help.

Unsupported chart functions

QV2QS scans all object expressions (dimensions, measures, show conditions, color expressions, text expressions) and variable definitions for QlikView chart functions that are not supported in Qlik Sense. The scanner matches function calls with optional whitespace or newlines between the function name and the opening parenthesis. Function names inside string literals are excluded.

The following functions are detected:

Function Description
GetCurrentField Returns the active field name in the current object. Not supported in Qlik Sense. See Field functions in Qlik Cloud for supported alternatives.
GetExtendedProperty Retrieves linked object metadata. Not supported in Qlik Sense. See Field functions in Qlik Cloud for supported alternatives.
Input Retrieves user-entered input field values. Not supported in Qlik Sense.
InputAvg Calculates the average of input field values. Not supported in Qlik Sense.
InputSum Calculates the sum of input field values. Not supported in Qlik Sense.
MsgBox Displays a dialog box. Not supported in Qlik Sense.
NoOfReports Returns the number of report objects. Not supported in Qlik Sense.
ReportComment Returns a report comment. Not supported in Qlik Sense.
ReportId Returns a report identifier. Not supported in Qlik Sense.
ReportName Returns a report name. Not supported in Qlik Sense.
ReportNumber Returns a report number. Not supported in Qlik Sense.

Unsupported function findings appear alongside set analysis quoting findings in the Expression_Findings worksheet and the Potential expression issues section of the console summary.

Developer bookmarks

QV2QS reads DocInternals.xml and lists all developer-created bookmarks. For each bookmark, the analysis reports the field selections, scope (global or sheet-specific), and whether layout state is saved. Bookmarks must be manually recreated in Qlik Sense.

Information note

Server-level bookmarks (shared and private) are not detectable from the PRJ folder.

SaaS sizing

QV2QS reads the QVW binary file to estimate the base RAM footprint of the app. The estimate is based on ByteSize metadata embedded in table and field descriptions.

Information note

ByteSize metadata is only available in QVW files saved with QlikView 12.30 or later (November 2018). If the metadata is not present, the sizing tier is reported as Unknown.

QV2QS classifies the app into one of the following tiers based on the base RAM footprint.

Tier Threshold Action
Standard Up to 5 GB No special action required.
Large Apps Up to 50 GB Deploy to a space with large app support enabled.
Requires Optimization Above 50 GB Consult with a Qlik administrator or Qlik partner before migration.

The sizing details table in the Analysis worksheet also reports the number of tables and fields (excluding system tables and fields). For detailed field cardinality, table row counts, and per-object byte sizes, see the Data_Model_Fields and Data_Model_Tables worksheets in the Excel report.

Confidence levels

Each load script finding includes a confidence level that indicates the likelihood of a genuine compatibility concern.

  • High — The pattern is specific. The finding is very likely a real compatibility concern.
  • Medium — The pattern may match non-relevant code. Verify manually.
  • Low — The pattern is broad. Review the flagged line to confirm relevance.

Document property findings and macro findings do not have confidence levels because these findings are based on explicit XML flags rather than pattern matching.

Limitations of the analysis

The analysis scans the PRJ folder and QVW binary only. The load script scanner detects unsupported statements and functions in LoadScript.txt. The load script scanner does not check chart expressions.

The expression scanner checks chart expressions (dimensions, measures, show conditions, color expressions, text expressions, and variable definitions) for set analysis quoting patterns and unsupported function calls. The expression scanner does not detect other categories of incompatibility in chart expressions.

Items that exist at the QlikView Server level are not detected. Undetected items include server bookmarks, server objects, cluster settings, alert conditions, report definitions, and session usage data.

Learn more

Visit the discussion forum at community.qlik.com

Did this page help you?

If you find any issues with this page or its content – a typo, a missing step, or a technical error – please let us know!