Giter Site home page Giter Site logo

rdlmigration's Introduction

RdlMigration

This tool is designed to help customers migrate SQL Server Reporting Services reports (RDL) from their local server(s) to a Power BI workspace in their tenant. As part of the migration process, the tool will also:

• Convert any shared datasources and/or shared datasets in these report files to be embedded in the report and save the files locally to disk.

• Check for unsupported datasources or report components when uploading to Power BI

• Save the converted files that pass these checks to a specified Power BI Workspace.

• Provide a summary of the successful and unsuccessful assets migrated

Please note - None of the assets will be removed from the source as part of this process.

Usage:

# RdlMigration <your Base url endpoint> <file Path> <WorkspaceName> <client-id>

This command will save all the converted files to local disk and display the status of each file in the command window, as well as a file called ConversionLog.txt

Examples:

The examples below assume that you are running in a command prompt where the application RdlMigration.exe was copied to. You can get the application by cloning and building this repository, or by downloading the latest build from the 'Releases' tab. See details below on how to find your reportserver endpoint and how to create a Power BI client-id.

• Upload all reports from 'My reports' folder from a native mode installation of SQL Server Reporting Services or Power BI Report Server to 'My Worspace' in powerbi.com.

RdlMigration https://ssrsservername/reportserver "/My Reports" "My Workspace" <client-id>

• Upload all reports from '/Sales' folder from a native mode installation of SQL Server Reporting Services or Power BI Report Server to 'Sales' workspace in powerbi.com.

RdlMigration https://ssrsservername/reportserver "/Sales" "Sales" <client-id>

• Upload all reports from '/Shared Documents/Reports' folder from a sharepoint integrated mode installation of SQL Server Reporting Services to 'Reports' workspace in powerbi.com.

RdlMigration "https://sharepointservername/_vti_bin/reportserver" "https://sharepointservername/Shared Documents/Reports" "Reports" <client-id>

• Upload a single report called MonthlySales from '/Shared Documents/SalesReports' folder from a sharepoint integrated mode installation of SQL Server Reporting Services to 'Reports' workspace in powerbi.com.

RdlMigration "https://sharepointservername/_vti_bin/reportserver" "https://sharepointservername/Shared Documents/SalesReports/MonthlySales.rdl" "Reports" <client-id>

Input details:

Base url endpoint:

This is set in the Reporting Services Configuration Manager under Web Service URL-> Report Server Web Service URL

image

File Path:

This refers to the relative path to your file or folder on the report server. If the path references a file, the tool will convert and push only that individual file. If the path references a folder, the tool will convert and try to push all the report files within that folder. This would include any reports contained in the folder and would convert dependencies that might be located in other folders or subfolders (such as Shared DataSources and Shared DataSets). Report in subfolders will not be published.

Workspace Name:

This is the name of the workspace you want to upload your files to. Surround the name with quotation marks if there’s a space in the name. For example:

"Paginated Workspace"

client-id:

The Application Client ID that gives you permissions to read and write with the Power BI API:

To obtain this, do the following:

  1. Go to https://dev.powerbi.com/apps .

  2. Select Sign in with your existing account then select Next.

  3. Provide an Application Name you want to call it.

  4. Select Native for Application Type

  5. Select the access permissions, for this application the minimum access are Read all Workspaces, Read and write all datasets, Read and write all reports

image

Click Register, and an application ID (Client-ID) will be provided to you.

Link : https://docs.microsoft.com/en-us/power-bi/developer/register-app

NOTE: In some cases, you may need an admin's approval for the app-id to work.

rdlmigration's People

Contributors

aleksandercherepenin avatar cmfinlan avatar dependabot[bot] avatar ericmicrosoft avatar gboreki avatar gborekims avatar jtarquino avatar microsoft-github-policy-service[bot] avatar microsoftopensource avatar msftgits avatar petebro-msft avatar rhysschmidtke avatar yuemyu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rdlmigration's Issues

The request failed with HTTP status 401: Unauthorized.

./RdlMigration.exe http://ssrsserverName/Reportserver "/Reports/RDL Migration Reports" "Paginated Reports"
Starting the log-in window
Log-in successfully, retrieving the reports...
Starting conversion and uploading the reports 1/24/2022 11:41:12 AM
The request failed with HTTP status 401: Unauthorized.

