Semantic Smart Studio™

Engineered Data Estate Modernization.

Modernize your data estate into Microsoft Fabric without consulting dependencies. Semantic Smart Studio™ gives your engineering team one platform for the whole journey. Discover every database, package, job, cube, and report. Refactor and translate the code. Deploy the warehouse, semantic models, and reports into Microsoft Fabric. Reports aren’t just repointed; they’re rebuilt to match the new schemas and models, with every measure checked against the original.

It reads your estate the way your best architect would, only all of it: the relationships nobody declared, the logic buried in code, the reports nobody runs anymore, and every measure your business depends on.

Discovered, cataloged, and measured on the XMS Test Estate1.

One Estate. Every Object Measured.

Real schemas, real models, and real reports on SQL Server, Analysis Services, Reporting Services, and Power BI. Here’s what Semantic Smart Studio™ discovered, designed, and delivered.

Discover.

Every server, database, model, and report read and connected, column by column.

Discovered

10 min 5 s

Servers and services
16
Objects cataloged
859,481

Lineage Built

5 min 1 s

Columns traced
459,523
Code modules parsed
17,447

15 minutes 25 seconds from first connection to finished lineage, including the handoff from discovery to lineage.

Undeclared Relationships
23,835
The databases declare 2,730 foreign keys. Semantic Smart Studio™ found 23,835 more: 5,205 in the code that joins the tables and 18,630 in the values the columns share.
Measures Inventoried
2,609
2,233 Tabular and 376 Multidimensional measures from 17 models, each with its formula and the columns it depends on.
Unused Reports
148
The execution log shows no run for 148 of the 238 SSRS reports, so they’re reviewed for retirement before anyone spends a day migrating them.
Findings Across 64,271 Objects
335,838
194 rules graded the estate for Fabric readiness, correctness, and performance, and one object can raise several findings. Each finding names its rule and links the documentation behind it.

Reports and Models

Every SSRS report, Tabular model, and Power BI report read definition by definition and traced to the tables it reads.

SSRS Reports

238

625 datasets · 6,022 fields · 3,094 parameters

Tabular Models

5

113 tables · 9 calculation groups · 1,443 measures · 217 relationships

Power BI Reports

18

172 pages · 1,632 visuals · 8,599 field references

SSRS Reports: 238 reports

Each SSRS report read from its definition on the report server, with every dataset, field, and parameter it holds.

Rules applied

  • Report definitions read100.0%238 of 238 reports
  • Datasets read100.0%625 of 625 datasets
  • Fields read100.0%6,022 of 6,022 fields
  • Parameters read100.0%3,094 of 3,094 parameters

Power BI Reports: 18 reports

Each report read as a Power BI project and kept as rows: its pages, its visuals, and every field each visual reads, so a name or a formula changes in one place and the report is written again from the rows.

Rules applied

  • Reports read as Power BI projects100.0%18 of 18 reports
  • Pages kept as rows100.0%172 of 172 pages
  • Visuals kept as rows100.0%1,632 of 1,632 visuals
  • Field references kept as rows100.0%8,599 of 8,599 references

Design.

Every finding sorted by what Fabric blocks in the schema or the code, what your team decides, and what we advise as a best practice. Semantic Smart Studio™ rewrites what Fabric blocks and lists the rest with the reason.

All Findings

335,838

from 194 of 256 rules

Schema Fixes

221,188

findings from 19 of 24 rules

Code Fixes

5,448

findings from 91 of 123 rules

Recommended Renames

10,474

findings from 14 of 21 rules

Decisions to Make

31,858

findings from 23 of 30 rules

Best Practice Advice

66,870

findings from 47 of 58 rules

Reports and Models

One rename plan approved in Semantic Smart Studio™ and carried into every SSRS query, model binding, and Power BI report that reads the new names.

Renames Approved

17,337

475 tables and views · 16,862 columns in 2 databases

Model Bindings Remapped

429

95 tables and 334 columns in 5 Direct Lake models

Datasets to Warehouse Tables

26

built once per load instead of queried on every run

Power BI Interactive Reports Written

17

17 whole · 159 visuals · 12 parameters as slicers

Power BI References Carried

9,468

in 17 reports · every name kept by the model

Renames Approved: 17,337

Smart Rename's recommended rules applied to the tables, views, and columns of two databases, and every proposal approved but those that clash; a name can take several rules. 17,337 of 17,373 names approved.

Rules applied

  • Pascal Case99.9%16,661 of 16,674 names
  • Foreign Key Follows Its Key99.0%326 of 329 names
  • Remove the Dim Prefix85.3%134 of 157 names
  • Expand Abbreviations: Quantity100.0%101 of 101 names
  • Expand Abbreviations: Amount100.0%52 of 52 names
  • Surrogate Key Name100.0%49 of 49 names
  • Expand Abbreviations: Description100.0%46 of 46 names
  • Fact Prefix to Detail Suffix100.0%37 of 37 names
  • Expand Abbreviations: Customer100.0%18 of 18 names
  • Expand Abbreviations: Percent100.0%4 of 4 names
  • Expand Abbreviations: Number100.0%3 of 3 names

Still to fix

  • Names that clash with another in their schema or table, left for a person to decide0.2%36 of 17,373 names

Model Bindings Remapped: 429

Each Direct Lake model table and column bound to the warehouse table and column its source now lands in, so the model keeps the names its reports and measures use.

