Video Screencast Help
Symantec to Separate Into Two Focused, Industry-Leading Technology Companies. Learn more.

Inventory Solution Policies to Avoid Issue TECH187623

Created: 22 Aug 2012 • Updated: 11 Oct 2012 | 12 comments
Language Translations
Joel Smith's picture
+4 4 Votes
Login to vote

Issue:

We have seen a variety of issues where data that is initially captured from an Inventory Policy is subsequently removed from the database. In most cases the first inventory capture works, but any subsequent ones send up blank data, stripping certain data from the affected machine. A good example is Processor data. The initial inventory captures the data and the system shows in any Processor-based reports, but when the next inventory runs, that data is removed from the database.

Applicable Versions: 7.1, 7.1 SP1, 7.1 SP2

Cause:

These issues are caused by a number of defects, currently being investigated by development (this statement posted on 8/15/2012 and may be superseded by a development fix in the form of a point-fix or upgrade that resolves the issues). The causes vary depending on which issue is seen. In most cases the Inventory Agent fails to load one of its supporting DLLs, such as InvApi.dll, or InvProvider.dll.

Resolution:

As stated previously, development is working to resolve this issue by fixing the defects in the code. Since the issue is not fixed, and the severity puts into question the accuracy of reports and the like, a work around has been found that will allow all inventory data affected by this to be captured successfully. This workaround uses the local InvSoln.exe utility to run inventory. This utility was added in 7.1 to give administrators the ability to run Inventory via command-line at the client side to aid in quick captures and troubleshooting. Interestingly, this method also does not have the issue plaguing the default Inventory Policies.

Workaround:

A customer working with Inventory inadvertently found a way to work around this issue. Using InvSoln.exe allows the data missing from the default policies to be properly captured. The following process creates Managed Delivery Policies to capture inventory, utilizing this client-side Inventory utility. Please note that the full process should be followed to ensure the default policies do not interfere and remove the data again.

Preparation

The following steps create a "dummy" package to be used as an anchor for the delivery policy.

  1. Create a directory on the NS with only a simple txt file therein (this will be a dummy package used to utilize the Managed Delivery Policies).
  2. In the Symantec Management Console, browse under Manage > Software.
  3. Right-click in the Installed Software box in the upper left and select Manage Software Catalog.

IMPORTANT! Please note that it may seem relevant to deviate from these provided steps, however these were create understanding how the different pieces interact. The steps should be followed as listed, and the settings provide should be used as indicated.

64-bit Component

The following resource is created for Inventory Agents installed on 64-bit Windows operating systems.

  1. Click Add under Newly discovered / undefined software and choose Software Release.
  2. Provide a Name, such as InvSoln.exe Full Inventory.
  3. Under version, provide 1.0 (this can be incremented as changes are made, if so desired).
  4. In the Company field, type Symantec and choose Symantec from the dropdown.

  5. Click on the Package tab.
  6. Click Add Package.
  7. Provide a name, such as InvSoln Inventory Package, no content.
  8. Change the Package Source to Access package from a directory on the Notification Server.
  9. Type in the path to the folder previously created, or use the Browse feature to browse to it.
  10. Click Display Location, and you should see the name of the text file found within the folder.

  11. Click on the Package Server tab.
  12. Under the Assign package to: dropdown, select All Package Servers.
  13. Click OK to save the Package.
  14. Click Add Command.
  15. Provide a name, such as InvSoln Full Inventory Execution.
  16. Uncheck the requirement "Command line requires a package".
  17. Set Installation file type to <other>.
  18. Provide the following command line:
    "C:\Program Files (x86)\Altiris\Altiris Agent\Agents\Inventory Agent\InvSoln.exe" /fi
  19. Repeat the steps for each default Inventory Policy to run, such as:
    "C:\Program Files (x86)\Altiris\Altiris Agent\Agents\Inventory Agent\InvSoln.exe" /dhi
    "C:\Program Files (x86)\Altiris\Altiris Agent\Agents\Inventory Agent\InvSoln.exe" /dswi
    These cover Full Inventory, Delta Hardware Inventory, and Delta Software Inventory.
  20. If you wish to use a custom policy, the command-line must be customized. The following is an example of what it would look like:
    "C:\Program Files (x86)\Altiris\Altiris Agent\Agents\Inventory Agent\InvSoln.exe" /i "C:\Program Files (x86)\Altiris\Altiris Agent\Agents\Inventory Agent\InvTaskConfig\Name of Custom Policy.xml"
  21. Click on the Rules tab.
  22. Click *New next to the Applicability Rule dropdown.
  23. Provide a name, such as InvSoln 64-bit Applicability.
  24. Click the blue + button and choose Registry Key Value.
  25. Set the Registry key path: HKEY_LOCAL_MACHINE\SOFTWARE\Altiris\Altiris Agent\Plugin Objects\Agents\InvAgent
  26. Set the Registry entry: Install Path
  27. Set the Registry value: C:\Program Files (x86)\Altiris\Altiris Agent\Agents\Inventory Agent\InvAgent.dll
    NOTE: If a custom install path was chosen, this value may be different.

  28. Click OK and OK again to save the Applicability Rule.
  29. Click OK to save all changes to the new Software Component.

