I created this pattern using one that was posted here, modifying to use first 3 character of host name. after importing and activation, ran this manually against a group in debug mode. there is no change to location filed and do not get any details/error.
// This is a template pattern module containing a pattern for relating Hosts
// to Locations based on hostname.
// Names surrounded by double dollar signs like $$pattern_name$$ should all be
// replaced with values suitable for the pattern.
// Text prefixed with // like these lines are comments that extend to
// the end of the line.
// This pattern is in the public domain.
tpl 1.5 module HostLocationSHCorpDC;
// This table is used to find location names (i.e. the "name" attribute on
// Location nodes) by looking up a location id extracted from host names
// (e.g. "lon"). Of course, this approach relies on your organisation using
// a scheme like this.
table LocationIdToNameHofTr 1.0
"ent" -> "CorpDC";
"hfd" -> "Hoffman";
"hfp" -> "Hoffman";
"hof" -> "Hoffman";
"try" -> "Troy";
"trd" -> "Troy";
"trp" -> "Troy";
"ust" -> "Troy";
// Arrange that any value that is lookup up for which there isn't an entry
// is given as the none value.
default -> none;
pattern HostToLocationHofTr 2.0
This is a template pattern for linking Hosts to Locations based on hostname.
Windows ,Linux ,AIX ,SUN ,UNIX
// Required overview section. Some tags must be defined.
// We trigger whenever a Host is created for the first time, or confirmed on
// a subsequent discovery run.
on host := Host created, confirmed;
// Extract location id from the host name. e.g. to extract the first two
// characters, use a regular expression of "^(..)".
location_id := host.name[:3];
// Look up the location name from the table
location_name := LocationIdToNameHofTr[location_id];
if not location_name then
// Find the Location node(s) for the location
location := search(Location where name = %location_name%);
if not location then
// No node for this location?
// Relate host to location. Using "uniquerel" rather than "rel" means that
// any existing Location relationships between this Host (the first
// parameter) and any Location nodes other than the one given (the second
// parameter) are removed. If a host has changed location, this keeps the
// model up-to-date.
ElementInLocation := host,
Location := location