1. Summary
This document is part 2 of my experience with configuring the Symantec Management Platform in my environment. Part 1 may be found here: http://www.symantec.com/connect/articles/how-configure-symantec-management-platform-part-1
This document details the steps I took to configure part of the SMP in my environment. These steps worked flawlessly for me, but should be reviewed with your architect first to ensure they will work for your environment. Most steps will need to be modified based on your requirements for your environment, so please keep that in mind when reading through this article.
2. Pre-requisites
2.1. You must have a functioning SMP installed.
2.2. You need to know the Application Identity (AppId) and password.
2.3. You should login as that account to do all configurations.
3. Import Cost Center
Because our Cost Centers are in a hierarchy, and they are company wide standards, they are maintained by a separate team of people. The cost center hierarchy exists in our ERP system called Banner. Working with the right people, I was able to get a nightly UC4 AppWorx job called FRYALTO. This job creates a csv file that contain the following information comma separated information: “ORG_CODE","PARENT_ORG_CODE","TITLE".
The job then drops the csv file in a shared folder on the SMP. I built the following connector (Data Source and subsequently, Import Rule) to bring in that data, and populate the CMDB. Here are the steps that I took to import the Cost Center Hierarchy into our SMP.
Again, these are my real world examples of how we did it. You will need to modify most steps to fit your requirements, design, and overall environment.
3.1. ClickSettings | All Settings.
3.2. Click Settings | Notification Server | Connector.
3.3. Right-click onData Sources, chooseNew | Folder and call it Custom.
3.4. Right-click the Custom folder and chooseNew | CSV File Data Source.
3.5. Name it FRYALTO Org csv Import Data Source (or whatever you want)
3.6. Edit it to look like this:
3.6.1. Click Test Data source to ensure it connects.
3.6.2. Click Save changes.
3.7. Right-click onImport/Export Rules, chooseNew | Folder and call it Custom.
3.8. Right-click the Custom folder and chooseNew | Resource Import Export Rule.
3.9. Name it FRYALTO Org csv to Cost Center Import Rule.
3.10. Edit it to look like this and have it run whenever you want:
3.10.1. The <Expression> for Cost Center Description and for Cost Center Details Description were both set to the following because we wanted the description for our cost center to be in the format of ‘cost center number followed by an underscore followed by the cost center name’.
4. Import Banner PO
We also import all our Purchase Orders from the same ERP system (Banner) since that is our system of record. Just like for our Cost Center above, we have a job that creates a csv that is dropped in a shared folder on our SMP. The format of the file is: "PO_ITEM","COMM_CODE","COMM_DESC","QTY","REQ_DATE","UNIT_PRICE","PO_DESCRIPTION" . These steps show how I imported all our relevant PO’s into our 7.1 CMDB.
4.1. ClickSettings | All Settings.
4.2. Click Settings | Notification Server | Connector.
4.3. Right-click the Custom folder and chooseNew | CSV File Data Source.
4.4. Name it FRYALTO PO csv Import Data Source
4.5. Edit it to look like this:
4.5.1. Click Save changes.
4.6. Right-click the Custom folder and chooseNew | Resource Import Export Rule.
4.7. Name itFRYALTO PO csv Import Rule.
4.8. Edit it to look like this and have it run whenever you want:
5. Create New PO
During the import of the actual asset data (see down below), I found that there were a few purchase orders (PO’s) that would error out during the import. I discovered that when importing asset data, say, for printers, the connector creates the ‘printer’ asset record, but not necessarily the other data class items, like PO’s. So I had to manually create the PO’s in the CMDB for the import to correctly and completely bring in the entire asset record. Since we had assets in 6.5 that we did not know the PO number, we created a PO called ‘Unknown_PO’ and assigned it to those records. For ‘Unknown_PO’ to import, I had to manually create it in 7.1. These are the steps I followed to create a new PO in our 7.1 environment.
5.1. Click Home | Service and Asset Management | Manage Configuration Items.
5.2. Click Create a new CI in the right pane called Asset Common Tasks.
5.3. Select Purchase Order in the Pop-up and click OK.
5.4. Enter Unknown_PO in the Order Number field and click OK.
6. Asset Status
Before we got into the thick of things, we all met and discussed how we would use Asset Types in the console. In addition to the standard Active, In Stock, Disposed, RMA, et cetera, we decided that we needed a custom Asset Status. These are the steps I used to create our custom status.
6.1. ClickSettings | All Settings
6.2. Click Settings | Service and Asset Management | CMDB Solution
6.3. Click CMDB Global Settings.
6.4. Enter the following custom status values and click Add.
6.4.1. Reserved. Which we will use for systems that are Spare, but will be designated as Reserved for a specific purpose or person/group.
7. Import Location
Because we have a specific subset of locations that contain our assets, we decided to NOT import the thousands of locations from our ERP system. Since the ‘locations’ in our 6.5 environment are pretty solid, I decided to simply import them. These are the steps I followed for the initial load of locations. All additional locations will need to be manually added going forward. Ie. A new building location is built that contains assets we track in Altiris.
Note: To manually add a location, Click onHome | Service and Asset Management | Manage Configuration Items. Then right-click on Organizational Types | Location and select Create Location.
7.1. Click Settings | Notification Server | Connector.
7.2. Right-click the Custom folder and chooseNew | CSV File Data Source.
7.3. Name it 6.5 Location Import Data Source.
7.4. Edit it to look like this:
7.5. Right-click the Custom folder and chooseNew | Resource Import Export Rule.
7.6. Name it65 Location Import Rule.
7.7. Edit it to look like this:
8. Import AV Asset Data
We decided to use connectors instead of the Notification Migration Wizard to migrate data from our 6.5 environment over to 7.1. It may just because I am extremely particular, or because the data we are migrating is extremely ‘unique’ to our environment. Example: My predecessor populated the ‘owner’ of the asset with the ‘cost center’; hence the need to strictly control and scrutinize the import of data. I broke up the asset import based on asset type just to keep it simple (and maintain my sanity). Here are the steps I followed to create the Data Source and Import rule to import the asset data from the 6.5 environment into the 7.1 environment for the Audio Visual (AV) assets.
8.1. ClickSettings | All Settings.
8.2. Click Settings | Notification Server | Connector.
8.3. Right-click the Custom folder and chooseNew | OLEDB Data Source.
8.4. Name it 6.5 Asset Data Import Data Source - AV
8.4.1. Edit it to look like this:
8.4.2. Enter this into the Import query window:
select
vi3.name,
va.status,
va.manufacturer,
va.model,
va.[serial number],
va.barcode,
vl.name AS 'Location',
vi.name AS 'PO',
ci.amount AS 'Cost',
iai.[Available for Use],
iai.[Planned Disposal Date],
SUBSTRING (vi2.name,6,LEN(vi2.name)) AS 'Cost Center Name',
left (vi2.name,4) AS 'Cost Center Code',
com.comment
from vasset va
left join ResourceAssociation ra
on ra.ParentResourceGuid = va._ResourceGuid
and ra.ResourceAssociationTypeGuid ='05DE450F-39EA-4AAE-8C5F-77817889C27C'
left join vLocation vl on ra.ChildResourceGuid = vl._ResourceGuid
left join Inv_Accounting_Information iai
on va._resourceguid = iai._resourceguid
left join Inv_Cost_Items ci
on ci._resourceguid = va._resourceguid
left join vitem vi
on ci.[purchase order] = vi.guid
left join vasset va2
on ci._resourceguid = va2._resourceguid
left join Inv_Ownership_Details iod
on va._resourceguid = iod._resourceguid
left join vitem vi2
on iod.owner = vi2.guid
left join vitem vi3
on va._resourceguid = vi3.guid
left join Inv_Comment com
on com._resourceguid = va._resourceguid
where va.[asset type] = 'audio visual'
and va.status != 'disposed'
8.4.3. Click Save changes.
8.4.4. Click Test data source and verify it does not fail.
8.4.5. Click View import data… and verify it appears correct.
8.5. Right-click on the Custom folder and chooseNew | Folder and call it Inbound Data.
8.6. Right-click the Inbound Data folder and chooseNew | Resource Import Export Rule.
8.7. Name it6.5 Asset Data Import Rule – AV.
8.7.1. Edit to look like this:
8.7.2. Set the Schedule to occur whenever you like, but MAKE sure you test it and validate the data FIRST.
8.8. Click Save changes.
8.9. Click Test Rule and verify it looks good.
8.10. Click Run now.
8.10.1. When done, verify the data in the 7.1 database with this query:
select
va.[Asset Type],
vi.Name,
va.status,
va.Manufacturer,
va.Model,
va.[Serial Number],
va.Barcode,
vi4.Name AS 'Location',
poi.[Order Number] AS 'PO',
poi.[Delivery Date],
cii.amount AS 'COST',
iai.[Available for Use],
iai.[Planned Disposal Date],
cco.Owner AS 'CC Owner',
vi2.Name AS 'CC Owner Name',
cco.[Ownership Percentage] AS 'CC Percentage',
vcc.name AS 'VCC Name',
vcc.[Cost Center Code] AS 'VCC Code',
vcc.Description AS 'VCC Desc',
vcc._ResourceGuid AS 'VCC Resourceguid',
iod.Owner AS 'IOD Owner',
iod.[Ownership Percentage] AS 'IOD Percentage',
vi3.name,
co.Comment
from vasset va
left join Inv_Comment co
on co._resourceguid = va._ResourceGuid
join Inv_Manufacturer mf
on mf._ResourceGuid = va._ResourceGuid
left join Inv_Barcode ba
on ba._ResourceGuid = va._ResourceGuid
left join ResourceAssociation ra
on ra.ParentResourceGuid = va._ResourceGuid
and ra.ResourceAssociationTypeGuid ='05DE450F-39EA-4AAE-8C5F-77817889C27C'
left join vLocation vl
on ra.ChildResourceGuid = vl._ResourceGuid
left join vItem vi4
on vl._ResourceGuid = vi4.Guid
left join Inv_Accounting_Information iai
on va._ResourceGuid = iai._ResourceGuid
left join Inv_Cost_Center_Ownership cco
on cco._ResourceGuid = va._ResourceGuid
left join vItem vi2
on cco.owner = vi2.Guid
left join vItem vi
on vi.Guid = va._ResourceGuid
left join Inv_Cost_Items cii
on cii._ResourceGuid = vi.guid
left join Inv_Purchase_Order_Information poi
on poi._ResourceGuid = cii.[Purchase Order]
left join vCostCenter vcc
on vcc._ResourceGuid = vi2.guid
left join Inv_Ownership_Details iod
on va._resourceguid = iod._resourceguid
left join vItem vi3
on iod.Owner = vi3.guid
where va.[asset type] = 'audio visual'
9. Import Printer Asset Data
Here are the steps I followed to import the 6.5 asset data for printers.
9.1. ClickSettings | All Settings.
9.2. Click Settings | Notification Server | Connector.
9.3. Right-click the Custom folder and chooseNew | OLEDB Data Source.
9.4. Name it 6.5 Asset Data Import Data Source – Printer
9.4.1. Edit it to look like this:
9.4.2. Enter this into the Import query window:
select
vi3.name,
va.status,
va.manufacturer,
va.model,
va.[serial number],
va.barcode,
vl.name AS 'Location',
vi.name AS 'PO',
ci.amount AS 'Cost',
iai.[Available for Use],
iai.[Planned Disposal Date],
SUBSTRING(vi2.name,6,LEN(vi2.name)) AS 'Cost Center Name',
left (vi2.name,4) AS 'Cost Center Code',
com.comment
from vasset va
left join ResourceAssociation ra
on ra.ParentResourceGuid = va._ResourceGuid
and ra.ResourceAssociationTypeGuid ='05DE450F-39EA-4AAE-8C5F-77817889C27C'
left join vLocation vl on ra.ChildResourceGuid = vl._ResourceGuid
left join Inv_Accounting_Information iai
on va._resourceguid = iai._resourceguid
left join Inv_Cost_Items ci
on ci._resourceguid = va._resourceguid
left join vitem vi
on ci.[purchase order] = vi.guid
left join vasset va2
on ci._resourceguid = va2._resourceguid
left join Inv_Ownership_Details iod
on va._resourceguid = iod._resourceguid
left join vitem vi2
on iod.owner = vi2.guid
left join vitem vi3
on va._resourceguid = vi3.guid
left join Inv_Comment com
on com._resourceguid = va._resourceguid
where va.[asset type] = 'network printer'
and va.status != 'disposed'
9.4.3. Click Save changes.
9.4.4. Click Test data source and verify it does not fail.
9.4.5. Click View import data… and verify it appears correct.
9.5. Right-click onImport/Export Rules, chooseNew | Folder and call it JCCC.
9.6. Right-click the Inbound Data folder and chooseNew | Resource Import Export Rule.
9.7. Name it6.5 Asset Data Import Rule – Printer.
9.7.1. Edit it to look like this:
9.7.2. Set the Schedule to occur whenever you like, but MAKE sure you test it and validate the data FIRST.
9.8. Click Save changes.
9.9. Click Test Rule and verify it looks good.
9.10. Click Run now.
9.10.1. When done, verify the data in the 7.1 database with this query:
select
va.[Asset Type],
vi.Name,
va.status,
va.Manufacturer,
va.Model,
va.[Serial Number],
va.Barcode,
vi4.Name AS 'Location',
poi.[Order Number] AS 'PO',
poi.[Delivery Date],
cii.amount AS 'COST',
iai.[Available for Use],
iai.[Planned Disposal Date],
cco.Owner AS 'CC Owner',
vi2.Name AS 'CC Owner Name',
cco.[Ownership Percentage] AS 'CC Percentage',
vcc.name AS 'VCC Name',
vcc.[Cost Center Code] AS 'VCC Code',
vcc.Description AS 'VCC Desc',
vcc._ResourceGuid AS 'VCC Resourceguid',
iod.Owner AS 'IOD Owner',
iod.[Ownership Percentage] AS 'IOD Percentage',
vi3.name,
co.Comment
from vasset va
left join Inv_Comment co
on co._resourceguid = va._ResourceGuid
join Inv_Manufacturer mf
on mf._ResourceGuid = va._ResourceGuid
left join Inv_Barcode ba
on ba._ResourceGuid = va._ResourceGuid
left join ResourceAssociation ra
on ra.ParentResourceGuid = va._ResourceGuid
and ra.ResourceAssociationTypeGuid ='05DE450F-39EA-4AAE-8C5F-77817889C27C'
left join vLocation vl
on ra.ChildResourceGuid = vl._ResourceGuid
left join vItem vi4
on vl._ResourceGuid = vi4.Guid
left join Inv_Accounting_Information iai
on va._ResourceGuid = iai._ResourceGuid
left join Inv_Cost_Center_Ownership cco
on cco._ResourceGuid = va._ResourceGuid
left join vItem vi2
on cco.owner = vi2.Guid
left join vItem vi
on vi.Guid = va._ResourceGuid
left join Inv_Cost_Items cii
on cii._ResourceGuid = vi.guid
left join Inv_Purchase_Order_Information poi
on poi._ResourceGuid = cii.[Purchase Order]
left join vCostCenter vcc
on vcc._ResourceGuid = vi2.guid
left join Inv_Ownership_Details iod
on va._resourceguid = iod._resourceguid
left join vItem vi3
on iod.Owner = vi3.guid
where va.[asset type] = 'network printer'