I mentioned everything correctly, few months back the same code executed without any issue but now I am facing the above issue, I don't know where I am missing, if someone could help me to solve this issue will be a great help, thank you.

The underlying connection was closed: An unexpected error occurred on a send

This is the property setting for SSRS on app.config:

http://localhost:80/ReportServer/ReportService2016.asmx

I am able to connect, but when the IsFolder

server.GetItemType(itemPath) == SoapApiConstants.Report

I get the exception The underlying connection was closed: An unexpected error occurred on a send.

Index was out of range

Hello, when I run the tool for certain folder I get and 'Index was out of range error':

Starting the log-in window
Log-in successfully, retrieving the reports...
Starting conversion and uploading the reports 03/09/2020 06:58:56
Found 21 reports to convert
Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index

Any ideas what this refers to?

Bug in dataSetMap Creation

When I run the tool, I get an error indicating that it "can't find corresponding Data Set". When I opened the solution and debugged with breakpoints, I noticed that in the ConvertFileWithDataSet function, it fails when it tries to find the dataset in the datasetmap using the dataset name.

The datasetname variable is set to the actual dataset name but the datasetMap contains an entry that includes the file path in the data set name ("/filepath/datasets/datasetname"). See screenshot. I even tried the latest version of code from 8/15/2022. Please help.

image

image

CI_5291851

Adjustment of SQL embedded data source to SQL Azure

Description:

SQL Azure situation : with a specific set of datasource suffix in connectionstrings ( { ".database.windows.net", ".database.chinacloudapi.cn", ".database.cloudapi.de", ".database.usgovcloudapi.net" }), the "data source provider" in report file need to change from SQL to SQLAzure in order to successfully upload and work in PBI,

Though I handled this situation while converting the shared data source, it is still an issue for embedded data sources with those suffix.

Expected behavior:

as for now it would show failed to upload for those reports with embedded sql azure datasources, the tool should be able to recognize the SQLAzure in both embedded and shared data source and convert them from SQL

Migration Tool Creating Duplicate Data Sources During Conversion Process

I have tried running the migration tool on a report that contains 1 shared data source and 9 shared datasets. The original SSRS report runs fine in production. The output of the migration tool is a report that contains an embedded data source with the same name as the original shared data source, plus 9 additional data sources all with the same name - DataSource0_SQLSentry. Each data source seems to correspond with 1 of the 9 shared datasets pointing to the original shared data source. When the tool tries to upload the converted file, it obviously generates an error indicating that "Data source names must be unique within a report".

Has anyone encountered this issue?

duplicate_datasources
error_message

Is it possible to have shared datasets?

After migration, reports have embedded dataset. It is possible to change (by script or in an automatic way) the embedded dataset in a shared dataset saved in a Power Bi Service?

404 Error and Content Type

We have been trying to run this to convert .rdl files to Power BI and we either get a 404 error or the following error msg:

Client found response content type of 'text/html; charset=utf-8', but expected 'text/xml'.

Any suggestions would be helpful.

Request Failed with 401 Unauthorized Error

./RdlMigration.exe http://ssrsservername/Reportserver "/Reports/RDL Migration Reports" "Paginated Reports"

Starting the log-in window
Log-in successfully, retrieving the reports...
Starting conversion and uploading the reports 1/24/2022 11:41:12 AM
The request failed with HTTP status 401: Unauthorized.

Can someone shed some light on this type of issue?

Shared Data Source Conversion with No Server Mapping or Database Service Entry

Hello,

What we are trying to do:
Convert shared data sources that point to an oracle database into embedded data sources

Issues:

  1. Our SSRS reports have a TNS entry only (service is defined in tnsnames.ora). Power BI Gateway sources must have an entry for identifying the TNS entry and the service name so upon conversion the data source is not usable in the Power BI Service.
  2. After report conversion and upload even if the server entries match it does not map to that gateway entry

I can fix issues 1, 2 manually but we have 1000+ so that is not really viable.

It would be ideal if...

  1. For a given TNS entry the service name could be derived from tnsnames.ora or perhaps even better a default service name.
  2. When "servers" match, auto map an uploaded report with it's matching gateway entry. In the case of multiple matching "servers" then skip?

Kind regards,

Lyle Spencer
Gonzaga University

