SD-672 user preferences - fresh back-end support implementation

I closed the old PR since it got messy and I made a new one in which I added a failing test.