Updating ticket category

We’re currently going through a re-organization in our company, and we need to rename some categories.
The problem is, when you rename a category - the tickets with this category assigned, are not being re-assigned to the new category name (which is needed for reports, in our case).

I tried to look into doing it with the API, but there’s a total of 9381 tickets, which means 9381 API calls in order to update the category of every ticket.

Is there any other viable method to make these changes? I can make several calls and compile a list of ticket id’s, or something of the sort.

Hi there,

I’m not able to do this confidently yet but have seen it done by using Postman.
Create a CSV extract with the ticket ID’s and the Category options you want to update.
Create a collection in Postman and when you run the collection there is an option to import from CSV…

In your PUT command - reference the field to use as your key:

Then you reference your CSV column headers in the JSON.
“custom_fields”: {
“fieldname1”: “{{Cat1}}”,
“fieldname2”: “{{Cat2}}”,
“fieldname3”: “{{Cat3}}”
Try doing this on a couple of Open tickets first. Note that any business rules will apply to the credentials your are using in Postman >> so the Category field is disabled in a certain status then you will need to update the rule temporarily to perform the Postman action…

Hope this helps…

1 Like

Hello @nalm ,
categories aren’t custom_fields, but you can use the method that @NikkiB described with Postman or write your own script that reads the csv file or filters ticket with another api call and update the tickets.
Sadly you can’t use a scheduled workflow because it doesn’t detect tickets with “Closed” status and older than 6 months.
Here’s a link to the freshservice api documentation.

1 Like

Thank you very much for your solutions.
Doing it with the API is definitely a possibility. I have close to 10,000 tickets that need updating and doing it one by one can be a pretty heavy load on the system, so I tried to refrain from doing that.

I guess I can do it this way, and maybe insert a few timeouts inside my script to abide by the minute/hourly rate limits.

Thank you very much!

1 Like