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:
@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.
@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.
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
WarrenBelz
87
Most Valuable Professional
mmbr1606
71
Super User 2025 Season 1
Michael E. Gernaey
65
Super User 2025 Season 1