News

Member import review and person merges

CSV import review now shows profile changes and membership outcomes, while an established-person merge previews and transfers linked records in one audited transaction.

The import preview lists each row's person action, membership action, profile changes, and blocking issues before application.

CSV import review

The member import page maps source columns into person and membership fields. Its preview shows whether each row will create or update a person, create or match a membership term, and change an existing profile field.

Changed fields display their current and imported values. Blocking issues remain attached to the affected row. The operator must confirm that the mappings, changes, outcomes, and issues have been reviewed before the import can be applied.

Known email aliases resolve to the retained person record. An imported alias does not replace that person's canonical email address.

Established-person merge

The merge page identifies the surviving person and the duplicate record before showing memberships, roles, and affected-record counts.

An administrator selects the person record to keep and the duplicate record to remove. The survivor retains the profile, contact details, avatar, chapter, status, and canonical email shown in the preview.

The preview lists both people's membership terms and assigned roles. It also counts the linked operational records that will be transferred. The administrator confirms the survivor's email address before the transaction runs.

Blocked merge conditions

The merge is blocked when the two people have overlapping membership terms, separate Discord links, separate speaker profiles, or nominations in the same award cycle. It is also blocked when issued recognition belongs to the source record or when the current operator selects their own record as the source.

Transaction and audit record

The transfer, source deletion, email alias, merge record, and audit action are written in one PostgreSQL transaction. The merge record stores the source person's full row snapshot, memberships, roles, affected-record counts, operator, and timestamp.

The removed email address becomes an alias for the survivor. Sign-in lookup and future imports can therefore resolve that address without keeping a second person record.

Screenshots show the product version available when this post was published.

Discussion

Discussion loads here through GitHub-backed comments when JavaScript is available.

Share

Subscribe

Subscribe to Military OS News.

Email stays separate from browser notifications. Use the inbox if you want the durable feed, or enable browser notifications for local news alerts.