Data Mart Changelog
A version-by-version record of changes to the PEARS data mart: tables, columns, types, and how data is populated.
This page records changes to the PEARS data mart in reverse chronological order: tables and columns added, deleted, or deprecated. It is written for the analysts and developers who query the data mart directly, so it names tables and columns exactly as they appear in the database.
Releases without data mart changes are not listed. The main Changelog links here from each release that has them. For the standing list of everything currently deprecated, with the dates each was marked and removed, see Deprecated Tables and Columns.
Released
26.16.4
New Columns
From Reporting Year 2027, Youth Programming collects race and ethnicity as one combined question, in the same columns added to program_activity_demographic in 26.16.0. Records in earlier reporting periods leave the columns below empty and keep using the existing race and ethnicity columns, which are unchanged. A 2027 record saved before this release may hold only the existing race and ethnicity counts, with the columns below empty.
program_activity_youthrace_ethnicity_one_american_indian_alaskan_native,race_ethnicity_one_asian,race_ethnicity_one_black,race_ethnicity_one_hawaiian_pacific_islander,race_ethnicity_one_hispanic_latino,race_ethnicity_one_middle_eastern_north_african,race_ethnicity_one_white— Number of youth reporting that category as their only race or ethnicity.race_ethnicity_mult_american_indian_alaskan_native,race_ethnicity_mult_asian,race_ethnicity_mult_black,race_ethnicity_mult_hawaiian_pacific_islander,race_ethnicity_mult_hispanic_latino,race_ethnicity_mult_middle_eastern_north_african,race_ethnicity_mult_white— Number of youth reporting that category among two or more races or ethnicities.race_ethnicity_two_or_more— Number of unique youth reporting two or more races or ethnicities.race_ethnicity_prefer_not_to_respond— Number of youth who preferred not to report a race or ethnicity.race_ethnicity_unknown— Number of youth whose race or ethnicity is unknown.
26.16.0
New Columns
From Reporting Year 2027, PEARS collects race and ethnicity as one combined question in place of the separate race and ethnicity questions. A record in a 2027-or-later reporting period populates the columns below and leaves the existing race and ethnicity columns empty; records in earlier reporting periods keep using the existing columns, which are unchanged.
direct_contactrace_ethnicity_one_american_indian_alaskan_native,race_ethnicity_one_asian,race_ethnicity_one_black,race_ethnicity_one_hawaiian_pacific_islander,race_ethnicity_one_hispanic_latino,race_ethnicity_one_middle_eastern_north_african,race_ethnicity_one_white— Number of Direct Contacts reporting that category as their only race or ethnicity.race_ethnicity_mult_american_indian_alaskan_native,race_ethnicity_mult_asian,race_ethnicity_mult_black,race_ethnicity_mult_hawaiian_pacific_islander,race_ethnicity_mult_hispanic_latino,race_ethnicity_mult_middle_eastern_north_african,race_ethnicity_mult_white— Number of Direct Contacts reporting that category among two or more races or ethnicities.race_ethnicity_two_or_more— Number of Direct Contacts reporting two or more races or ethnicities.race_ethnicity_prefer_not_to_respond— Number of Direct Contacts who preferred not to report their race or ethnicity.race_ethnicity_unknown— Number of Direct Contacts whose race or ethnicity is unknown.
program_activity_demographicrace_ethnicity_one_american_indian_alaskan_native,race_ethnicity_one_asian,race_ethnicity_one_black,race_ethnicity_one_hawaiian_pacific_islander,race_ethnicity_one_hispanic_latino,race_ethnicity_one_middle_eastern_north_african,race_ethnicity_one_white— Number of participants reporting that category as their only race or ethnicity.race_ethnicity_mult_american_indian_alaskan_native,race_ethnicity_mult_asian,race_ethnicity_mult_black,race_ethnicity_mult_hawaiian_pacific_islander,race_ethnicity_mult_hispanic_latino,race_ethnicity_mult_middle_eastern_north_african,race_ethnicity_mult_white— Number of participants reporting that category among two or more races or ethnicities.race_ethnicity_two_or_more— Number of unique participants reporting two or more races or ethnicities.race_ethnicity_prefer_not_to_respond— Number of participants who preferred not to report a race or ethnicity.race_ethnicity_unknown— Number of participants whose race or ethnicity is unknown.
psereach_percent_race_ethnicity_american_indian_alaskan_native,reach_percent_race_ethnicity_asian,reach_percent_race_ethnicity_black,reach_percent_race_ethnicity_hawaiian_pacific_islander,reach_percent_race_ethnicity_hispanic_latino,reach_percent_race_ethnicity_middle_eastern_north_african,reach_percent_race_ethnicity_white— Percentage of the PSE site reach reported as that category.reach_percent_race_ethnicity_two_or_more— Percentage of the PSE site reach reported as two or more races or ethnicities.
quarterly_effortrace_ethnicity_one_american_indian_alaskan_native,race_ethnicity_one_asian,race_ethnicity_one_black,race_ethnicity_one_hawaiian_pacific_islander,race_ethnicity_one_hispanic_latino,race_ethnicity_one_middle_eastern_north_african,race_ethnicity_one_white— Number of contacts reporting that category as their only race or ethnicity.race_ethnicity_two_or_more— Number of contacts reporting two or more races or ethnicities. Quarterly Efforts record the two-or-more total only, with no per-category multiple-selection columns.race_ethnicity_prefer_not_to_respond— Number of contacts who preferred not to report their race or ethnicity.race_ethnicity_unknown— Number of contacts whose race or ethnicity is unknown.
26.15.0
New Tables
The Partners module replaces the legacy partnership module with one ongoing record per partner organization, and Partner Reports cover a partner across one or more reporting periods.
Partner records:
partner,partner_crm_person,partner_activity,partner_fileModule links and their contribution types:
action_plan_partner,action_plan_partner_contribution,program_activity_partner,program_activity_partner_contribution,pse_partner,pse_partner_contribution,indirect_activity_partner,indirect_activity_partner_contribution,success_story_partner,success_story_partner_contribution,response_partner,response_partner_contributionCRM interaction links:
crm_interaction_partner,crm_interaction_action_planPartner reports:
partner_report,partner_report_reporting_period,partner_report_program_area,partner_report_assessment,partner_report_accomplishment_lesson,partner_report_fileActivities selected onto a partner report:
partner_report_partner_activity,partner_report_action_plan_partner,partner_report_program_activity_partner,partner_report_pse_partner,partner_report_indirect_activity_partner,partner_report_success_story_partner,partner_report_response_partner
New Columns
action_planincludes_evaluation— Whether the plan includes the situation assessment and outcome sections.
crm_interactioninteraction_date— Date the interaction occurred.interaction_time— Time of day the interaction occurred, when one was given.site_id— The site associated with the interaction.site_name— Name of that site.
crm_personexternal_organization_name— Free-text name of the external organization this person is affiliated with.
Deprecated Columns — Action Required
crm_interactioninteraction_datetime— Useinteraction_dateandinteraction_time, which are now the source of truth.is_note_private— Superseded by record sharing.
crm_personsite_id— Useexternal_organization_name.
26.14.0
Deleted Tables
These tables were previously announced as deprecated, and have now been deleted. Any query still referencing them will fail.
event_registration_invoice_item— Useevent_registration_invoice_line.event_registration_invoice_history— Use the payment ledger:payment_ledger_entryandpayment_ledger_entry_line.
Deleted Columns
These columns were previously announced as deprecated, and have now been deleted. Any query still referencing them will fail.
event_registration_invoicepayment_status_id— Usestatus_slug.payment_status_name— Usestatus_slug.event_discount_id— Useevent_registration_invoice_line.event_discount_id.response_json— Usepayment_transaction.provider_response.session_id— Usepayment_transaction.provider_session_id.transaction_id— Usepayment_transaction.provider_transaction_id.
New Columns
eventcanceled_at— When the event was canceled. Replacescancelled_at, matching the spelling used byevent_registration.canceled_by_user_id— The user who canceled the event. Replacescancelled_by_user_id.
Deprecated Tables — Action Required
list_payment_status— Superseded bylist_invoice_status, which carries the invoice lifecycle status the application now writes. Nothing in PEARS references these values any more, so the rows are frozen at their final values.
Deprecated Columns — Action Required
eventcancelled_at— Usecanceled_at.cancelled_by_user_id— Usecanceled_by_user_id.
26.13.0
New Tables
event_session_group— Breakout blocks: sets of concurrent sessions a registrant picks at most one of.
New Columns
event_registrationowner_user_id— The registered user. Differs fromcreated_user_idwhen a staff member added the registration on the registrant's behalf.waitlisted_at— When this registration joined the waitlist. Kept after it leaves the waitlist so the history survives.invite_sent_at— When a registration invite was last sent to this waitlisted registration. Kept after promotion.
event_registration_typeenable_waitlist— Whether a waitlist signup is offered once the registration capacity is met.
event_sessionevent_session_group_id— The breakout block this session belongs to, or NULL for a standalone session.order— The session's position within its breakout block.
26.12.0
New Columns
crm_personlinkedin_link— Link to the person's LinkedIn profile.
Deprecated Columns — Action Required
list_survey_usedescription— Description of the survey use.
sitestate_abbreviation— Legacy two-letter USPS state abbreviation, kept as a mirror ofstate_codeand populated for US sites only. Migrate tosite.state_code.
26.11.0
New Tables
list_unit_type— Unit types managed by each organization. Units reference these to classify themselves.payment_note— A staff-authored note about a payment collected outside the card processor, such as a check number or a grant reference.
New Columns
start_atandend_aton the 34 list tables below — The availability window for an option: when it becomes available for selection, and the point after which it is not. A null value means no restriction at that end. Together they replaceis_active, which is deprecated below.list_agelist_assessment_approachlist_assessment_methodlist_assessment_typelist_census_tractlist_communication_methodlist_crisislist_delivery_methodlist_entity_typelist_ethnicitylist_form_element_typelist_genderlist_geographic_unitlist_indicatorlist_intervention_channellist_intervention_topiclist_invoice_statuslist_jurisdictionlist_ledger_entry_typelist_market_channellist_market_reach_sourcelist_market_segmentlist_primary_topiclist_pse_changelist_question_typelist_question_widgetlist_racelist_reach_sourcelist_registration_typelist_relationship_depthlist_sector_of_influencelist_settinglist_survey_modulelist_survey_use
orderon the 12 list tables below — The option's position in the list as it is presented to users.list_assessment_typelist_delivery_methodlist_entity_typelist_form_element_typelist_indicatorlist_intervention_channellist_intervention_topiclist_question_typelist_relationship_depthlist_settinglist_survey_modulelist_survey_use
slugon the 6 list tables below — A short text key for the option, derived from its name.list_entity_typelist_intervention_channellist_intervention_topiclist_relationship_depthlist_settinglist_survey_use
list_unitunit_type_id— The unit type that classifies this unit, fromlist_unit_type.
payment_ledger_entrypayment_note_id— The staff note recorded by the admin mark-as-paid flow, when there is one. NULL otherwise.
sitepostal_code— Postal code for the site, in any country.country— ISO 3166-1 alpha-2 country code, such asUSorJP.state_code— Full ISO 3166-2 subdivision code for the state, province, or region, such asUS-KSorGB-ENG. Country-agnostic and never truncated.
Deprecated Columns — Action Required
is_activeon the 26 list tables below — No longer maintained by the application. Use each table'sstart_at/end_atavailability window instead.list_agelist_assessment_approachlist_assessment_methodlist_census_tractlist_communication_methodlist_crisislist_delivery_methodlist_entity_typelist_ethnicitylist_form_element_typelist_genderlist_geographic_unitlist_intervention_channellist_intervention_topiclist_jurisdictionlist_market_channellist_market_reach_sourcelist_market_segmentlist_primary_topiclist_question_typelist_question_widgetlist_racelist_reach_sourcelist_registration_typelist_sector_of_influencelist_setting
sitezip_code— Legacy US ZIP code, kept as a mirror ofpostal_codeso existing warehouse pulls keep the column. Populated for US sites only and capped at 10 characters. Migrate tosite.postal_code.
26.10.0
New Tables
user_viewable_user— Which other users' records each user is allowed to view.user_editable_user— Which other users' records each user is allowed to edit.user_viewable_unit— Which units' records each user is allowed to view.user_viewable_program_area— Which program areas' records each user is allowed to view.
New Columns
program_activity_surveyresponse_url— Public URL for submitting responses to this survey. NULL when responses are aggregated, since aggregate-response surveys are not publicly shareable.
userexternal_id— An identifier for the user carried over from an external system.
26.9.0
New Tables
The payment system was rebuilt around an append-only ledger. An invoice keeps its current state, and every charge, refund, and void is recorded as its own entry.
event_registration_invoice_line— One row per billed item or applied discount on an invoice. Fees are positive lines, and early-bird and promo discounts are their own negative lines.payment_transaction— One row per provider charge or refund attempt. A refund points at the original charge throughrefunded_transaction_id. Offline cash and check payments make no provider call.payment_ledger_entry— Append-only record of every money movement against an invoice. The entries for an invoice sum to the amount collected.payment_ledger_entry_line— The accounting split of a ledger entry, one signed row per invoice line, fee detail, and registration.list_invoice_status— Lifecycle statuses for an invoice, referenced byevent_registration_invoice.status_slug.list_payment_transaction_status— Statuses for a single charge or refund attempt, referenced bypayment_transaction.status_slug.list_ledger_entry_type— The accounting movement a ledger entry records, referenced bypayment_ledger_entry.ledger_entry_type_slug.
New Columns
event_registration_invoicestatus_slug— Lifecycle status of the invoice, a text foreign key tolist_invoice_status.slug:open,paid,no_charge,discarded,refunded, orvoided.superseded_by_id— The invoice that replaced this one, set when an invoice is discarded or superseded in a partial-payment chain.
Deprecated Tables — Action Required
event_registration_invoice_item— Renamed toevent_registration_invoice_line, which adds a refunded amount and carries early-bird and promo discounts as their own negative lines.event_registration_invoice_history— Superseded by the payment ledger. Charges, refunds, and voids are now recorded inpayment_ledger_entry.
Deprecated Columns — Action Required
event_registration_invoicepayment_status_id— Usestatus_slug.payment_status_name— Usestatus_slug.event_discount_id— The promo discount now lives onevent_registration_invoice_line.event_discount_id.response_json— Moved topayment_transaction.provider_response.session_id— Moved topayment_transaction.provider_session_id.transaction_id— Moved topayment_transaction.provider_transaction_id.
26.6.0
New Columns
event_payment_methodis_public_use_only— Whether the payment method is shown only on public registration forms and hidden from Manage Registrations.
list_payment_methodis_public_use_only— Whether the payment method is shown only on public registration forms and hidden from Manage Registrations.
26.4.0
Deleted Columns
These columns were removed in this release. Any query still referencing them will fail.
event_registrationname— The registrant's name is now split acrossfirst_nameandlast_name.
New Columns
event_registrationfirst_name— First name of the registrant.last_name— Last name of the registrant.
26.1.0
New Tables
list_program_area_reporting_period— Maps program areas to reporting periods, recording which program areas were available to users in each reporting period.
New Columns
list_payment_statusdescription— A brief explanation of what the status means, such as "Invoice created, payment not yet attempted".
25.11.0
Deleted Columns
These columns were removed in this release. Any query still referencing them will fail.
action_plan_idon the tables below — Each of these modules can now be linked to more than one action plan, so the single foreign key was replaced by a mapping table named after the module. Join throughcoalition_action_plan,indirect_activity_action_plan, and so on.coalitionindirect_activitypartnershippsesocial_marketingsuccess_story
New Tables
coalition_action_plan— Maps coalitions to action plans. A coalition can be linked to multiple action plans.indirect_activity_action_plan— Maps indirect activities to the action plans they are linked to.partnership_action_plan— Maps partnerships to action plans. A partnership can be linked to multiple action plans.pse_action_plan— Maps PSE site activities to the action plans they are linked to.social_marketing_action_plan— Maps social marketing campaigns to the action plans they support.success_story_action_plan— Maps success stories to the action plans they are associated with.
25.6.13
Deleted Columns
These columns were removed in this release. Any query still referencing them will fail.
event_fee_detailevent_registration_invoice_item_id— The table no longer describes a single invoice line. An invoice line carries its own fee reference and amount onevent_registration_invoice_item.amount_before_discount— Replaced by a singleamount.discount_amount— Replaced by a singleamount.
New Columns
event_fee_detailaccounting_code_id— The accounting code this portion of the fee is allocated to.amount— The amount allocated to that accounting code.
25.5.0
Deleted Columns
These columns were removed in this release. Any query still referencing them will fail.
action_plan_outcomeis_state_approved— Removed with the move to explicit multi-state action plans. An outcome that came from another plan now carriessource_action_plan_id.
New Columns
action_planmulti_state_action_plan_id— The multi-state action plan this plan is linked to, when there is one.
action_plan_outcomesource_action_plan_id— The action plan this outcome originated from.
eventstatus— The event's current status.cancelled_at— When the event was cancelled.cancelled_by_user_id— The user who cancelled it.cancellation_reason— The reason given for cancelling it.
event_registrationstatus— Status of the registration: incomplete, complete, or canceled.canceled_at— When the registration was canceled.canceled_by_user_id— The user who canceled it.cancellation_reason— The reason given for canceling it.
25.1.0
Deleted Columns
These columns were removed in this release. Any query still referencing them will fail.
action_plan_outcome_indicatorsurvey_question_id— Renamed tosurvey_survey_question_id.
action_plan_report_outcome_indicatoraction_plan_outcome_survey_question_id— Renamed tosurvey_survey_question_id.
contractstate_served_id— Renamed toserved_state_id.
crm_personemail— Email addresses moved to their own table. Readcrm_person_email, which carries one row per address.
crm_person_raceperson_id— Renamed tocrm_person_id.
event_registrationevent_form_id— Useevent_registration_type_id.
New Tables
crm_person_email— Email addresses associated with a CRM person, one row per address, with the primary address flagged.
New Columns
action_plan_outcome_indicatorsurvey_survey_question_id— Renamed fromsurvey_question_id.
action_plan_report_outcome_indicatorsurvey_survey_question_id— Renamed fromaction_plan_outcome_survey_question_id.
contractserved_state_id— Renamed fromstate_served_id.
crm_person_racecrm_person_id— Renamed fromperson_id.
event_registrationevent_registration_type_id— The registration type chosen for this registration, replacing the former event form reference.
25.0.0
Deleted Tables
These tables were removed in this release. Any query still referencing them will fail.
event_fee_event_session_fee— Removed in the event accounting rework. Session fees are now their own records inevent_session_fee, tied to registration types throughevent_session_fee_event_registration_type.
Deleted Columns
These columns were removed in this release. Any query still referencing them will fail.
event_registration_invoice_itemevent_fee_event_session_fee_id— Useevent_session_fee_id.description— The line's label remains inname, and its fee and discount breakdown is now inevent_fee_detail.
New Tables
event_fee_detail— The accounting breakdown of an invoice line: the fee it came from, the amount before discount, the discount applied, the taxable amount, and the accounting code.event_session_fee— A fee attached to an individual event session.event_session_fee_event_registration_type— Links a session fee to the registration types it applies to.
New Columns
event_additional_feenot_discountable_amount— The portion of the fee that discounts cannot be applied to.
event_feenot_discountable_amount— The portion of the fee that discounts cannot be applied to.
event_registration_invoice_itemevent_registration_id— The registration this invoice line belongs to.event_session_fee_id— The session fee this invoice line charges for.
Last updated
