The extra users property is not exactly "useless", as described in previous posts. Support may have been mislead or misunderstood what it actually does - which, to be fair, is pretty niche.
The "extra properties" query absolutely functions and does what it's supposed to.
The problem is that what it's supposed to do/the way it is written is not what you and others in this thread apparently expect.
Ignition's user source system is flexible/extensible by modules, allowing them to register custom properties they care about. The extra props query is run and checks against the gateway's list of known properties. If the name returned in the first column matches a known property, and the value in the second column can be coerced into that type, then that custom property will be attached to the actual user object and can be inspected at runtime using system.user methods as you'd expect.
The UserSource.DB_ManualMode logger on debug will even tell you about this:
log.debugf("Found property \"%s\" that doesn't exist for user \"%s\"", key, uname);
Here's where it's close to useless: There's only 7 'standard' user properties, and only 1 "custom" property registered by any first party modules:
Username, FirstName, LastName, Notes, Schedule, Language, Badge
Plus user.pin, registered by both the Twilio and voice notification modules.
So, yes, if you want totally arbitrary props you have to work around this limitation some way.
The contact info based approach posted earlier in the thread is reasonable, though maybe hard to follow for the next person maintaining your system.
Another option, at least in theory (I see no reason it wouldn't work in practice, but don't have time to try it) would be to do your own registration of custom properties via a gateway script calling in to the UserSourceManager methods:
If you do that, then run
system.user queries, the extra properties should show up on your user object.