cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
davidjenkins
Advocate II
Advocate II

Import-CrmDataFile error: Object reference not set to an instance of an object.

Any time I use the Import-CrmDataFile cmdlet, I get an "Object reference not set to an instance of an object." error message (NullReferenceException). This includes PowerShell on my own machine as well inside of Azure DevOps Pipelines. However, the exact same code runs successfully in PowerShell ISE.

 

Btw, Export-CrmDataFile works in all environments without issue.

 

Wondering if anybody else is facing this issue. I put together this test script that can be tested by anyone in any environment.

 

$VerbosePreference = 'Continue'
$InformationPreference = 'Continue'

# check for required variables
if (-not ($env:CrmUrl -and $env:CrmUser -and $env:CrmPassword -and $env:CrmDataFile)) {
    throw 'Must set environment variables: CrmUrl, CrmUser, CrmPassword, CrmDataFile'
}

# for check to see if current user is assigned the System Administrator security role
$sysAdminQuery = '<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="true">
  <entity name="role">
    <filter type="and">
      <condition attribute="name" operator="eq" value="System Administrator" />
    </filter>
    <link-entity name="systemuserroles" from="roleid" to="roleid" visible="false" intersect="true">
      <link-entity name="systemuser" from="systemuserid" to="systemuserid">
        <filter type="and">
          <condition attribute="systemuserid" operator="eq-userid" />
        </filter>
      </link-entity>
    </link-entity>
  </entity>
</fetch>'

# install ps modules
(Get-Module -Name 'Microsoft.Xrm.Tooling.CrmConnector.PowerShell' -ListAvailable) -or (Install-Module -Name 'Microsoft.Xrm.Tooling.CrmConnector.PowerShell' -Force) | Out-Null
(Get-Module -Name 'Microsoft.Xrm.Tooling.ConfigurationMigration' -ListAvailable) -or (Install-Module -Name 'Microsoft.Xrm.Tooling.ConfigurationMigration' -Force) | Out-Null
Import-Module -Name 'Microsoft.Xrm.Tooling.CrmConnector.PowerShell'
Import-Module -Name 'Microsoft.Xrm.Tooling.ConfigurationMigration'

# test connection
$Connection = Get-CrmConnection -ConnectionString "AuthType=ClientSecret; Url=$env:CrmUrl; ClientId=$env:CrmUser; ClientSecret=$env:CrmPassword"
Write-Host "My user ID is: $($Connection.GetMyCrmUserId())"
Write-Host "I am system administrator: $($Connection.GetEntityDataByFetchSearch($sysAdminQuery) -ne $null)"
Write-Host "Data file: $([System.IO.FileInfo]::new($env:CrmDataFile).Length) bytes"

# import data
Write-Host 'Importing data file...'
Import-CrmDataFile -CrmConnection $Connection -DataFile $env:CrmDataFile -EmitLogToConsole

 

 

The output looks like this:

 

My user ID is: 9e63c21b-bad5-eb11-bacc-000d3a5799ea
I am system administrator: True
Data file: 1145 bytes
Importing data file...
Import-CrmDataFile : Object reference not set to an instance of an object.
At D:\a\_temp\29e74dce-4d76-49f4-9514-c4817cb5d807.ps1:42 char:1
+ Import-CrmDataFile -CrmConnection $Connection -DataFile $env:CrmDataF ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (Microsoft.Xrm.T...portCrmDataFile:ImportCrmDataFile) [Import-CrmDataF
ile], NullReferenceException
+ FullyQualifiedErrorId : -1,Microsoft.Xrm.Tooling.ConfigurationMigration.CmdLets.ImportCrmDataFile
 

 

1 ACCEPTED SOLUTION

Accepted Solutions
davidjenkins
Advocate II
Advocate II

@Rtmaus @DavidJen Good news. The latest version (1.0.0.61) appears to fix the problem.

 

davidjenkins_0-1631576722893.gif

 

View solution in original post

4 REPLIES 4
DavidJen
Microsoft
Microsoft

Hi David

a couple questions:

- are you running your script above in Powershell Desktop/Windows? Currently, the XrmTooling PS modules do not support PS Core yet

- are you running the latest available modules from powershellgallery?

 

If your NullRefExcp persists, please go through your CSS contact (as we discussed offline) and have them attach your data.zip file (with the schema info) and the PS module version to the incident

 

thx

.Dave

