Views:

Symptoms

Following a new install or an upgrade to an existing installation of the Provance IT Asset Management Pack, while managing ITAM data in the System Center Service Manager Management Console, selecting one of the Provance containers inside the Administration or IT Asset Management workspaces may produce an error and display the text “Invalid View” in the main viewport in the SCSM Management Console. Similarly, clicking on a task that shows a Provance form may produce an error with the text “Failed to load form data”.

Cause

This issue occurs when one or more Provance DLLs are deployed incorrectly into the SCSM local cache on the Management Console or the Management Server. These DLLs are required for the Provance forms and views to be displayed properly. When you open the SCSM Management Console, either on the SCSM Management Server itself or on a remote system with the SCSM Management Console installed, you can access the Provance ITAM and DMP features that are installed in your environment. When you access these features, SCSM automatically pulls the DLLs that are required from the SCSM Management Server into a folder in your user’s local profile. In some environments, after a clean install or after an upgrade, this pull is performed incorrectly, and as a result the Invalid View issue appears.

Resolution

Provance is working with Microsoft PSS to identify the underlying problem so that we can get it fixed. In the meantime, we have developed a workaround for this issue. This workaround should eliminate the problem on both the SCSM Management Console and the SCSM Management Server; however, the workaround is only temporary and the problem may occur again later following an upgrade to a new version, at which point the workaround may be re-applied as necessary.

Workaround

Perform the following steps to apply the workaround:

Initial setup

These steps may not be necessary if you are already using PowerShell in your SCSM environment. They must be performed once to make sure everything is set up properly, however if you already have the required configuration you can move on to the next section below.

Ensure PowerShell is configured correctly on the SCSM Management Console

This module requires PowerShell 3 on the system where it is run. PowerShell 3 is installed by default on Windows Server 2012, and it is available as an optional feature on Windows 8. On downlevel OS, it must be installed separately. PowerShell 3 ships with Windows Management Framework (WMF) 3.0, and must be installed on the SCSM Management Console before you can use this module. You can verify your version of PowerShell by invoking the following command in a PowerShell prompt:

$PSVersionTable.PSVersion.Major

If that returns 3 or higher, then you have met the PowerShell version requirement. If not, install PowerShell 3.0 by adding the feature if you are using Windows 8 or by upgrading to WMF 3.0 if you are using a downlevel OS.

Additionally, you must be able to run scripts on your system. In PowerShell, invoke the following command:

Get-ExecutionPolicy

If that command returns anything other than AllSigned, RemoteSigned, or Unrestricted, then you need to enable the execution of scripts on your SCSM Management Console using SetExecutionPolicy. Personally I recommend setting it to RemoteSigned (command: Set-ExecutionPolicy RemoteSigned), however you must make sure you understand the options available to you and pick an execution policy that you are comfortable with.

Ensure that PowerShell Remoting is enabled on the SCSM Management Server

On the SCSM Management Server, invoke the following command:

Enable-PSRemoting

Answer “Yes” to each of the prompts to enable PowerShell remoting on the SCSM Management Server.

Identify your SCSM Management Server as a trusted computer

If your SCSM Management Console is not in the same domain as the SCSM Management Server, you must indicate that the SCSM Management Server is a trusted computer. You can indicate that you trust all remote computers (meaning you know what you’re doing and you don’t want to have to manually specify each computer you want to run remote PowerShell commands against them) by invoking the following command:

Set-Item WSMan:\localhost\Client\TrustedHosts *

If you prefer to control the computers you can connect to, you can set that value to a comma-delimited list of computer names or ip addresses. Note that this is not required for computers that are members of the same domain as the SCSM Management Server.

Create the WindowsPowerShell\Modules folder hierarchy

Ensure that in your Documents folder that you have a “WindowsPowerShell” subfolder, and that the WindowsPowerShell subfolder in turn contains a “Modules” subfolder. Note that there must not be any spaces in the “WindowsPowerShell” subfolder name. Installation of ProvanceSupport module Browse to the ProvanceSupport PowerShell Module web page and follow the installation instructions that are provided on that page to install the Provance Support PowerShell Module. This step should be performed even if you have the ProvanceSupport module installed to ensure that you have the latest version of this module. You can see the version you have installed by invoking the following command in PowerShell:

Get-Module -ListAvailable -Name ProvanceSupport | Format-Table -Property Name,Version

The ProvanceSupport PowerShell Module web page identifies the latest version that is available for download.

Extracting the missing DLLs from the SCSM CMDB

