Field needs to be changed from Reference to String

richelle_pivec
Mega Guru

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

1 ACCEPTED SOLUTION

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.


TechNow Episode List


View solution in original post

6 REPLIES 6

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.


TechNow Episode List


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