The following configuration would be used to import a three-column CSV of assets, where the column titled
"serviceTag" is unique:
Set( $AssetsImportUniqueCF, 'Service Tag' );
Set( %AssetsImportFieldMapping,
'Name' => 'description',
'CF.Service Tag' => 'serviceTag',
'CF.Location' => 'building',
'CF.Serial #' => 'serialNo',
);
Constantvalues
If you want to set an RT column or custom field to a static value for all imported assets, precede the
"CSV field name" (right hand side of the mapping) with a slash, like so:
Set( $AssetsImportUniqueCF, 'Service Tag' );
Set( %AssetsImportFieldMapping,
'Name' => 'description',
'Catalog' => \'Hardware',
'CF.Service Tag' => 'serviceTag',
'CF.Location' => 'building',
'CF.Serial #' => 'serialNo',
);
Every imported asset will now be added to the Hardware catalog in RT. This feature is particularly
useful for setting the asset catalog, but may also be useful when importing assets from CSV sources you
don't control (and don't want to modify each time).
Computedvalues
You may also compute values during import, by passing a subroutine reference as the value in the
%AssetsImportFieldMapping. This subroutine will be called with a hash reference of the parsed CSV row.
Set( $AssetsImportUniqueCF, 'Service Tag' );
Set( %AssetsImportFieldMapping,
'Name' => 'description',
'CF.Service Tag' => 'serviceTag',
'CF.Location' => 'building',
'CF.Weight' => sub { $_[0]->{"Weight (kg)"} || "(unknown)" },
);
Using computed columns may cause false-positive "unused column" warnings; these can be ignored.
Numericidentifiers
If you are already using a numeric identifier to uniquely track your assets, and wish RT to take over
handling of that identifier, you can choose to leave $AssetsImportUniqueCF unset, and assign to "id" in
the %AssetsImportFieldMapping:
Set( %AssetsImportFieldMapping,
'id' => 'serviceTag',
'Name' => 'description',
'CF.Service Tag' => 'serviceTag',
'CF.Serial #' => 'serialNo',
);
This requires that, after the import, RT becomes the generator of all asset ids. Otherwise, asset id
conflicts may occur.
ConfiguringText::CSV_XS
This extension is built upon Text::CSV_XS, which takes a number of options for controlling its behavior.
You may have a different field delimiter, or byte-order-marking (BOM), for example, and need to enable
configuration to support it. Options set in %AssetsImportParserOptions will be passed directly to new()
in Text::CSV_XS:
Set( $AssetsImportParserOptions, {
binary => 1,
detect_bom => 1,
sep_char => '|',
});
The only default option is "binary => 1". More information is available in the Text::CSV_XS
documentation.