Send Empty string or null value to ServiceNOW

Hi All,

We have a requirement to send empty string or blank value for END date attribute to SNOW via attribute sync. I am trying to populate empty string for Identity attribute (used for sync) using below transform which is working as expected. But the value is not getting updated in SNOW when the sync is happening.

Is this something SailPoint is failing, or SNOW is not accepting the value?

{
    "name": "",
    "type": "firstValid",
    "attributes": {
        "values": [
            {
                "type": "dateFormat",
                "attributes": {
                    "input": {
                        "type": "accountAttribute",
                        "attributes": {
                            "sourceName": "",
                            "attributeName": "INACTIVE_DATE"
                        }
                    },
                    "inputFormat": "dd-MM-yyyy",
                    "outputFormat": "yyyy-MM-dd"
                }
            },
            ""
        ],
        "ignoreErrors": true
    },
    "internal": false
}

Hello @JackSparrow

Have you checked the Sync Activity Status ? Is it successful ? If it is successful , the SNOW Attribute should be empty string , if not is not , it issue from SNOW end . If the sync event is failed , you will be able to understand the issue from SP end why it failed .

HI @sidharth_tarlapally ,

Event is getting passed. I suspect the issue is from SNOW end.

@JackSparrow

I can see the AttributeValue is treated as null but not as an emptyString . while both might lead to similar visual outcomes , they are technically different . Check if the SNOW attribute can accept null values . If Not , using a String value like “NA” instead if empty string might help .

SNOW will not accept “NA” as well as its the “date” attribute. I’ll check with SNOW team and see what values it can accept.

To me this looks like a mapping issue from staging table to sys_user table on SNow side. Probably they have not added the logic to capture null value

1 Like

Thanks @iamology, ServiceNow team is not ready to change anything from their end. We have SP architect session to discuss this. Will keep posted here.

Hi @mcheek, Is this something you can help me here

Any updates on this? We have similar problem on dates and boolean fields. For dates, ServiceNow takes null/empty values as something that didn’t change. For boolean values, null values are treated as a false value causing the values to change when it shouldn’t.

Hi @JackSparrow,

If you’re trying to send a blank END_DATE to ServiceNow, avoid using an empty string ("") as SNOW typically rejects that for date fields. The preferred approach is to send null, provided the field in SNOW is optional and allows clearing via API. Your ServiceNow team should be able to let you know if there is any business rules in SNOW that prevent null values.

{
  "type": "firstValid",
  "attributes": {
    "values": [
      {
        "type": "dateFormat",
        "attributes": {
          "input": {
            "type": "accountAttribute",
            "attributes": {
              "sourceName": "",
              "attributeName": "INACTIVE_DATE"
            }
          },
          "inputFormat": "dd-MM-yyyy",
          "outputFormat": "yyyy-MM-dd"
        }
      },
      null
    ],
    "ignoreErrors": true
  }
}

If null is not accepted, a practical fallback would be to use a placeholder like 2099-12-31 to represent “no expiration.” But this would have to be documented clearly and consistently handled in your transform.

Interestingly, I have a similar situation with Entra ID.

I want to clear the attributes via attribute sync.

I am able to clear the attributes using API call via postman using null.
However, the same does not work via SailPoint.

Details:
I have a test transform (static) trying to set the value of the identity attribute to null or “”. Showing below code for empty string, but I have also tried null without quotes.

    "type": "static",
    "attributes": {
        "value": {
            "attributes": {
                "values": [
                    {
                        "attributes": {
                            "sourceName": "Okta",
                            "attributeName": "organization"
                        },
                        "type": "accountAttribute"
                    },
                    {
                        "type": "static",
                        "attributes": {
                            "value": ""
                        }
                    }
                ]
            },
            "type": "firstValid"
        }
    },
    "internal": false
}

This results in that the identity attribute shows “–”, something like this in both cases(empty string and null)

image

so, when I am trying to sync this to Entra ID, it does not clear the attributes. The event is passed.

Referring to this:
https://community.sailpoint.com/t5/Identity-Security-Cloud-Updates/Updates-to-Attribute-Synchronization-Null-Sync-Support/ba-p/222586

I would expect the null values to sync.

am I missing something?

Here are my tests with Entra ID SaaS connector:

Test 1:

Test 1: string null --> "null"
[2025-07-09T16:36:38.631-04:00] INFO  | connectorMessage ▶︎ {"AppType":"Microsoft Entra","commandType":"std:account:update","invocationId":"id","message":"primaryData - {\"companyName\":\"null\"}","requestId":"id,"timestamp":"2025-07-09T20:28:45.906Z","version":45}

response to get attributes via postman:
{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users(department,jobTitle,companyName)/$entity",
    "department": null,
    "jobTitle": null,
    "companyName": "null"
}
In transform the value is set to:
   {
      "type": "static",
      "attributes": {
               "value": "null"
               }
         }

Test 2:

Test 2: value null --> null
There is no log entry 

value of the attribute did not change. confirmed via postman call
Transform has:

                    {
                        "type": "static",
                        "attributes": {
                            "value": null
                        }
                    }

Test 3:

Test3: Empty string --> ""
There is no log entry

value of the attribute did not change. confirmed via postman call
				
	

Transform has:
					{
                        "type": "static",
                        "attributes": {
                            "value": ""
                        }
                    }

so, here are my conclusions so far:

  1. “” and null are ignored by the attribute sync(Entra ID connector), however, the events show PASSED.
  2. “null” string(with quotes) sends the same value and this is of no use.
  3. Epic has similar issue - Clear attribute value using attribute sync - #3 by SBahl
  4. SNOW has similar issue - this discussion
  5. Entra ID has similar issue - this post
  6. But its mentioned here that null values will sync: https://community.sailpoint.com/t5/Identity-Security-Cloud-Updates/Updates-to-Attribute-Synchronization-Null-Sync-Support/ba-p/222586

Question:
So is the path forward only a workflow that triggers on the attribute change and we use the http action, directly call the entra id api to sync these values?

Note: All the SaaS logs are obtained from the CLI

1 Like

We contacted support and here is the solution they proposed:

Patch the Entra ID source with the below:

[
  {
    "op": "add",
    "path": "/connectorAttributes/supportNullValueForAttributes",
    "value": [
            "companyName",
            "country",
    ]
  }
]

So, this works for Entra ID for us.

2 Likes