Rtmaus
New Member

@DavidJen I am having the same issue as @davidjenkins using Github Actions. 

 

I've tested this on Windows 10 and Windows 2019 (to try and be as close to the GitHub Actions Windows-Latest runner). When run manually it works fine and imports without issue.

 

Running via Github Actions on Windows Latest and using PowerShell Desktop (note the version in the log is ps-version: 5.1.17763.2090) the output from the log file is as follows:

 

2021-08-29T01:14:42.1042064Z VERBOSE: Module 'Microsoft.Xrm.Tooling.ConfigurationMigration' was installed successfully to path 
2021-08-29T01:14:42.1044667Z 'C:\Users\runneradmin\Documents\WindowsPowerShell\Modules\Microsoft.Xrm.Tooling.ConfigurationMigration\1.0.0.60'.
2021-08-29T01:14:42.1769047Z Install done...
2021-08-29T01:14:42.1804106Z Connection String: AuthType=ClientSecret;url=https://***.crm6.dynamics.com;ClientId=***;ClientSecret=***;
2021-08-29T01:14:50.6982204Z Crm connection established: Microsoft.Xrm.Tooling.Connector.CrmServiceClient
2021-08-29T01:14:50.6989495Z Connected to: Microsoft.Xrm.Tooling.Connector.CrmServiceClient
2021-08-29T01:14:50.6996060Z ps-version: 5.1.17763.2090
2021-08-29T01:14:50.7001973Z Importing data...
2021-08-29T01:14:51.1353746Z VERBOSE: Verbose output log file: 'D:\a\_temp\data-logs\Microsoft.Xrm.Tooling.ConfigurationMigration-2021-08-29.log'
2021-08-29T01:14:51.1477658Z Microsoft.Xrm.Tooling.ConfigurationMigration.Powershell Information: 8 : Got CrmWebsvcAction Object from the Pipeline and is in Ready State
2021-08-29T01:14:51.3703403Z Import-CrmDataFile : Object reference not set to an instance of an object.
2021-08-29T01:14:51.3706480Z At D:\a\tarkine\tarkine\pipeline\data-migration\import-data-config-tool.ps1:53 char:1
2021-08-29T01:14:51.3707531Z + Import-CrmDataFile -CrmConnection $ConnectionTarget -DataFile $dataFi ...
2021-08-29T01:14:51.3708547Z + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2021-08-29T01:14:51.3709612Z     + CategoryInfo          : InvalidOperation: (Microsoft.Xrm.T...portCrmDataFile:ImportCrmDataFile) [Import-CrmDataF 
2021-08-29T01:14:51.3710731Z    ile], NullReferenceException
2021-08-29T01:14:51.3712413Z     + FullyQualifiedErrorId : -1,Microsoft.Xrm.Tooling.ConfigurationMigration.CmdLets.ImportCrmDataFile

 

This is using the following:

 

Microsoft.Xrm.Tooling.ConfigurationMigration.Powershell 1.0.0.60

Microsoft.Xrm.Tooling.CrmConnector.PowerShell 3.3.0.928

 

I've set this to verbose and this is all the detail that I get from the logs, both Github and the cmdlet itself.

 

So something odd is going on when run on the windows-latest machines for both DevOps and Github Actions.

 

Rtmaus
New Member

@davidjenkins I identified that the issue is in the v1.0.0.60 package. As PowerShell installs the latest version this was causing the runner to install that version.

 

I overrode the installer with the Required Version command as per below:

Install-Module "Microsoft.Xrm.Tooling.ConfigurationMigration" -RequiredVersion 1.0.0.53

 

Running version 1.0.0.53 works as expected. I suspect that there is something wrong with the 1.0.0.60 within Pipelines. 

davidjenkins
Advocate II
Advocate II

@Rtmaus @DavidJen Good news. The latest version (1.0.0.61) appears to fix the problem.

 

davidjenkins_0-1631576722893.gif

 

View solution in original post

Helpful resources

Announcements
UG GA Amplification 768x460.png

Launching new user group features

Learn how to create your own user groups today!

Community Connections 768x460.jpg

Community & How To Videos

Check out the new Power Platform Community Connections gallery!

M365 768x460.jpg

Microsoft 365 Collaboration Conference | December 7–9, 2021

Join us, in-person, December 7–9 in Las Vegas, for the largest gathering of the Microsoft community in the world.

Users online (3,342)