32-bit Component

The following resource is for Inventory Agents installed on 32-bit Windows operating systems.

  1. Click Add under Newly discovered / undefined software and choose Software Release.
  2. Provide a Name, such as InvSoln.exe x86 Full Inventory.
  3. Under version, provide 1.0 (this can be incremented as changes are made, if so desired).
  4. In the Company field, type Symantec and choose Symantec from the dropdown.
  5. Click on the Package tab.
  6. Click Add Package.
  7. Provide a name, such as InvSoln x86 Inventory Package, no content.
  8. Change the Package Source to Access package from a directory on the Notification Server.
  9. Type in the path to the folder previously created, or use the Browse feature to browse to it.
  10. Click Display Location, and you should see the name of the text file found within the folder.
  11. Click on the Package Server tab.
  12. Under the Assign package to: dropdown, select All Package Servers.
  13. Click OK to save the Package.
  14. Click Add Command.
  15. Provide a name, such as InvSoln x86 Full Inventory Execution.
  16. Uncheck the requirement "Command line requires a package".
  17. Set Installation file type to <other>.
  18. Provide the following command line:
    "C:\Program Files\Altiris\Altiris Agent\Agents\Inventory Agent\InvSoln.exe" /fi
  19. Repeat the steps for each default Inventory Policy to run, such as:
    "C:\Program Files\Altiris\Altiris Agent\Agents\Inventory Agent\InvSoln.exe" /dhi
    "C:\Program Files\Altiris\Altiris Agent\Agents\Inventory Agent\InvSoln.exe" /dswi
    These cover Full Inventory, Delta Hardware Inventory, and Delta Software Inventory.
  20. If you wish to use a custom policy, the command-line must be customized. The following is an example of what it would look like:
    "C:\Program Files\Altiris\Altiris Agent\Agents\Inventory Agent\InvSoln.exe" /i "C:\Program Files\Altiris\Altiris Agent\Agents\Inventory Agent\InvTaskConfig\Name of Custom Policy.xml"
  21. Click on the Rules tab.
  22. Click *New next to the Applicability Rule dropdown.
  23. Provide a name, such as InvSoln non-64-bit Applicability.
  24. Click the blue + button and choose Registry Key Value.
  25. Set the Registry key path: HKEY_LOCAL_MACHINE\SOFTWARE\Altiris\Altiris Agent\Plugin Objects\Agents\InvAgent
  26. Set the Registry entry: Install Path
  27. Set the Registry value: C:\Program Files\Altiris\Altiris Agent\Agents\Inventory Agent\InvAgent.dll
    NOTE: If a custom install path was chosen, this value may be different.
  28. Click OK and OK again to save the Applicability Rule.
  29. Click OK to save all changes to the new Software Component.

Managed Delivery Policy

The following steps create a Managed Policy that will properly detect which execution needs to be run so that the proper paths are used based on the platform type.

  1. In the Symantec Management Console browse under Manage > Policies.
  2. Browse under Software > right-click on Managed Software Delivery > and choose New > Managed Software Delivery.
  3. Provide a name, such as: InvSoln Full Inventory Work-around Policy.
  4. Under the Policy Rules/Actions, click +Add > Software.
  5. Use the upper-right search and look for InvSoln.
  6. Locate the 64-bit package created, such as: InvSoln.exe Full Inventory and click OK.
  7. Under the Policy Rules/Actions, click +Add > Software.
  8. Use the upper-right search and look for InvSoln.
  9. Locate the 32-bit package created, such as: InvSoln.exe x86 Full Inventory and click OK.
  10. Click to highlight the first Software Component in the list.
  11. Under the Remediation settings section, click the dropdown and choose the command line, such as: InvSoln.exe Full inventory Execution.

    NOTE: Ignore the warning displayed.

  12. Click the Advanced button.
  13. Click the Run tab, and change the Display window: to Hidden.
  14. Click on the Results-based actions and change "Upon Failure" to Continue.
    NOTE: This is vital to ensure any system attempts both Applicability checks, to ensure they run their proper platform type inventory, whether 32 or 64-bit.
  15. Click OK to save the changes to the Advanced Settings.
  16. Click to highlight the second Software Component in the list.
  17. Under the Remediation settings section, click the dropdown and choose the command line, such as: InvSoln x86 Full inventory Execution.

    NOTE: Ignore the warning displayed.

  18. Click the Advanced button.
  19. Click the Run tab, and change the Display window: to Hidden.
  20. Click on the Results-based actions and change "Upon Failure" to Continue.
    NOTE: This is vital to ensure any system attempts both Applicability checks, to ensure they run their proper platform type inventory, whether 32 or 64-bit.
  21. Click OK to save the changes to the Advanced Settings.
  22. To Save current progress, click the Save changes button.
  23. Expand the Applied to section using the right arrow button.
  24. Click Apply to > and choose Computers.
  25. Click Add rule under the Filtering Rules section.
  26. Use the following settings: THEN: exclude computers not in - Filter - Search for "Windows Computers with Inventory Plug-in.
  27. Click Update results to ensure the target is returning the expected number of systems.
  28. Click OK to save the target parameters.
  29. Expand the Schedule section using the right arrow button.
  30. Though no Compliance check will occur, a schedule must be set in the Compliance section. In this case you should set a schedule that fits your infrastructure's needs, such as: Start 18:00 Repeat weekly on Mon.

  31. If you wish to have Inventory run immediately the first time, also create a Schedule Time and set it to some time in the past, such as: 01:00, no Repeat (Start date under Advanced is either the same day or a previous date).
  32. Leave Remediation to occur immediately.
  33. Turn the Policy on, and then click Save changes to put the policy into effect.