Newtonsoft.Json

Hi Team, I am getting the below-mentioned error.
Error Message-Could not load file or assembly 'Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x801
31040)

Make use of async methods

Description:

In the current command line application only few async methods are used.
However, in order to be able to incorporate the tool in Windows Applications like report builder, most of the methods have to be async.

Expected behavior:

as the methods become async, the application should not freeze if any of them stuck

Issue with shared datasets

Hi,

I have a report using a shared data source and two shared datasets. The datasets are referring to the same shared data source. The report can be executed successfully, but when I try to migrate it, I always get the error message: "Can't find corresponding Data Set". Is there something specific I need to consider?

Thanks in advance.

Cloned Repo No RdlMigration.exe

"The examples below assume that you are running in a command prompt where the application RdlMigration.exe was copied to."

Hello, I cloned the GitHub repo and was attempting to find the RdlMigration.exe file but have been unable to. Do I need to build this solution beforehand or are there some more guided steps that I can reference?

Specify Directory as source and destination

Good tool!
Would it be possible to use a directory as a source instead of the SSRS service. Similarly for saving converted files, use a directory as the destination instead of the power bi service.
Thanks you

localization via resx

Description:

Now that all exceptions and logs messages are "magic strings". As we concern about localization, they should be put in a resx file for other potential languages and localization.

Client found response content type of 'text/html; charset=UTF-8', but expected 'text/xml'.

Having this issue when running the code.

Specifically: server.GetItemType(itemPath) == SoapApiConstants.Report

Also see that rdlFileIO returns mostly nulls, I am able to connect to the SSRS Repository from the link defined on the App.Config:

  <setting name="RdlMigration_IReportingService2010" serializeAs="String">
    <value>http://localhost:80/ReportServer/ReportService2016.asmx</value>

Any help would be appreciated,
Thanks

SSRS side permissions need?

I am trying to run the package and am getting a permissions error from the SSRS side. I have Browser, Content Manager, My Reports, Publisher, and Report Builder on the SSRS folders and content. I have admin rights on the PBI workspace side. What permissions are necessary on the SSRS side?
Existing SSRS permissions
Script Error

RdlMigration.ReportServerApi.IReportingService2010

Getting this error when trying to compile code

error CS0266: Cannot implicitly convert type 'RdlMigration.ReportServerApi.ReportingService2010' to 'RdlMigration.ReportServerApi.IReportingService2010'. An explicit conversion exists (are you missing a cast?)

Error when running the tool - "[folder] is neither a report nor a folder"

I am getting the error "/Reports is neither a report nor a folder" when I run the application.

I am able to log in successfully and retrieve reports from the server, but the Migration Tool can't seem to read a report in the top level folder:

MicrosoftTeams-image (11)

I've tried various permutations - please let me know what I need to do differently.

Type cast error when attempting to build the code

I am getting this error when attempting to build the code:

Severity Code Description Project File Line Suppression State
Error CS0266 Cannot implicitly convert type
RdlMigration.ReportServerApi.ReportingService2010' to 'RdlMigration.ReportServerApi.IReportingService2010'. An explicit conversion exists (are you missing a cast?) RdlMigration C:\Users\XXXXXXX\Documents\RdlMigration-master\RdlMigration\RdlFileIO.cs 33 Active

Referring to this line of code:

In RdlFileIO.cs

Line 32-38

    public RdlFileIO(string urlEndpoint)
    {
        server = new ReportServerApi.ReportingService2010
        {
            Url = urlEndpoint + SoapApiConstants.SOAPApiExtension,
            UseDefaultCredentials = true
        };
    }

At least one error occurred

from Command Line I only see this error "At least one error occured"; is there any debugging possible to find the root cause ?

Power BI Server support

I find it strange that much of the Microsoft documentation as well as the documentation here doesn't explicitly reference the fact that this is for Power BI Service and not compatible with Power BI Server.

Am I missing something? From looking at the code, there are constants defined which reference the Power BI Service API at a specific URL with no capability, from what I can tell, to reference a local Power BI Server.

More strange to me is that even searches for this issue turn up results that only discuss Power BI Service's API. Is there a reason why the Power BI Server is not referenced when it comes to this subject? Maybe I'm missing something.