Rules applied

  • Table bound to its renamed warehouse table100.0%95 of 95 tables
  • Column bound to its renamed warehouse column100.0%287 of 287 columns
  • Column bound to the warehouse column a SQL query's alias named100.0%47 of 47 columns

Datasets to Warehouse Tables: 26

Each interactive report's datasets written as warehouse tables, loaded once per refresh by one procedure per warehouse instead of queried each time the report runs.

Rules applied

  • Dataset query written as a warehouse table100.0%26 of 26 datasets
  • Table loaded by its warehouse's refresh procedure100.0%26 of 26 tables

Power BI Interactive Reports Written: 17

Each SSRS report that carries over whole, written as a Power BI interactive report: its tables and charts as visuals, its parameters as slicers, and its datasets as tables of an operational Direct Lake model.

Rules applied

  • Report converted whole100.0%17 of 17 reports
  • Visual written100.0%159 of 159 visuals
  • Parameter written as a slicer100.0%12 of 12 parameters
  • Dataset written as a model table100.0%26 of 26 tables

Power BI References Carried: 9,468

The renames stop at the model. Each Direct Lake model reads its renamed tables and columns and keeps every name its reports use, so a report moves onto it with every visual, filter, and measure reading as before.

Rules applied

  • Report matched to its model by the tables it reads94.4%17 of 18 reports
  • Field reference carried onto the Direct Lake model100.0%9,468 of 9,468 references
  • Report whose every reference has its counterpart94.1%16 of 17 reports

Not applicable

  • Uses tables no discovered model holds50.0%1 of 2 reports
  • References fields its source model doesn't hold50.0%1 of 2 reports

Schema Fixes: 221,188 findings

Data types, keys, indexes, and identity columns Fabric refuses as written. Each is rewritten by the design without anyone typing a line.

By category

  • Data types80.9%179,109 of 221,188 findings
  • Constraints11.7%26,055 of 221,188 findings
  • Indexes6.7%14,958 of 221,188 findings
  • Keys0.4%1,045 of 221,188 findings
  • Unsupported objects0.0%21 of 221,188 findings

By rule

  • nchar, nvarchar, and sysname columns66.7%147,648 of 221,188 findings
  • Primary keys10.2%22,769 of 221,188 findings
  • datetime and smalldatetime columns9.6%21,340 of 221,188 findings
  • Unique indexes6.7%14,958 of 221,188 findings
  • Seven digits of fractional seconds3.6%8,071 of 221,188 findings
  • Foreign keys1.2%2,730 of 221,188 findings
  • tinyint columns0.6%1,479 of 221,188 findings
  • Identity columns0.4%1,045 of 221,188 findings
  • Unique constraints0.2%556 of 221,188 findings
  • money and smallmoney columns0.1%432 of 221,188 findings
  • Types with no equivalent0.0%101 of 221,188 findings
  • text, ntext, and image columns0.0%38 of 221,188 findings
  • IDENTITY columns other than BIGINT IDENTITY0.0%21 of 221,188 findings

Code Fixes: 5,448 findings

Statements, functions, hints, pipelines, and report sources Fabric refuses as written. Each is rewritten by a Smart Fix rule or listed for a person, with the reason.

By category

  • Unsupported objects37.7%2,057 of 5,448 findings
  • Query constructs37.5%2,047 of 5,448 findings
  • Procedural6.6%360 of 5,448 findings
  • Data flows5.4%295 of 5,448 findings
  • Transactions4.2%230 of 5,448 findings
  • Data sources1.9%107 of 5,448 findings
  • Functions1.8%103 of 5,448 findings
  • Expression1.5%84 of 5,448 findings
  • Schedule1.2%70 of 5,448 findings
  • Activity0.7%39 of 5,448 findings
  • Orchestration0.6%37 of 5,448 findings
  • Remote and cross-database reads0.3%18 of 5,448 findings
  • Connection0.0%1 of 5,448 findings