Open PowerShell on the SCSM Management Console where you installed the ProvanceSupport module using an account that has administrative access to the SCSM Management Server and the CMDB database and invoke one of the following two commands:

If you only connect to one SCSM Management Server from this computer:

Export-ProvanceDllFromScsmDb -Path <PathWhereYouWantToStoreTheDlls>  

If you connect to multiple SCSM Management Servers from this computer:

Export-ProvanceDllFromScsmDb -Path <PathWhereYouWantToStoreTheDlls> -ComputerName

<SCSMManagementServerName>

Note that you must replace <PathWhereYouWantToStoreTheDlls>and <SCSMManagementServerName> with the path where you want to store the DLLs (e.g., C:\ProvanceDlls) and the name of your SCSM Management Server (e.g. SCSM1), respectively. This command will pull all DLLs that are included in Provance Management Packs into the path that you provided.

Apply the workaround for the issue

How you workaround this issue will depend on the number of SCSM Management Consoles that you have deployed in your environment. When this issue occurs, it will affect every SCSM Management Console that you have in your environment. If you only have a few, you may prefer the manual workaround. If you have many SCSM Management Consoles however, you may want to use the automated workaround so that you can fix all of those systems at once.

Both the manual and the automated workaround require copying a few DLLs from the folder where you exported the Provance DLLs in the previous step into the SCSM installation directory on the affected systems. You must have the required permissions to be able to copy these DLLs into those folders before you continue.

Manual Workaround

The following steps must be performed once for each computer that has the SCSM Management Console installed:

1. Close the SCSM Management Console on the affected system that you want to repair.

2. Open the folder where you exported the Provance DLLs in the previous step.

3. Copy the following files into the SCSM Installation folder on the affected systems:

From the Provance.ServiceManager.Integration.Library:
Provance.ServiceManager.Data.Presentation.dll
Provance.ServiceManager.Data.Services.dll

From the Provance.ServiceManager.Itam.Core.Library:
Provance.ServiceManager.Base.Presentation.dll
Provance.ServiceManager.Base.Services.dll
Provance.ServiceManager.Itam.Presentation.dll
Provance.ServiceManager.Itam.Services.dll
At this point the workaround has been successfully applied for this version.

Automated Workaround

On every system that has the SCSM Management Console installed, you must first enable PowerShell Remoting. On Windows Server 2012 and later systems, PowerShell Remoting is enabled by default. On all other systems, you must invoke the following command if you have not already done so in your environment:

Enable-PSRemoting

When you invoke that command, answer “Yes” to all prompts. Note that you can enable PowerShell Remoting through Group Policy if you prefer.

[Optional] On the computer where you exported the Provance MP DLLs, invoke the following command:

Test-ProvanceLocalCache -Path <PathWhereYou PreviouslyStoredTheDlls> -ComputerName 
<CommaDelimitedListOfScsmManagementConsoleComputerNames>

This command will use PowerShell Remoting to identify the DLLs that were deployed incorrectly by SCSM.

Also on the computer where you exported the Provance MP DLLs, invoke the following command to apply the workaround: Repair-ProvanceLocalCache -Path < PathWhereYouPreviouslyStoredTheDlls > -ComputerName This command will copy the DLLs that deployed incorrectly from the path you provided into the SCSM Installation Directory on the remote systems that are affected. There is no limit on how many names you can put in the comma-delimited list of console computer names. An example of what that parameter might look like is this: SC1,SC2,SC3. If you want to take extra precautions when you apply the workaround, you can run that command with the -WhatIf parameter, like this:

Repair-ProvanceLocalCache -Path < PathWhereYouPreviouslyStoredTheDlls > -ComputerName
<CommaDelimitedListOfScsmManagementConsoleComputerNames> -WhatIf

Using -WhatIf will make PowerShell tell you what the command would do if you ran it without WhatIf, without actually making any changes to the systems.

At this point, once you have run that last command without -WhatIf, the workaround should be applied successfully. The output from the last command will show you a list of the DLLs that are stored in the local cache and indicate whether they pass or fail the deployment test.

Final Notes

This workaround is a version-specific workaround. Once it has been applied, this issue may occur following an upgrade to another version of Provance. The Invalid View problem is intermittent, and so far it has been my experience that it does not show up in consecutive upgrades, however there are no guarantees that this will not happen twice in a row. If the problem happens again after an upgrade, you can go through these steps to re-apply the workaround for the upgraded version.

Applies to

Microsoft System Center Service Manager 2012
Microsoft System Center Service Manager 2012 SP1
Microsoft System Center Service Manager 2012 R2
Provance IT Asset Management Pack 2.0 and later