Hi everyone,
i wan't to bulk update all aliases in a certain vault, i did that using the AliasUpdate from UnitFly, but there is one problem, what about all the rules that are using aliases as definitions?
I'm having alot of unresolved rules because of that (good thing i did that on a development vault ).
The way i tried to update all of this is as follows:
Get the whole json metadata file and get a json file with updated aliases. Then i can use python script with fuzzy search and update the whole metadata card using that script, but some of the aliases before had different values than the updated ones (for example the first name of state when it was created was "A", but it was after renamed into "B" without manually changing the alias).
Because of that i cant use the python script to fully update the whole metadata, is there a different way how i can update aliases and that those aliases are updated in metadata configuration, property calculator, compliance kit and other applications?
BTW Here is the python script if someone had a similar issue, but they have similar alias names so they can resolve unresolved rules.
import json from fuzzywuzzy import process, fuzz # Define file paths correct_aliases_path = 'C://test//New_Aliases.json' metadata_path = 'C://test//Current_Metadata.json' corrected_metadata_path = 'C://test//Corrected_Metadata.json' # Load the list of correct aliases with open(correct_aliases_path, 'r', encoding='utf-8') as file: correct_aliases = json.load(file) # Function to find the closest match with a threshold def find_closest(alias, choices, threshold=90): highest = process.extractOne(str(alias), choices, scorer=fuzz.ratio) if highest[1] >= threshold: return highest[0] else: return alias # Recursive function to update properties def update_properties(data, correct_aliases): if isinstance(data, dict): for key, value in data.items(): if key == 'Property' and isinstance(value, str): data[key] = find_closest(value, correct_aliases) else: update_properties(value, correct_aliases) elif isinstance(data, list): for item in data: update_properties(item, correct_aliases) # Load the Metadata.json file with open(metadata_path, 'r', encoding='utf-8') as file: metadata = json.load(file) # Update properties recursively update_properties(metadata, correct_aliases) # Save the corrected metadata back to a file with open(corrected_metadata_path, 'w', encoding='utf-8') as file: json.dump(metadata, file, ensure_ascii=False, indent=4) print("Finished processing.")