By rule

  • Unsupported statement14.8%808 of 5,448 findings
  • Unsupported system function or view12.2%667 of 5,448 findings
  • Table hints9.4%517 of 5,448 findings
  • Table variables8.9%486 of 5,448 findings
  • Table-valued parameter8.5%464 of 5,448 findings
  • OUTPUT clause6.8%374 of 5,448 findings
  • Data flow destinations in SQL Server3.2%178 of 5,448 findings
  • Transaction isolation level2.5%137 of 5,448 findings
  • Temporary tables read with the wrong type of table2.4%132 of 5,448 findings
  • INSERT ... EXEC2.2%121 of 5,448 findings
  • Data flow transformations2.1%117 of 5,448 findings
  • Recursive common table expressions2.0%114 of 5,448 findings
  • FOR XML1.9%108 of 5,448 findings
  • Shared Data Sources1.9%107 of 5,448 findings
  • Cursors1.9%104 of 5,448 findings
  • Index statements1.7%93 of 5,448 findings
  • Catalog views and user tables in one statement1.6%89 of 5,448 findings
  • Query hints the warehouse does not support1.5%84 of 5,448 findings
  • Globals!ExecutionTime1.5%84 of 5,448 findings
  • Unsupported system procedure1.5%82 of 5,448 findings
  • An Update After an Insert in One Transaction1.3%72 of 5,448 findings
  • Schedules with no end date1.2%70 of 5,448 findings
  • @@IDENTITY, SCOPE_IDENTITY, and IDENT_CURRENT0.9%52 of 5,448 findings
  • Scalar functions the warehouse cannot inline0.8%47 of 5,448 findings
  • Precedence constraints joined by OR0.6%36 of 5,448 findings
  • Multi-statement table-valued functions0.6%35 of 5,448 findings
  • Table definitions and ALTER TABLE forms0.6%34 of 5,448 findings
  • Extended and OLE Automation procedures0.4%24 of 5,448 findings
  • Analysis Services command steps0.4%22 of 5,448 findings
  • Sequences0.3%21 of 5,448 findings
  • Distributed and marked transactions, and savepoints0.3%21 of 5,448 findings
  • TOP in INSERT, UPDATE, or DELETE0.3%17 of 5,448 findings
  • Scalar Functions Called Where the Warehouse Limits Them0.3%17 of 5,448 findings
  • FOR JSON inside a subquery0.2%16 of 5,448 findings
  • Linked servers0.2%15 of 5,448 findings
  • Service Broker0.2%13 of 5,448 findings
  • Global temporary tables0.1%9 of 5,448 findings
  • OPENXML0.1%9 of 5,448 findings
  • SET ROWCOUNT0.1%8 of 5,448 findings
  • WAITFOR0.1%8 of 5,448 findings
  • File system and flexible file tasks0.1%7 of 5,448 findings
  • Work with no Fabric activity0.1%7 of 5,448 findings
  • Objects the warehouse does not have0.1%6 of 5,448 findings
  • What a Scalar Function Body Can't Contain0.0%4 of 5,448 findings
  • OPENQUERY, OPENDATASOURCE, and OPENROWSET through a provider0.0%3 of 5,448 findings
  • View WITH CHECK OPTION0.0%2 of 5,448 findings
  • Foreach Loop containers0.0%2 of 5,448 findings
  • Multi-column statistics0.0%1 of 5,448 findings
  • Column types a warehouse table cannot store0.0%1 of 5,448 findings
  • For Loop containers0.0%1 of 5,448 findings
  • Precedence constraints that evaluate an expression0.0%1 of 5,448 findings
  • Connection managers that store a password0.0%1 of 5,448 findings

Recommended Renames: 10,474 findings

Names the rename plan recommends for tables, columns, and other objects, following the naming standard. Each one your team accepts is applied in the design and in every line of code that uses the name.

By category

  • Names100.0%10,474 of 10,474 findings

By rule

  • Names from the rename plan100.0%10,474 of 10,474 findings

Decisions to Make: 31,858 findings

Choices that belong to the owner of the estate, such as which relationships become keys and how a type lands, each with its options.

By category

  • Keys74.6%23,788 of 31,858 findings
  • Data types17.3%5,512 of 31,858 findings
  • Functions2.7%862 of 31,858 findings
  • Remote and cross-database reads2.3%750 of 31,858 findings
  • Review2.0%663 of 31,858 findings
  • Direct Lake0.2%82 of 31,858 findings
  • Data flows0.2%78 of 31,858 findings
  • Conformance0.2%68 of 31,858 findings
  • Dimensions0.0%28 of 31,858 findings
  • Configuration0.0%12 of 31,858 findings
  • Schedule0.0%6 of 31,858 findings
  • Activity0.0%5 of 31,858 findings
  • Correctness0.0%3 of 31,858 findings
  • Orchestration0.0%1 of 31,858 findings

By rule

  • Sequences69.6%22,196 of 31,858 findings
  • Types Fabric does not list15.9%5,067 of 31,858 findings
  • Tables with no primary key4.9%1,592 of 31,858 findings
  • The Server's Clock Reads UTC on the Warehouse2.7%862 of 31,858 findings
  • Other databases named by three-part name2.3%750 of 31,858 findings
  • Statements built at run time2.0%661 of 31,858 findings
  • User-defined types1.1%370 of 31,858 findings
  • Calculated Columns on Direct Lake0.2%82 of 31,858 findings
  • A Dimension That Differs Between Databases0.2%68 of 31,858 findings
  • geography and geometry columns0.2%67 of 31,858 findings
  • OLE DB Command transformations0.1%39 of 31,858 findings
  • Slowly Changing Dimension transformations0.1%39 of 31,858 findings
  • A Snowflaked Dimension0.0%28 of 31,858 findings
  • Sensitive parameters and variables0.0%11 of 31,858 findings
  • datetimeoffset columns0.0%8 of 31,858 findings
  • Schedules that start with the Agent or when the processor is idle0.0%6 of 31,858 findings
  • Jobs that read both the local and the UTC server clock0.0%3 of 31,858 findings
  • Code the Parser Could Not Read0.0%2 of 31,858 findings
  • FTP tasks0.0%2 of 31,858 findings
  • Replication agent steps0.0%2 of 31,858 findings
  • Job steps whose environment reference is not their project's0.0%1 of 31,858 findings
  • Packages Fabric could run as they are0.0%1 of 31,858 findings
  • Script tasks0.0%1 of 31,858 findings

Best Practice Advice: 66,870 findings

Practices that do not stop a migration but improve what lands: correctness, maintainability, performance, and model design.

