I'm trying to prepare a mass-update for all profiles in our cloud-based instance of Jive. I've had success making updates to user profile images, but now I've moved onto handling update for some of our custom profile fields. These fields are found in the Person object under the "jive" property in the "profile" object (which is not always present. According to the docs Jive REST Rest API v3.10 → Jive entity, the fields are read-only. Does this mean that I cannot update them with a PUSH call to the API? Is there some other method I should be using to mass update these fields?

We use the REST API to mass update the profiles of our users everyday (to keep them in synch with another system). We automated everything and it works fine (custom fields and Jive fields). It works well but it takes some time. So if you have a large number of update to do, plan for it.

Also, you should start by fetching the profiles of every users you plan to update (this you can do massively). And then, you update their profile one by one. If there is a better way of doing this please let me know!

Well if it works it works, though that seems counter to what the Documentation says. Your plan to grab everyone, then run individual updates was our plan as well. I can't even get a single update to go through, though. I've tried created the person object from scratch, but only ever get a 400 error despite being sure that I've got valid JSON and am changing nothing but the status field. If I use the Person object acquired from the GET (as recommended), I get a 500 error with the status "Protocol Error", which is even less helpful.

Of course, moments after complaining I get the updates working. And it did, as you believed, let me update the custom fields. Thanks for giving me enough hope to get that far.

I had to build the Person from scratch to avoid that 500 error, though (I'm fairly certain I was removing that first line), and it took me a while to discover I needed to include quite a few fields in that object even if they aren't changing; where was that documented?

Good! Just keep in mind that if you dont put a fiel in your JSON for the update, that field will be "blanked" in the profile of the user you update. So, lets say your profiles have 15 fields completed for every user and you only want to update one of them, you have to create your JSON with your updated field with its new value, and the 14 others with their olds. If you dont, your users will only have the one field you updated.

So thats why its better to GET a user first and then update the fields of this JSON for the PUT. Less chance of losing user's profile data.

That's definitely not the case. I left out all sorts of fields, and they were not blanked at all. I still am getting that 500 error if I use the GET first and update with a modified version of it. Do I need to strip certain fields (I already strip that first line) to make it work?

At first, the behavior we had was as you described (no blanking of fields) but that something that changed around 6.0.3 if I remember correctly. We had to adapt our scripts at the time to fully update each profile with the current information to make sure not to delete profile info.

Again, we are not up to date, so I dont know if this behavior changed in 7 or 8. This is something that we will have to figure out as we prepare to migrate to Jive 8.

Has anyone here had success updating custom profile fields that are blank? The PUT request to the person service works great for updating my custom profile fields if they already have a value. For some reason if it is blank it doesn't work for me.

For example, i created a custom profile field called "Jive share community". I then do a GET request, modify the Jive share community field in the JSON response, then use that updated person entity in my PUT command.

Updating a user from jive share community = 'Finance' to jive share community = 'HR' works great.

But if Jive share community field is blank, I cannot update it to any other value. The error returned is "Invalid field name Jive Share Community"

I think this is because the GET JSON response doesn't include blank fields as part of the JSON response if this field is blank. In this case, I tried adding the field value to the JSON string and then use that in the PUT. But I receive the above error.