Das hat unser PRO-Reseller mittlerweile reproduzieren können und ein Ticket bei Synetics eröffnet. In der Zwischenzeit habe ich mir beholfen mit def idoit_create_with_categories(api, object_type, title, categories, attributes=None): object_id = idoitapi.CMDBObject(api).create(object_type, title, attributes) requests = list() for category, catattr_array in categories.items(): for i, catattrs in enumerate(catattr_array): params = { 'object': object_id, 'category': category, 'data': catattrs } if len(catattr_array) > 1: params['entry'] = i requests.append({ 'method': 'cmdb.category.save', 'params': params }) response = api.batch_request(requests) result = { 'id': object_id, 'success': True, 'categories': dict(), } for i, entry in enumerate(response): if 'success' not in entry or not entry['success']: idoitapi.CMDBObject(api).delete(object_id) message = 'Bad result' if 'message' in entry: message += ': ' + entry['message'] raise JSONRPC(message=message) params = requests[i]['params'] category = params['category'] if 'entry' in params: # For multi-valued categories, value is a list of IDs if category not in result['categories']: result['categories'][category] = list() result['categories'][category][params['entry']] = entry['entry'] else: result['categories'].update({category: entry['entry']}) return result