Priority field mappings

25 critical mappings.

P-01IdentityHIGH

Source

mdl_user.id

Target

users.legacy_moodle_user_id

Rule

Preserve source key in crosswalk; target UUID is primary key

Verification

Never use email alone as identity key; link to IdP immutable subject after account reconciliation

Sign in to update status, owner and notes.

P-02IdentityBLOCKER

Source

mdl_user.auth + username + email

Target

external_identity_links.provider + subject + email_snapshot

Rule

Map from existing IdP claims; Moodle auth field is migration hint only

Verification

SSO provider, issuer, subject claim, tenant and account-linking rules require confirmation

Sign in to update status, owner and notes.

P-03IdentityHIGH

Source

mdl_user.deleted / suspended / confirmed

Target

users.account_status

Rule

Explicit status mapping; retain original flags for audit

Verification

Agree precedence for deleted/suspended/unconfirmed accounts; do not reactivate by default

Sign in to update status, owner and notes.

P-04ProfileHIGH

Source

mdl_user.firstname, lastname, email, phone1, city, country, lang, timezone

Target

user_profiles

Rule

Field-by-field with normalization and PII review

Verification

Check custom profile fields, duplicates, data retention, consent and user visibility

Sign in to update status, owner and notes.

P-05Custom profileHIGH

Source

mdl_user_info_field + mdl_user_info_data

Target

profile_field_definitions + user_profile_values

Rule

Definition/value model; preserve datatype and category

Verification

Need definitions and actual rows; map plugin-specific data types

Sign in to update status, owner and notes.

P-06CoursesHIGH

Source

mdl_course.id, category, fullname, shortname, idnumber, summary, visible, startdate, enddate

Target

courses + course_categories

Rule

Preserve legacy ID, hierarchy, visibility, dates and HTML summary

Verification

Verify course format, format options, completion rules, custom fields and hidden courses

Sign in to update status, owner and notes.

P-07Course structureHIGH

Source

mdl_course_sections.id, course, section, name, summary, visible, sequence

Target

course_units / course_sections

Rule

Map ordering and section metadata; resolve course ID

Verification

sequence/format semantics and embedded links require Moodle format verification

Sign in to update status, owner and notes.

P-08ActivitiesBLOCKER

Source

mdl_course_modules.id, course, module, instance, section, idnumber, visible, completion, added, availability

Target

learning_activities

Rule

Resolve module name from mdl_modules; join to plugin-specific instance table

Verification

Every module type needs a support decision; availability JSON may reference IDs/context

Sign in to update status, owner and notes.

P-09EnrolmentHIGH

Source

mdl_enrol.id, course, enrol, status, roleid, timestart, timeend

Target

enrolment_sources

Rule

Map supported enrolment methods and active status

Verification

External enrolment plugins/config may require app-code review; secrets excluded

Sign in to update status, owner and notes.

P-10EnrolmentHIGH

Source

mdl_user_enrolments.id, enrolid, userid, status, timestart, timeend, modifierid

Target

course_enrolments

Rule

Join through source crosswalks; preserve dates and state

Verification

Verify overlapping enrolments and whether expired enrolments remain visible

Sign in to update status, owner and notes.

P-11PermissionsBLOCKER

Source

mdl_role_assignments.roleid, contextid, userid, component, itemid

Target

user_course_roles / access_assignments

Rule

Translate Moodle roles + context to target RBAC policies

Verification

Moodle capability inheritance is not a direct role-to-role mapping; security design required

Sign in to update status, owner and notes.

P-12ProgressHIGH

Source

mdl_course_completions.userid, course, timeenrolled, timestarted, timecompleted, reaggregate

Target

course_completions

Rule

Preserve historical completion values and dates

Verification

Compare source completion report; retain source state even if target rules differ

Sign in to update status, owner and notes.

P-13ProgressHIGH

Source

mdl_course_modules_completion.coursemoduleid, userid, completionstate, viewed, timemodified

Target

activity_completions

Rule

Map completion enum explicitly; use activity crosswalk

Verification

Verify completionstate enum and plugin-specific completion semantics

Sign in to update status, owner and notes.

P-14AssessmentsBLOCKER

Source

mdl_quiz + mdl_quiz_attempts + mdl_question_usages + mdl_question_attempts + mdl_question_attempt_steps + mdl_question_attempt_step_data

