- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎07-28-2017 07:23 AM
I have a field which was changed (several years ago and not by me) from a string field to a reference field. The field is actually the field that is being referenced by other tables, so, because it is behaving like a reference field, I now have what looks like a circular reference. A reference field on the user table (manager) that points to a "reference" field (manager) on the cost center table.
The field on the cost center table is the one that should be a string. Can I change a reference field to a string field (or does that need to be done by ServiceNow support)? Once I do get it changed to a string field, I'm going to lose all the data, aren't I? So, I'm going to need to do it in Dev first, re-populate the manager names and then do the Change in Test (repopulate) and then Prod. Good times.
thanks,
Richelle
Solved! Go to Solution.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎07-28-2017 11:07 AM
Thank you for the clarification. All of this seems to look perfectly fine to me. I think I know where the confusion is coming in Richelle.
A reference field, as noted before contains a sys_id. It's a "pointer" to say "I refer to record 12345ABC from table sys_user" or "I refer to record FF1233 on table cmn_cost_center". The downside of this is that sys_ids are not human readable so we use what's called a "display value". For the sys_user table, the display value is the value in the name field. When any reference field to sys_user needs to display something, the sys_user table says "I'm instructed to tell you that I'm going to display the name." It can be changed, but I don't recommend it since it's a system wide configuration.
If you changed out a reference field to a string field, you wouldn't have any "link" to the record in the other table. You would just have a dumb string. If I put in "Chuck Tomasi", it has nothing to do with the information on the user table. There's no way to get at the other attributes on Chuck's user record.
I invite you to watch the quick tip in episode 39 of TechNow. We just talked about this fairly well.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎07-28-2017 11:07 AM
Thank you for the clarification. All of this seems to look perfectly fine to me. I think I know where the confusion is coming in Richelle.
A reference field, as noted before contains a sys_id. It's a "pointer" to say "I refer to record 12345ABC from table sys_user" or "I refer to record FF1233 on table cmn_cost_center". The downside of this is that sys_ids are not human readable so we use what's called a "display value". For the sys_user table, the display value is the value in the name field. When any reference field to sys_user needs to display something, the sys_user table says "I'm instructed to tell you that I'm going to display the name." It can be changed, but I don't recommend it since it's a system wide configuration.
If you changed out a reference field to a string field, you wouldn't have any "link" to the record in the other table. You would just have a dumb string. If I put in "Chuck Tomasi", it has nothing to do with the information on the user table. There's no way to get at the other attributes on Chuck's user record.
I invite you to watch the quick tip in episode 39 of TechNow. We just talked about this fairly well.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎07-28-2017 11:52 AM
Okay, that makes sense. I was just afraid it was some sort of circular reference that wasn't really storing the data anywhere.
I shall leave it as it is.
Thanks for your good advice.
Richelle