The Person Update service of the Entity Registry accepts incoming attributes, attempts to resolve a Person based on those attributes, and modify the found Person's attributes using the information given.
function Registry.handleUpdate(incomingAttributes) { /* if the incoming attributes already contain a registry-assigned unique id, try to resolve the person, and fail if can't */ if(incomingAttributes.contains(registry_assigned_unique_id) { var currentPerson = registry.getPerson(registry_assigned_unique_id); if(!currentPerson) { throw PersonNotFound_Exception; } currentPerson.replaceAttributes(incomingAttributes); return currentPerson; } /* otherwise we must run a search-match to find a matching person */ else { var matches = PersonMatchService.findMatchesByAttributes(incomingAttributes); if(matches.size() == 1) { currentPerson = matches.getNext(); currentPerson.replaceAttributes(incomingAttributes); return currentPerson; } else if(matches.size() > 1) { var matchResolutionTicket = MatchResolutionQueue.enqueue(new WorkItem(matches, incomingAttributes)) return matchResolutionTicket; } else if(matches.isEmpty()) { var newPerson = createNewPerson(incomingAttributes) } } }