All that said, I have a need to migrate RDL's to Power BI Server. Do you have any suggestions of how to accomplish this without having to roll my own transfer util?

One or more errors occurred

I ran the rdlmigration.exe, got the sign in page, then just "one or more errors occurred" and nothing happened until I manually cancel it.

.\RdlMigration.exe https://ireports.friscotexas.gov/reportserver /Application/CCure iReportsMigrate 04562873-c600-4f6c-9f7b-874186b7539f
Starting the log-in window
One or more errors occurred.

There is no detail error message in the conversionLog.txt

Required Home Page URL

I keep getting the following error, when I try and run the RDL Migration tool.

"AADSTS50011: The redirect URI specified in the request does not match the redirect URIs configured for the application."

If you use the link that is listed on the readme file https://dev.powerbi.com/apps it takes you to the following page:

However, when you click Sign In in takes you back to the main Power BI page:

Because I was not able to use that link to complete the app registration, I used the link at the bottom of the page https://docs.microsoft.com/en-us/power-bi/developer/register-app to try and register the app. This led me to a new app registration link which I was able to get logged into. https://app.powerbi.com/embedsetup

However, it then asks for the following information, which does not match the ReadMe file. The ReadMe file asks for a Native Application Type.

And this is what it asks for in the ReadMe file

You can see that I cannot change the application type from this link https://app.powerbi.com/embedsetup

From there I went into Azure and tried to manually configure the app. I tried both the Native and Web App Application Type, however both require a home page URL. However, there is no documentation on what this URL should be. I tried the Power BI service https://app.powerbi.com/, however, that did not work. I also tried the three default web URLs from the Native App Type and none of those worked either.

Any help would be much appreciated as I have about 150 SSRS reports that I need to migrate that all use shared data sources.

Run without migrating?

Is there any way to run the tool without actually performing a migration? In other words, scan a folder - and output a compatibility report - but don't attempt to do the actual upload to PBI?

AADSTS900971: No reply address provided.

I'm getting the error "AADSTS900971: No reply address provided." when trying to login when running the script.
A quick google search tells me that my Redirect URI needs to be configured but I have no idea what to use.

If its of any help, I tried to create the App using the provided link (https://dev.powerbi.com/apps) but when I click Sign-In I just get redirected to "https://powerbi.microsoft.com/en-us/developers/". I'm already logged in to PowerBI and have a valid account / license, so I don't understand why its not signing me in.

So I created my App registration manually on the Azure Portal....but now I'm getting this AADSTS900971 error.

Any help is greatly appreciated.

SRSS Root Directory

Is is possible to run the RDL Migration Tool from the root directory so that it will move all the RDL reports in the folders.

The documentation doesn't have any information if this is possible, but based on the example I'm wondering if this will work. Has anyone tried this?

General Command - RdlMigration "your Base url endpoint" "file Path" "WorkspaceName" "client-id"

Example Command - RdlMigration https://ssrsservername/reportserver "/My Reports" "My Workspace"

Root Command - RdlMigration https://ssrsservername/reportserver "/" "My Workspace"

App Registration Issues

I cannot register an app using the App registration tool documented on https://dev.powerbi.com/apps It keeps returning the error " An unknown network error occurred. Please try again." I have an account on an AD tenant, my account has a Power BI Pro licence and it has been assigned the Power BI Service Administrator permission on the tenant.

Secondly, I create the app on Azure AD but no matter what I choose it is looking for a redirect url. Microsoft describes the redirect url as the URL your're accessing the app from but the app doesn't need to access any url or am I missing something? Finally in app registration > authentication >Advanced settings there is an option to treat the application as a public client for where a redirect URL is not used but this appears to have no impact on the authentication on the app when I run the rdl migration tool on the command prompt. I continue to receive either AADSTS50011 or AADSTS50013 errors.

Unable run this against the CM report server

Hi, wanted to have some assistance maybe, if this work over the CM reports, if is known. I am trying to run this against test environment as we are integration PowerBI with our new CM release 2002, and I wanted to migrate our default reports to PowerBI. Following the instructions given I have an error right after logging.

C:\Users[user]\Desktop\Release>RdlMigration.exe http://servername/ReportServer "/ConfigMgr_000" "CAS_000" xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx
Starting the log-in window
One or more errors occurred.

log is not really helping much, "Starting the log-in window"

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.