Find your people. Pick a challenge. Ship something real. The CreatorCon Hackathon is coming to the Community Pavilion for one epic night. Every skill level, every role welcome. Join us on May 5th and learn more here.

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