By category

  • Maintainability31.8%21,285 of 66,870 findings
  • Performance24.9%16,669 of 66,870 findings
  • Indexes18.8%12,577 of 66,870 findings
  • Data types13.8%9,290 of 66,870 findings
  • Correctness6.5%4,365 of 66,870 findings
  • Design1.8%1,208 of 66,870 findings
  • Compatibility0.8%585 of 66,870 findings
  • Connection0.3%236 of 66,870 findings
  • Security0.2%159 of 66,870 findings
  • Facts0.1%107 of 66,870 findings
  • Layout0.1%103 of 66,870 findings
  • Code0.1%95 of 66,870 findings
  • Parameter0.0%52 of 66,870 findings
  • Dimensions0.0%37 of 66,870 findings
  • Activity0.0%34 of 66,870 findings
  • Query constructs0.0%33 of 66,870 findings
  • Data sources0.0%31 of 66,870 findings
  • Supportability0.0%2 of 66,870 findings
  • Review0.0%2 of 66,870 findings

By rule

  • Statement Without a Semicolon23.0%15,399 of 66,870 findings
  • Indexes18.8%12,577 of 66,870 findings
  • Performance Risk17.8%11,951 of 66,870 findings
  • uniqueidentifier columns7.1%4,770 of 66,870 findings
  • Values limited to 16 MB6.7%4,520 of 66,870 findings
  • Advised Against5.9%4,002 of 66,870 findings
  • Procedures Without SET NOCOUNT ON4.6%3,082 of 66,870 findings
  • Correctness Risk4.0%2,696 of 66,870 findings
  • SELECT *2.0%1,364 of 66,870 findings
  • Measures a Calculation Group Can Hold1.8%1,208 of 66,870 findings
  • TOP Without ORDER BY1.6%1,082 of 66,870 findings
  • Procedures Named With sp_1.5%1,025 of 66,870 findings
  • Invalid Use0.6%454 of 66,870 findings
  • Column References Without Their Table0.5%375 of 66,870 findings
  • Features Newer Than the Server0.4%332 of 66,870 findings
  • An Expression Written More Than Once0.3%252 of 66,870 findings
  • Features Marked for Removal0.3%236 of 66,870 findings
  • Connections to on-premises systems0.3%236 of 66,870 findings
  • Conditions That Prevent Index Seeks0.2%193 of 66,870 findings
  • Dynamic SQL Built From Variables0.1%114 of 66,870 findings
  • ORDER BY Column Position0.1%110 of 66,870 findings
  • Cursors0.1%104 of 66,870 findings
  • Fonts0.1%101 of 66,870 findings
  • Embedded Code0.1%95 of 66,870 findings
  • Long Text on a Fact Table0.1%86 of 66,870 findings
  • Dirty Reads0.0%61 of 66,870 findings
  • NOT IN Over a Subquery0.0%53 of 66,870 findings
  • Date and Time Parameters0.0%52 of 66,870 findings
  • Security Risk0.0%45 of 66,870 findings
  • A Dimension Without a Single Integer Key0.0%37 of 66,870 findings
  • FILTER as a Filter Argument0.0%35 of 66,870 findings
  • Sequence containers0.0%34 of 66,870 findings
  • Job Steps With Their Own T-SQL0.0%33 of 66,870 findings
  • Rows Inserted One at a Time in a Loop0.0%33 of 66,870 findings
  • Stored Procedure Datasets0.0%31 of 66,870 findings
  • A Fact Table With No Date0.0%21 of 66,870 findings
  • Removed Features0.0%17 of 66,870 findings
  • @@IDENTITY0.0%13 of 66,870 findings
  • Scalar Functions in Conditions0.0%11 of 66,870 findings
  • Filter Applied After Recursion0.0%10 of 66,870 findings
  • The Divide Operator0.0%6 of 66,870 findings
  • IFERROR and ISERROR0.0%3 of 66,870 findings
  • COUNT Where COUNTROWS Counts the Rows0.0%3 of 66,870 findings
  • Code that writes the SSIS catalog's views directly0.0%2 of 66,870 findings
  • Definitions that could not be read0.0%2 of 66,870 findings
  • Subreports0.0%2 of 66,870 findings
  • HASONEVALUE With VALUES0.0%2 of 66,870 findings

Deliver.

Every table, column, view, function, and stored procedure in 50 databases, remediated, translated, and deployed to its Fabric Warehouse. Objects that can’t exist in Fabric, and objects whose source code names something its database doesn’t have, are counted as not applicable and left out of each percentage.

All Objects

99.9%

447,648 of 447,807 deployed · 754 not applicable

Tables

100.0%

24,217 of 24,217 deployed

Columns

99.9%

407,100 of 407,222 deployed

Views

99.8%

11,853 of 11,870 deployed · 1 not applicable

Scalar Functions

99.5%

609 of 612 deployed · 6 not applicable

Stored Procedures

99.5%

3,787 of 3,804 deployed · 741 not applicable

Table Functions

100.0%

82 of 82 deployed · 6 not applicable

Reports and Models

A data workspace and three domain workspaces on Fabric: warehouses built under the new names, Direct Lake models over them, Power BI and paginated reports filed by type and purpose, and an app for each domain.

All Reports and Models

99.3%

7,030 of 7,073 checks passed · 599 not applicable

Warehouse Objects

98.9%

3,822 of 3,864 deployed · 464 not applicable

Report Tables

100.0%

26 of 26 built

Model Tables Traced

100.0%

111 of 111 traced · 2 not applicable

Direct Lake Models

100.0%

9 of 9 deployed and framed

SSRS Data Sources Traced

100.0%

520 of 520 datasets · 105 not applicable

SSRS Queries Rewritten

100.0%

520 of 520 datasets · 90 read renamed names

SSRS Reports Converted

100.0%

