def METHOD_NAME(self, source, action_type="person-update"):
    if not self.edits_made:
        # No-op in this case
        return self.person
    with transaction.atomic():
        metadata = self.get_change_metadata_for_bot(source)
        self.person.record_version(metadata)
        self.person.METHOD_NAME()
        existing_action = LoggedAction.objects.filter(
            popit_person_new_version=metadata["version_id"]
        )
        if not existing_action.exists():
            LoggedAction.objects.create(
                user=self.user,
                person=self.person,
                action_type=action_type,
                ip_address=None,
                popit_person_new_version=metadata["version_id"],
                source=metadata["information_source"],
            )
    self.person.invalidate_identifier_cache()
    return self.person