Skip to main content
Question

assystETM DMW - Specify default empty value

  • March 3, 2026
  • 2 replies
  • 0 views

Forum|alt.badge.img+10

Hello,

I have some questions about DMWs and whether it’s possible to specify that one or more fields should not be overridden unless a value is supplied during the DMW import when using the default Worksheet Channel in ETM.

 

For example, when updating Item Users, there may be some users who already have an existing Item Users record. During import, instead of creating a new record, the existing record is then instead updated. The issue is that if say the original record had data in the Access Note or Remarks fields, and the DMW import file has a blank column for those fields, then the previous data is overwritten with an empty string.

If the column is not included in the import file then any existing value is not overwritten, however as long as the column header is present then the original data is blanked if left empty in the import file. We’ve tested applying a default value of Empty_Record to the DMW import file sub‑header for the appropriate columns, but this has had no effect.

The workaround we currently use is to delete the Remarks or Access Note column from the DMW import file so that existing data is not overwritten. However, this becomes cumbersome when the import file contains a mix of rows where some have values and others do not, and the import file then has to be broken into separate chunks.

Is this sort of non‑destructive update possible when working with the default Worksheet Channel?

 

Thank you very much for your time,

Richard

2 replies

Forum|alt.badge.img+11

The imagined workflows for the DMW were:
1)  the data would be exported, manipulated in Excel and then imported - replacing/updating the existing data. 
or
2) the data would be created from scratch in Excel and then imported - creating data that doesn't already exist. 

It sounds like your use case is a little different  - create data in Excel and then merge that with the existing data?

I don’t think there is a solution today, using the default channel. I’d expect you’d to be able to achieve this using a custom mapper & channel (use the datamapper snapshot option to view & save-as the mapper that is dynamically created from your XLSX, and tweak this).

The next release adds support for ‘No Value When’ in the worksheet (as a new column). So you could put ‘true’ in rows you want to skip (but it will skip the whole row). Not sure if that helps. 

Anything else would require an enhancement. Some possible ideas:
 - if the data in excel has a leading + then it is appended to (rather than replaces) any existing value (or perhaps specify this behavior via a header column)
 - support custom mappers in the Worksheet Channel (so you could override just the dynamic Item User mapper without needing a separate channel).


Forum|alt.badge.img+10

Thank you very much for the explanation, ​@Paul McCulloch 😊

This was mostly a “does this functionality exist but we just don’t know the syntax?” kind of question. However, the detailed insight into the imagined use‑case of DMWs was very helpful in understanding where we may have gone wrong. Based on your explanation, I can see that we might be using DMWs outside their originally intended purpose.

A bit of background on why we chose DMWs

We have a large CMDB where we administer and maintain software systems centrally. Our goal is to keep the CMDB up to date not only on the technical side, but also in terms of local ownership and delegated responsibility. It’s this local ownership component that led us to start using DMWs as a sort of supplemental discovery mechanism to reduce “shadow ownership” of IT solutions.

How we’ve been using DMWs in practice

To enable local superusers to update the CMDB without requiring deep Assyst knowledge, we provide them with an empty DMW template as part of a service offering. They fill in the details, and we as administrators import these completed templates from the events to create or update records for a given resource type.

We deliberately avoided the pre‑populate functionality, as it would require users to sift through all unrelated records and remove everything they don’t own, which would be overwhelming. Instead, we provide defaults and guidance within the modified DMW template to make the process clearer for them.

What this approach allows us to achieve

This workflow lets local superusers populate structured data that we can safely import. It also enables us to add them as stakeholders using various User Item Link Reasons, such as:

  • System Owner
  • Owner’s Delegate
  • Superuser
  • Business Subject Matter Expert
  • Solution Knowledge Holder
  • …and so on.

DMWs seemed like a convenient way to offer this kind of superuser‑facing service without having to build channels and data mappers ourselves, especially since we’re a small team with several competing priorities.

Why I asked the original question

The issue arises when an import contains a mix of existing and new data. Some existing resources already have remarks, etc., while a new submission from a user, who may not realize the record already exists, ends up overwriting fields. A dry run is possible or running in a staging environment, but ETM currently doesn’t provide a clear before/after view (for example, “this was the old value, replaced by this new value”), so detecting unintended overrides is often a manual spot check which is cumbersome and can slip past manual quality checks before we import the file into the production ETM.

We have considered creating custom channels and data mappers to ingest these DMW templates. However, my question here was specifically to find out whether there is any existing functionality such as: “remove or ignore this column if empty”, similar to how a column header can specify a default. We were imagining there might be something along the lines of EMPTY_RECORD in ETM data mapping or using "NO VALUE" in visibility expressions.

If we were to build this ourselves

If we end up creating a custom channel and data mapper, we would likely instead implement something like an outbound.self.remarks + inbound.remarks combination, wrapped in a “trim to fit if above max field length” function.


The enhancement ideas you mentioned both sound very interesting, but I’m not familiar enough with how the Worksheet Channel actually works to comment on the overall applicability of either idea. More generally, the notion of an easier “append to existing data if present” capability in ETM, such as a common function, instead of having to recreate this  for each datamapper sounds worthwhile, and I may propose it as a separate enhancement idea.