199 of 199 · 182 paginated · 17 Power BI interactive

Paginated Reports

99.4%

181 of 182 published

Power BI Interactive Reports

100.0%

17 of 17 deployed, every one whole

Power BI Visuals Remapped

100.0%

1,606 of 1,606 visuals · 26 not applicable

Power BI Reports Remapped

100.0%

16 of 16 deployed over Direct Lake · 2 not applicable

Domain Apps

100.0%

3 of 3 created, reports organized by type and purpose

Warehouse Objects: 98.9%

Tables, views, procedures, and functions of the databases the reports and models read, built in the warehouses the design places them in, under the approved names. 3,822 of 3,864 deployed; 464 not applicable.

Rules applied

  • Tables99.9%2,187 of 2,188 objects
  • Views98.3%551 of 560 objects
  • Stored procedures97.2%1,073 of 1,103 objects
  • Scalar functions66.6%4 of 6 objects
  • Table functions100.0%7 of 7 objects

Not applicable

  • SQL Data Sync procedures that use OUTPUT or @@DBTS, which a Fabric warehouse does not support100.0%464 of 464 objects

Still to fix

  • Tables not yet translated2.3%1 of 42 objects
  • Views not yet translated21.4%9 of 42 objects
  • Stored procedures not yet translated71.4%30 of 42 objects
  • Scalar functions not yet translated4.7%2 of 42 objects

Report Tables: 100.0%

Each interactive report's datasets built as warehouse tables, loaded once per refresh instead of queried each time the report runs. 26 of 26 built.

Rules applied

  • Dataset built as a warehouse table100.0%26 of 26 tables

Model Tables Traced: 100.0%

Each Tabular model table traced through its partitions to the tables and views it loads. 111 of 111 traced; 2 not applicable.

Rules applied

  • Traced through Power Query100.0%85 of 85 tables
  • Traced through a SQL query, parsed100.0%26 of 26 tables

Not applicable

  • Tables of measures or calculated rows, which read no table100.0%2 of 2 tables

Direct Lake Models: 100.0%

Each Tabular model rebuilt as a Direct Lake model over the warehouse, and an operational model over the report tables. Framed means Fabric loaded every table the model reads. 9 of 9 framed.

Rules applied

  • Model written over its warehouse100.0%9 of 9 models
  • View the model reads built as a table100.0%67 of 67 tables
  • Tabular model rebuilt and framed100.0%5 of 5 models
  • Operational model framed100.0%4 of 4 models

SSRS Data Sources Traced: 100.0%

Each dataset traced through its data source to the database it reads. 520 of 520 traced; 105 not applicable.

Rules applied

  • Traced by the database its data source names100.0%520 of 520 datasets

Not applicable

  • Monitoring reports' datasets, whose databases aren't in the estate100.0%105 of 105 datasets

SSRS Queries Rewritten: 100.0%

Each dataset's query written for the warehouse its database lands in, under the approved names; each field keeps its own name, so the report items that read it need no change. 520 of 520 rewritten.

Rules applied

  • Text query rewritten for the warehouse100.0%473 of 473 datasets
  • Stored procedure called by its warehouse name100.0%47 of 47 datasets
  • Renamed table or column read by its new name100.0%503 of 503 names

SSRS Reports Converted: 100.0%

Each report becomes one thing: a Power BI interactive report when every item, dataset, and parameter carries over whole, otherwise a paginated report with every parameter kept. 199 of 199 converted.

Rules applied

  • Converted whole to a paginated report100.0%182 of 182 reports
  • Converted whole to a Power BI interactive report100.0%17 of 17 reports
  • Paginated because a table or chart reads a dataset an interactive report can't hold73.0%133 of 182 reports
  • Paginated because a parameter filters no dataset63.1%115 of 182 reports
  • Paginated because a query can't be built as a table exactly50.0%91 of 182 reports
  • Paginated because a text box or cell shows an expression44.5%81 of 182 reports
  • Paginated because a dataset calls a stored procedure24.1%44 of 182 reports
  • Paginated because a table names no field6.0%11 of 182 reports
  • Paginated because it holds a subreport, line, or image4.9%9 of 182 reports
  • Paginated because one of its features needs a paginated report2.7%5 of 182 reports
  • Paginated because it reads more than one warehouse1.0%2 of 182 reports
  • Paginated because a parameter sets its top count0.5%1 of 182 reports

Paginated Reports: 99.4%

Each SSRS report that stays paginated, published with its data sources connected to the warehouses and every parameter kept, and filed by type and purpose. 181 of 182 published.

Rules applied

  • Dataset connected to its warehouse100.0%493 of 493 datasets
  • Report published and filed99.4%181 of 182 reports

Still to fix

  • An authoring error the service reported100.0%1 of 1 reports

Power BI Interactive Reports: 100.0%

Each SSRS report converted whole to a Power BI interactive report over an operational Direct Lake model, its parameters as slicers. 17 of 17 deployed.

Rules applied

  • Report converted whole100.0%17 of 17 reports
  • Visual written100.0%159 of 159 visuals
  • Parameter written as a slicer100.0%12 of 12 parameters
  • Report deployed over Direct Lake100.0%17 of 17 reports

Power BI Visuals Remapped: 100.0%

A visual counts when every field, filter, and sort it holds has its counterpart in the report's Direct Lake model; a page counts when it and every visual on it do. A visual or page that uses tables or fields its own source model doesn't hold is not applicable. 1,606 of 1,606 visuals and 169 of 169 pages remapped.

