The Add-CMStateMigrationPoint cmdlet in System Center 2012 Configuration Manager sets an incorrect ServerRemoteName value

Symptoms
When you use the Add-CMStateMigrationPoint Windows PowerShell cmdlet that was introduced in Cumulative Update 1 for System Center 2012 Configuration Manager Service Pack 1 to create a new State Migration Point (SMP), an incorrect ServerRemoteName value is set. Additionally, you receive the following error message in the Smpisapi.log file:

::SecureAccess(pszStorePath, m_sAccessAccount, dwAccess, bGrantAccess), HRESULT=80070043 (e:\nts_sccm_release\sms\server\smp\isapi\smprequesthandler.cpp,941)        smpisapi             

AddACE to store with access account failed for directory \\SMPSTOREM_28C49E47$\FBC02D2321401636EFBD99756C5AAF338C3D018C06B9724EB56B409163928473.                smpisapi             

hr, HRESULT=80070043 (e:\nts_sccm_release\sms\server\smp\isapi\smprequesthandler.cpp,2311)       smpisapi               

Revoke access failed for directory \\SMPSTOREM_28C49E47$\FBC02D2321401636EFBD99756C5AAF338C3D018C06B9724EB56B409163928473.                smpisapi             

StatusRequest::UpdateStatus failed with errorcode (0x80070043)            smpisapi      
Cause
This issue occurs because the Add-CMStateMigrationPoint PowerShell cmdlet incorrectly sets the ServerRemoteName property for the state migration point to the fully qualified domain name (FQDN) of the first server in the hierarchy. Therefore, the client selects the best state migration point by locality (same IP subnet, same Active Directory site, and so on) but then uses the wrong FQDN to communicate with the state migration point.
Resolution
To resolve this issue, use a Windows PowerShell script that resembles the script that is used for the distribution point. For example, use the following script:

Import-Module ($Env:SMS_ADMIN_UI_PATH.Substring(0,$Env:SMS_ADMIN_UI_PATH.Length-5) + '\ConfigurationManager.psd1')
$PSD = Get-PSDrive -PSProvider CMSite
CD "$($PSD):"
$strSiteData = CMSite
$strProviderSiteServer = $strSiteData.ServerName
$strProvSiteCode = $strSiteData.SiteCode
Function Set-Property
{
    PARAM(
        $MPServer,
        $SiteCode,
        $PropertyName,
        $Value,
        $Value1,
        $Value2
    )
    $embeddedproperty_class = [wmiclass]""
    $embeddedproperty_class.psbase.Path = "\\$($MPServer)\ROOT\SMS\Site_$($SiteCode):SMS_EmbeddedProperty"
    $embeddedproperty = $embeddedproperty_class.createInstance()
    $embeddedproperty.PropertyName = $PropertyName
    $embeddedproperty.Value = $Value
    $embeddedproperty.Value1 = $Value1
    $embeddedproperty.Value2 = $Value2
    return $embeddedproperty
}
 
$query = "SELECT * FROM SMS_SCI_SysResUse WHERE RoleName like '%Migration%'"
$objQueryResult = Get-WmiObject -ComputerName $strProviderSiteServer -Namespace "ROOT\SMS\Site_$strProvSiteCode" -Query $query
   

foreach ($smp in $objQueryResult)
{
    $UpdateSMP = $False
    $smp.get()
    foreach ($prop in $smp.props)
    {
        if ($prop.PropertyName -eq "Server Remote Name")
        {
            if ($smp.NetworkOSPath.Substring(2,$($smp.NetworkOSPath.Length-2)) -ne $($prop.Value1))
            {
                Write-Host "Not Similar $($smp.NetworkOSPath) : $($prop.Value1)"
                $smp.Props += [System.Management.ManagementBaseObject](Set-Property -MPServer $strProviderSiteServer -sitecode $strProvSiteCode -PropertyName "Server Remote Name" -value 0 -value1 ($smp.NetworkOSPath.Substring(2,$($smp.NetworkOSPath.Length-2))) -value2 '')
                $UpdateSMP = $True
            }
        }
    }
    if ($UpdateSMP)
    {
        write-host "Update Required for $($smp.NetworkOSPath)"
        $smp.Put()
    }
}


More information
Properties

Article ID: 2891764 - Last Review: 10/21/2013 15:25:00 - Revision: 3.0

Microsoft System Center 2012 Configuration Manager Service Pack 1

  • KB2891764
Feedback