Repeat the Policy process to include other Inventory types, such as Delta, Hardware only, custom, etc. The only difference in configuration is what command-line you choose within the Policy, and the name of the policy should be unique and easily recognizable.

Conclusion

While this process is not perfect, and this is only meant to work around this serious inventory issue, it should give you Inventory information, allowing you to capture inventory successfully until a permanent code fix can be provided.

Comments 12 CommentsJump to latest comment

EMercado's picture

Very informative article Joel. Is there a reason you are creating a Managed Delivery policy as opposed to a run script task to run the command line? I could see a powershell/VBscript used to determine OS and run the appropiate command line and parameters?

0
Login to vote
masonje's picture

I was thinking the same thing.  I use policies to run task jobs all the time.  Works quite well for us.

That said, this article sort of leads to some strange policy association issues I have noticed at a glance a few times.  Policies on clients and site servers disappear, and then the next client policy refresh, they are back.  I could see that being from some sort of jacked inventory.  It hasn't been a real problem, just a nuisance for us.

0
Login to vote
Mohammad Bamya's picture

Hi Joel,

in a large environment, how can you Throttle the inventory policy using this way?

Mohammad Bamya

0
Login to vote
Pascal KOTTE's picture

Hi, Just modify the schedule to proceed 1 time during a "largest time windows" slot instead of a fixed time. :)

~Pascal @ Kotte.net~ Do you speak French? Et utilisez Altiris: venez nous rejoindre sur le GUASF

0
Login to vote
siddharth.kakkar's picture

Does this defect has effect on 7.0 versions as well.... We are facing problems with the inventory whih no support person is able to resolve.???? Please help.

0
Login to vote
Mohammad Bamya's picture

Hi Pascal.KOTTE,

I mean by throttling inventory is when you can force inventory policy to use low resources from the machine

Mohammad Bamya

0
Login to vote
Joel Smith's picture

Hi Mohammad,

Note that we are referencing existing XML files used by existing policies. Set the associated policy to mark the Resource utilization to Very Low, and that is what the plug-in will use when it executes.

Regards,
Joel

Joel Smith
Symantec Services Group (SSE)
Sr. Principal Support Engineer

+1
Login to vote
Pascal KOTTE's picture

OK, was thinking of load the NS server :) Thanks the answer Joel.

~Pascal @ Kotte.net~ Do you speak French? Et utilisez Altiris: venez nous rejoindre sur le GUASF

0
Login to vote
Pascal KOTTE's picture

Does the latest MP1/SP2 soluce those, and obsolete it?

~Pascal @ Kotte.net~ Do you speak French? Et utilisez Altiris: venez nous rejoindre sur le GUASF

0
Login to vote
Joel Smith's picture

Hi Pascal,

That is a good question. Unfortunately the root cause has not been fully discovered for this issue, so the issue remains in 7.1 SP2 MP1 for Inventory Solution. The main error throws an invalid Win32 application message, which is bogus. Investigation continues...

The work-around here should still be used to avoid this issue.

Regards,

Joel

Joel Smith
Symantec Services Group (SSE)
Sr. Principal Support Engineer

0
Login to vote
vinayak patil's picture

Hi All,

My requirement is to push policy on all clients which will run  full inventory after every software  installation and uninstllations (excluding patches.)

i.e in my environment we have policies to run full inventory twice in month . like 1st and 3rd  monday .

if any one install or uninstall any software from system  after 1st Monday of month , NS gets updated only after 3rd monday of week (after running full inventory policy).

i need solution  like after every uninstallation and installation of software jobs should run to send full inventory to  NS server irrespective of schedule.

Regards

0
Login to vote
SK's picture

Create a "Gather Inventory" task and then add it as the last item within your MSD's.

Another option would be to use a custom inventory run script task as the last item within your MSD's, that targets a company key created within the registry which is populated as well as deleted/updated as part of a software install.

Connect Etiquette: "Mark as Solution" those posts which resolve your problem, and give a thumbs up to useful comments, articles and downloads.

0
Login to vote