Rules applied

  • Visual remapped whole100.0%1,606 of 1,606 visuals
  • Page remapped whole100.0%169 of 169 pages

Not applicable

  • Visuals in reports that use tables no discovered model holds84.6%22 of 26 visuals
  • Visuals that reference fields their source model doesn't hold15.3%4 of 26 visuals

Power BI Reports Remapped: 100.0%

A report is deployed when every reference it holds has its counterpart in its Direct Lake model, so it opens on Fabric as it opened before. A report that uses tables or fields its own source model doesn't hold is not applicable. 16 of 16 deployed; 2 not applicable.

Rules applied

  • Report matched to its model by the tables it reads100.0%17 of 17 reports
  • Report deployed over Direct Lake100.0%16 of 16 reports

Not applicable

  • Uses tables no discovered model holds50.0%1 of 2 reports
  • References fields its source model doesn't hold50.0%1 of 2 reports

Domain Apps: 100.0%

An app for each domain workspace, its reports organized by type and purpose. 3 of 3 created.

Rules applied

  • App created for its workspace100.0%3 of 3 apps
  • Section for each report type100.0%3 of 3 apps

1 The XMS Test Estate is built with real instances of SQL Server, Analysis Services, Reporting Services, and Power BI. The objects in the XMS Test Estate are real and don’t fit into oversimplified archetypes. Semantic Smart Studio™ remediates, reshapes, refactors, and translates all the objects and then deploys them to Microsoft Fabric. The percentages listed above are real and backed by the details listed with them.

Tables: 100.0%

Tables with their keys, constraints, and indexes written for Fabric. 24,217 of 24,217 deployed. An object that cannot exist on Fabric, or whose source code has errors, counts as not applicable; a rule counts as failing only where Fabric still refuses the construct it rewrites.

Rules applied

  • Primary key100.0%22,768 of 22,768 objects
  • Column type100.0%22,642 of 22,642 objects
  • Unique constraint100.0%14,360 of 14,360 objects
  • Index100.0%6,291 of 6,291 objects
  • Foreign key100.0%1,411 of 1,411 objects
  • Identity column100.0%1,340 of 1,340 objects

Columns: 99.9%

Each source type as Fabric holds it. A column counts when its table built. 407,100 of 407,222 deployed. An object that cannot exist on Fabric, or whose source code has errors, counts as not applicable; a rule counts as failing only where Fabric still refuses the construct it rewrites.

Source types

  • datetime → datetime2100.0%21,197 of 21,197 objects
  • timestamp → varbinary100.0%4,876 of 4,876 objects
  • uniqueidentifier100.0%4,738 of 4,738 objects
  • tinyint → smallint100.0%1,438 of 1,438 objects
  • varbinary100.0%1,028 of 1,028 objects
  • char100.0%983 of 983 objects
  • date100.0%725 of 725 objects
  • User-defined alias types100.0%370 of 370 objects
  • nchar → char100.0%317 of 317 objects
  • float100.0%256 of 256 objects
  • binary → varbinary100.0%165 of 165 objects
  • sysname → varchar100.0%102 of 102 objects
  • xml → varchar(max)100.0%100 of 100 objects
  • geography → varbinary(max)100.0%66 of 66 objects
  • text → varchar(max)100.0%33 of 33 objects
  • smallmoney → decimal100.0%28 of 28 objects
  • hierarchyid → varchar(max)100.0%22 of 22 objects
  • time100.0%22 of 22 objects
  • real100.0%13 of 13 objects
  • datetimeoffset → datetime2100.0%8 of 8 objects
  • image → varbinary(max)100.0%3 of 3 objects
  • ntext → varchar(max)100.0%2 of 2 objects
  • geometry → varbinary(max)100.0%1 of 1 objects
  • smalldatetime → datetime2100.0%1 of 1 objects
  • bigint99.9%82,631 of 82,632 objects
  • int99.9%96,249 of 96,267 objects
  • nvarchar → varchar99.9%146,484 of 146,517 objects
  • numeric99.9%26,192 of 26,199 objects
  • datetime299.9%10,311 of 10,315 objects
  • decimal99.8%3,682 of 3,689 objects
  • varchar99.7%3,543 of 3,552 objects
  • bit99.0%836 of 844 objects
  • smallint95.3%287 of 301 objects
  • money → decimal94.9%391 of 412 objects

Views: 99.8%

Views translated to Fabric T-SQL. 11,853 of 11,870 deployed; 1 not applicable. An object that cannot exist on Fabric, or whose source code has errors, counts as not applicable; a rule counts as failing only where Fabric still refuses the construct it rewrites.

Rules applied

  • Name from Remediate Objects100.0%10,103 of 10,103 objects
  • Type the warehouse stores100.0%1,497 of 1,497 objects
  • Columns for SELECT *100.0%137 of 137 objects
  • xml method reads the column cast to XML100.0%58 of 58 objects
  • @@LANGID written as the warehouse's language100.0%52 of 52 objects
  • FOR XML concatenation written with STRING_AGG100.0%28 of 28 objects
  • Date arithmetic written with DATEADD100.0%13 of 13 objects
  • Table hint100.0%6 of 6 objects
  • Option the warehouse does not take100.0%2 of 2 objects

Not applicable to Fabric

  • Source code errors: names an object or column its database does not have100.0%1 of 1 objects