Target

assessments + assessment_attempts + attempt_events + responses

Rule

Preserve attempts, question version, sequence, state, mark and timestamps

Verification

Schema inventory needs exact join review; migration must be read-only historical unless full quiz engine parity is built

Sign in to update status, owner and notes.

P-15Question bankBLOCKER

Source

mdl_question + mdl_question_bank_entries + mdl_question_versions + qtype-specific tables

Target

assessment_questions + question_versions + answer_options

Rule

Transform by question type and version; keep legacy IDs

Verification

Must inspect qtype plugins and related answer/hint/feedback tables; cannot safely map mdl_question alone

Sign in to update status, owner and notes.

P-16GradesBLOCKER

Source

mdl_grade_items + mdl_grade_grades + mdl_grade_categories + mdl_grade_settings

Target

grade_items + grades + gradebook_categories

Rule

Preserve raw/final grade, scale, feedback, overrides and hidden/locked state

Verification

Calculated grade formulas and aggregation settings require gradebook parity tests

Sign in to update status, owner and notes.

P-17CertificatesHIGH

Source

mdl_customcert + mdl_customcert_templates + mdl_customcert_issues + mdl_files

Target

credential_templates + issued_credentials + file_assets

Rule

Preserve issue ID/code/recipient/date and verification data; copy PDF/binary if stored

Verification

Confirm actual customcert table set, generated PDFs, template variables and QR/verification URLs

Sign in to update status, owner and notes.

P-18FilesBLOCKER

Source

mdl_files.contenthash, pathnamehash, contextid, component, filearea, itemid, filepath, filename, filesize, mimetype, status

Target

file_assets + file_links in object storage

Rule

Export bytes from moodledata; hash-check; map context and ownership

Verification

SQL-only dump cannot supply file bytes; requires moodledata and access-control design

Sign in to update status, owner and notes.

P-19Custom businessBLOCKER

Source

mdl_local_learner_payments / PayU transaction tables / payment tables

Target

payments + payment_transactions + reconciliation records

Rule

Map payment intent, provider reference, amount/currency, status, timestamps and owner

Verification

Inspect full column definitions, gateway callback code, idempotency, refunds and reconciliation; never store secrets

Sign in to update status, owner and notes.

P-20Custom businessHIGH

Source

mdl_job* / mdl_interview* / mdl_project* / mdl_mentor* / mdl_trainer*

Target

jobs, applications, interviews, projects, mentors, trainers (only if product scope confirms)

Rule

Map active records and relationship tables; preserve ownership/status/audit timestamps

Verification

Need plugin source, workflow/state enums, row counts and business-owner confirmation

Sign in to update status, owner and notes.

P-21Custom geographyHIGH

Source

mdl_cities / mdl_states / mdl_districts / mdl_countries / mdl_universities / mdl_university_master

Target

geographic_reference_data + institutions

Rule

Normalize IDs and parent relationships; deduplicate master variants

Verification

Confirm overlapping city/university masters and consumers in registration/import APIs

Sign in to update status, owner and notes.

P-22NotificationsHIGH

Source

mdl_notifications (custom table likely) + message tables

Target

notifications + delivery receipts if in-scope

Rule

Retain user-visible durable notifications; exclude queue/session delivery internals

Verification

Schema/code inspection needed to distinguish history from transient queue or plugin state

Sign in to update status, owner and notes.

P-23LogsHIGH

Source

mdl_logstore_standard_log

Target

Object-storage archive: compressed partitioned JSONL/Parquet

Rule

Export read-only; partition by date; compress; checksum; access-controlled retention

Verification

690.54 MB / ~3.26m rows per supplied inventory; confirm actual count, retention and analytics requirements

Sign in to update status, owner and notes.

P-24SessionsLOW

Source

mdl_sessions

Target

Rule

Exclude and invalidate at cutover

Verification

New app sessions should be created after SSO; verify logout/revocation behavior

Sign in to update status, owner and notes.

P-25Passwords/tokensBLOCKER

Source

password hashes, reset tokens, OAuth/SAML tokens, MFA secrets

Target

None in target business tables

Rule

Do not migrate; use existing IdP identity lifecycle

Verification

Confirm account linking, MFA, password reset ownership and emergency access procedures

Sign in to update status, owner and notes.