Still to fix

  • Reads an object the source estate does not have52.9%9 of 17 objects
  • Reads an object that did not build41.1%7 of 17 objects
  • Date and number arithmetic5.8%1 of 17 objects

Scalar Functions: 99.5%

Scalar functions written so the warehouse can inline them. 609 of 612 deployed; 6 not applicable. An object that cannot exist on Fabric, or whose source code has errors, counts as not applicable; a rule counts as failing only where Fabric still refuses the construct it rewrites.

Rules applied

  • Scalar function created WITH INLINE = AUTO100.0%618 of 618 objects
  • Type the warehouse stores100.0%128 of 128 objects
  • Scalar function written as one expression100.0%86 of 86 objects
  • Name from Remediate Objects100.0%6 of 6 objects
  • Table hint100.0%5 of 5 objects
  • Option the warehouse does not take100.0%4 of 4 objects
  • FOR XML concatenation written with STRING_AGG100.0%3 of 3 objects
  • xml method reads the column cast to XML100.0%1 of 1 objects

Not applicable to Fabric

  • Change data capture and change tracking66.6%4 of 6 objects
  • Server administration33.3%2 of 6 objects

Still to fix

  • A function or variable Fabric does not offer100.0%3 of 3 objects

Stored Procedures: 99.5%

Procedural code translated for Fabric. 3,787 of 3,804 deployed; 741 not applicable. An object that cannot exist on Fabric, or whose source code has errors, counts as not applicable; a rule counts as failing only where Fabric still refuses the construct it rewrites.

Rules applied

  • Type the warehouse stores100.0%2,511 of 2,511 objects
  • Temporary table of the type its statements need100.0%711 of 711 objects
  • XACT_ABORT setting100.0%692 of 692 objects
  • Option the warehouse does not take100.0%641 of 641 objects
  • Table hint100.0%479 of 479 objects
  • Table variable written as a temporary table100.0%472 of 472 objects
  • Name from Remediate Objects100.0%352 of 352 objects
  • Column type of a table the code creates100.0%241 of 241 objects
  • Columns for SELECT *100.0%192 of 192 objects
  • ERROR_LINE() written as line 0100.0%168 of 168 objects
  • Isolation level100.0%136 of 136 objects
  • Recursive common table expression written as a loop100.0%101 of 101 objects
  • Sequence values reserved from the allocator100.0%101 of 101 objects
  • Index or lock escalation statement removed100.0%89 of 89 objects
  • INSERT ... EXEC written as INSERT ... SELECT100.0%85 of 85 objects
  • Column default supplied in the INSERT100.0%65 of 65 objects
  • Cursor written as a numbered temporary table100.0%64 of 64 objects
  • Query hint100.0%50 of 50 objects
  • Existence check written as DROP TABLE IF EXISTS100.0%49 of 49 objects
  • Identity column of a table the code creates100.0%49 of 49 objects
  • FOR XML concatenation written with STRING_AGG100.0%42 of 42 objects
  • XACT_STATE written from @@TRANCOUNT100.0%41 of 41 objects
  • Date arithmetic written with DATEADD100.0%26 of 26 objects
  • @@PROCID written as the module's own id100.0%11 of 11 objects
  • Table function's statements run in the call's place100.0%9 of 9 objects
  • FOR JSON subquery written with JSON_OBJECT100.0%7 of 7 objects
  • OUTPUT read through the rows' keys100.0%7 of 7 objects
  • Name of its own database100.0%4 of 4 objects
  • TOP in UPDATE or DELETE chosen by the key100.0%4 of 4 objects
  • @@LANGID written as the warehouse's language100.0%3 of 3 objects
  • Row-by-row loop written as one INSERT100.0%3 of 3 objects
  • xml method reads the column cast to XML100.0%3 of 3 objects
  • Global temporary table made a session one100.0%1 of 1 objects
  • IDENTITY function written as a row number100.0%1 of 1 objects
  • Statistics created one column at a time100.0%1 of 1 objects
  • SCOPE_IDENTITY() read back by the key90.0%9 of 10 objects

Not applicable to Fabric

  • SQL Data Sync objects62.6%464 of 741 objects
  • Server administration26.7%198 of 741 objects
  • Source code errors: names an object or column its database does not have2.5%19 of 741 objects
  • Instance and file system procedures2.4%18 of 741 objects
  • Service Broker1.4%11 of 741 objects
  • Change data capture and change tracking1.3%10 of 741 objects
  • Full-text search0.9%7 of 741 objects
  • Linked servers0.9%7 of 741 objects
  • Calls a procedure that cannot exist on Fabric0.9%7 of 741 objects

Still to fix

  • A function or variable Fabric does not offer52.9%9 of 17 objects
  • Other constructs not yet translated47.0%8 of 17 objects

Table Functions: 100.0%

Table functions translated for Fabric. 82 of 82 deployed; 6 not applicable. An object that cannot exist on Fabric, or whose source code has errors, counts as not applicable; a rule counts as failing only where Fabric still refuses the construct it rewrites.

Rules applied

  • Type the warehouse stores100.0%41 of 41 objects
  • Table function written as an inline table function100.0%15 of 15 objects
  • Table hint100.0%15 of 15 objects
  • Columns for SELECT *100.0%6 of 6 objects
  • Identity column of a table the code creates100.0%4 of 4 objects
  • Date arithmetic written with DATEADD100.0%1 of 1 objects
  • FOR JSON subquery written with JSON_OBJECT100.0%1 of 1 objects
  • xml method reads the column cast to XML100.0%1 of 1 objects

Not applicable to Fabric

  • Change data capture and change tracking100.0%6 of 6 objects
Learn More
Discover. Design. Deliver.

The Three Pillars of Semantic Smart Studio™.

Modules that carry an estate from its first connection to a deployed warehouse, model, and report.

🔍

Discover.

Know what your estate holds and how each piece feeds the next.

Smart Connect™ uses one connection per platform to reach every instance it can. Isolated servers, such as finance and HR, get their own connections. Credentials stay on your network.

Smart Discovery™ reads SQL Server databases, Integration Services packages, Agent jobs, and replication, along with Analysis Services Tabular and Multidimensional models, Reporting Services, and published Power BI reports. It traces lineage column by column, from the furthest source to the report item, and writes an estate runbook a person can read and print.

Smart Catalog™ holds every instance, database, object, and field that discovery found, searchable in one place, and includes when the discovered item was first and last seen.

Smart Scope™ grades every object on the work it needs, sets what is in scope and what is not, stores the reason for each decision, and compares the effort with a consulting firm, your own team, and the platform.

🚀

Deliver.

Put the new models and reports in front of the business, with the numbers checked against the originals.

Smart Semantic™ turns each Analysis Services model into a Direct Lake model and converts Multidimensional calculations from MDX to DAX. It can merge many models into one, folding repeated measures into calculation items while each measure keeps its name, so existing reports keep working. Every measure is compared with the original cube or tabular model, in total and by year.

Smart Report™ grades each Reporting Services report, reads the execution log to show which reports are used, rewrites paginated reports for Fabric, and rebuilds Power BI reports on the new Direct Lake models, naming anything the new model doesn't hold.

SQL Server Delivery allows customers to move from one SQL Server to another. The platform builds the new databases from your plan, and the gateway agent creates them on the servers you name. It never writes to an existing database, and it stays off until you turn it on.

Smart Geo™

Official geography, demographics, and economics, comparable across countries at any level and ready to join to any model or report. Licensed with the platform or on its own.

Every Result Explains Itself

Each finding, grade, and proposed change carries the rule that produced it, the reason, and the evidence. Where discovery can't establish a fact, such as lineage it couldn't resolve or an effort it hasn't measured, the platform says so instead of guessing.

Learn More
Enterprise Security

Security Built Around Your Boundary.

Engineered for regulated enterprise environments. Your customer records and transactional data never leave your security boundary.

Outbound-Only Connection

The gateway agent runs inside your network and opens one outbound HTTPS connection to the service. No inbound firewall rule is needed. Credentials stay in your Windows credential vault, and discovery only reads your platforms.

Metadata Only

We never see, move, or store your customer records or transactional data. Semantic Smart Studio™ operates exclusively on structural metadata—such as schema definitions, functions, stored procedures, and constraints—keeping your underlying data completely isolated within your secure environment. Business data moves from your sources into your Fabric inside your boundary, never through XMS Analytics.

Your Identity Provider

Sign-in uses your organization's own identity provider. Fabric work, such as creating workspaces, warehouses, and mirrored databases, runs under your own Microsoft sign-in, so your security policies govern every change the platform makes.

Signed and Approved

The agent ships as one signed Windows Installer package that can be rolled out through Intune, Configuration Manager, or Group Policy. A machine joins only after an administrator approves it in the browser, and deployments to production capacities need an approver.

Learn More
TRANSPARENT ENTERPRISE LICENSING

Modular Architecture. Transparent Scale.

Each suite builds on the one before: Discovery is the foundation, Design builds on what it finds, and Delivery puts the result in front of the business.

DATA ESTATE MAPPING & READINESS

Discovery Suite

Learn what the estate holds, how every column flows from source to report, and where the work is, before a line of target code is written.

INCLUDED MODULES Smart Connect™ • Smart Discovery™ • Smart Catalog™ • Smart Scope™
  • Databases, Integration Services packages, Agent jobs, replication, Analysis Services models, Reporting Services, and published Power BI reports
  • Column-level lineage from the furthest source to the report item
  • A printable estate runbook and one search across everything discovery found
  • Every object graded on its work, with scope decisions and their reasons kept
  • Effort compared across a consulting firm, your own team, and the platform
ANALYTICS & VISUALIZATION

Delivery Suite

Direct Lake models that keep every measure's name, and reports rebuilt to use them.

INCLUDED MODULES Smart Connect™ • Smart Semantic™ • Smart Report™ • SQL Server Delivery
  • Analysis Services models rebuilt as Direct Lake models, with MDX calculations converted to DAX
  • Many models merged into one, repeated measures folded into calculation items
  • Every measure compared with the original cube, in total and by year
  • Reporting Services reports graded and rewritten for Fabric; Power BI reports rebuilt on the new models
  • New SQL Server databases built from an approved plan, off until you turn it on

Smart Geo™ is included in the full platform bundle, and available with any suite or on its own.

DATA ESTATE ENDPOINTS

Licensed by Endpoint, Not by Database

Every license includes 50 endpoints, shared by every suite you license. An endpoint is one instance of a data, analytics, or reporting platform, such as a SQL Server instance, an Analysis Services instance, or a report server, with no limit on the databases, models, or reports it holds. Larger estates add endpoints in packs of 50, at the same price for every customer, with no ceiling. License all three suites together as one platform bundle, Smart Geo™ included.