Skip to main content

Enrollment & Eligibility

Libraries covered: enroll (member enrollment maintenance, quick enrollment, HIPAA certificates, QMCSO, HB1, eligibility export), enrollutils (mass termination / re-enrollment, FSA notices), enrolaud (enrollment audit log), enrolrpt (census, annual statements, dependent-eligibility audit, error reports).

Purpose

This domain maintains the population that all claims, billing and ID-card processing depend on: who is a member, which group/division they belong to, for what date range they are eligible, and which benefit coverages they elected. It supports full-screen enrollment maintenance (enroll/w_enrollment_maintenance), a streamlined "Quick Enrollment" intake (enroll/w_quick_enroll_main), group-level mass termination and re-enrollment (enrollutils/u_terminate, enrollutils/w_reenroll), a member-level audit log (enrolaud/w_enrollment_log), and an enrollment reporting catalog (enrolrpt).

Actors

Grounded in window titles, menus and security joins (no explicit role model exists in these libraries):

  • Enrollment clerk / plan administrator staff — operates member select, enrollment maintenance and quick enrollment screens (enroll/w_group_member_select "HOMER - Member Select", enroll/w_enrollment_maintenance "HOMER - Member Enrollment Maintenance").
  • Supervisory / utility user — runs group-level termination and re-enrollment (enrollutils/w_term, enrollutils/w_reenroll) and eligibility export (enroll/w_enroll_group_export).
  • Auditor — reviews change history in the Enrollment Audit Log (enrolaud/w_enrollment_log).
  • System (MIS) — referenced in error messages ("Please contact the MIS Dept.", enroll/w_enrollment_maintenance ue_set_new_row); maintains group options that drive screen behavior.
  • Access to master groups is restricted per user via security tables (enroll/d_enroll_master_group_ids joins security_user_class_user/security_user_group on user_id).

Key workflows

New enrollment (full maintenance)

enroll/w_group_member_select ("HOMER - Member Select") is documented as the "First screen for member enrollment. Allows a user to Add/Delete/Modify/View a member". It opens w_master_group_select, the member-search popups, and enroll/w_enrollment_maintenance, which carries an open mode (add / change / remove / detail) that drives field editability (wf_dw_edit_status).

w_enrollment_maintenance is a tabbed sheet over one subscriber family:

  • Subscriber Eligibility tab — demographics (d_enroll_member_demographics), phone, address, subscriber eligibility periods (d_enroll_subscriber_eligibility_period), subscriber categories (d_enroll_member_subscriber_categories), waiting periods (d_enroll_wait_pd).
  • Dependents tab — dependent list (d_enroll_member_dependents), per-dependent eligibility periods (d_enroll_dependent_eligibility_period), categories, address, student info (d_enroll_dependent_student_info), dependent waiting periods.
  • Coverage tab — coverage elections (d_enroll_dependent_coverage_elections over elections), member coverages (d_enroll_subscriber_member_coverage over election_coverages), coverage riders (d_enroll_subscriber_coverage_riders).
  • PCP tab — primary care physician assignment via enroll/n_enroll_member_pcp and enroll/w_enroll_pcp_search.

Saving is a single transaction: ue_update saves member detail → dependents → family rows → subscriber eligibility → categories → dependent tab → elections → member coverages → riders → COB datastores → PCP → COBRA non-qual events, then commits; any failure rolls the whole save back (enroll/w_enrollment_maintenance event ue_update on tab_subscriber). After a successful save the window checks for ID-card requests (wf_request_id_cards → global f_submit_mem_id_req) and prescription-plan transfers (wf_request_prescription_tsfr).

Quick Enrollment

enroll/w_quick_enroll_main ("Homer - Quick Enrollment") is a one-screen intake for a new subscriber family: subscriber demographics (d_quick_enroll_subscriber), dependents (d_quick_enroll_dep), group/category assignment (d_enroll_category, d_quick_enroll_all_cat), subscriber eligibility and waiting period (d_quick_enroll_sub_eligible_pd, d_quick_enroll_sub_wait_pd), and coverage elections (d_quick_enroll_sub_cov_elect, d_quick_enroll_covg_elect). Popups collect dependent address (w_quick_enroll_dep_addr), dependent categories (w_quick_enroll_dep_cat), student info (w_quick_enroll_dep_student) and coordination of benefits (w_enrollment_cob_maint).

Save order (subscriber → dependents → family → eligibilities → categories → dependent categories → students → COB) is enforced in enroll/w_quick_enroll_main event ue_save, with distinct error codes per failed store.

Life events / changes

Changes are made in w_enrollment_maintenance in change mode. Evidenced life-event mechanics:

  • Expiring an eligibility period — entering exp_dt plus a reason (dep_exp_cd) cascades expiration into elections and election coverages (wf_expire_coverage, wf_expire_dep_coverages) and evaluates COBRA consequences (wf_non_qual_event).
  • Clearing an expiration date — clears the reason code and retracts any pending COBRA non-qualifying event (event itemchanged on the eligibility DataWindow).
  • Division transferue_move_mem_div moves a saved eligibility period's elections/coverages to a sibling division; the target division is picked in enroll/w_enroll_trans_div. Changes must be saved first ("This function can only transfer data that has been Saved to the Database").
  • Drug plan changes — expiring or changing a Drugs election sets a flag that triggers the prescription-transfer dialog after save (wf_expire_coverage sets ib_drug_processing; wf_request_prescription_tsfr opens w_drugplan_member_maint).

Terminations

  • Member-level — via expiration date + reason on the eligibility period, with the cascade above.
  • Group-level mass terminationenrollutils/u_terminate (hosted by enrollutils/w_term) takes a group, a termination date and a termination code, validates them, and calls enrollutils/n_term_enroll, which collects affected subscriber keys (d_term_keys: eligibilities active on the term date) and issues batched SQL updates: ELECTION_COVERAGES.MEMBER_ELECT_EXP_DT/_EXP_CD, ELECTIONS.ELECT_EXP_DT/ELECT_EXP_CD, MEMBER_ELIGIBILITIES.EXP_DT, and MEMBERS.MBR_TERM_DT, each restricted to records effective on and not already expired before the termination date. Errors are shown in enrollutils/w_term_errors`. Checkboxes let the operator choose scope (coverages / elections / eligibilities / members / all).
  • Re-enrollmentenrollutils/w_reenroll reverses a mass termination for selected divisions and coverages: it validates the new period against group coverage periods (wf_check_group_covr) and group periods (wf_checkperiods), then calls of_termenroll_eligibilities / _elections / _coverage / _categories in n_term_enroll to create follow-on periods for members whose latest eligibility was expired with the matching code (d_reenroll_elig).
  • Termination lettersenroll/w_enroll_custom_term_add_members, w_enroll_custom_term_generate and w_enroll_custom_term_print maintain a custom_term_transactions queue and generate/print letters stored in report_hist (blob report_data).

Quick facts evidenced elsewhere

  • HIPAA certificates of creditable coverageenroll/w_enroll_hipaa_add_members queues members into hipaa_transactions; w_enroll_hipaa_generate builds certificates into report_hist and marks queue rows PROCESSED; w_enroll_hipaa_print prints/reprints; w_hipaa_dead_file logs undeliverable certificates; history is kept as member notes with keys HIPAA Cert / HIPAA Dead File (d_hipaa_history).
  • QMCSO — eligibility rows carry qmcso_flg; enroll/w_enroll_qmcso_maint maintains orders and custodians (qmcso_custodians, qmcso_guardians), and election_coverages carries qmcso_order_no.

Business rules

All statements below are grounded in the cited object; wording is technology-agnostic.

IDRequirementSource
ENR-1The system shall represent every enrolled person as a member record and link members into families; the subscriber is the family row whose subscriber key equals its dependent key.enroll/d_enroll_member_demographics (subquery on family with sub_member_sys_key = dep_member_sys_key), enroll/d_enroll_member_dependents
ENR-2The system shall record eligibility as date-bounded periods per member per group/division, keyed by subscriber key, dependent key, group and effective date, with optional expiration date and expiration reason code.enroll/d_enroll_subscriber_eligibility_period, enroll/d_enroll_dependent_eligibility_period (member_eligibilities)
ENR-3The system shall reject a new or changed eligibility period whose date range overlaps another period for the same member and key values; open-ended periods conflict with any later period.enroll/f_verify_dates_outside_range, enroll/w_enrollment_maintenance event ue_validate_new_date_range
ENR-4The system shall require that a dependent's eligibility dates fall inside some eligibility period of the subscriber (and validate subscriber/dependent effective dates on entry).enroll/w_enrollment_maintenance wf_check_mem_elig, wf_validate_sub_elig_eff, wf_validate_dep_eff_dt
ENR-5The system shall not accept an eligibility expiration reason without an expiration date, and shall clear the reason when the expiration date is cleared.enroll/w_enrollment_maintenance eligibility DW event itemchanged (cases exp_dt, dep_exp_cd; message exp_cd_no_date)
ENR-6When an eligibility period is expired with a reason, the system shall cascade that expiration date and reason to all elections and member coverages effective on or before that date whose expiration is later or open.enroll/w_enrollment_maintenance wf_expire_coverage, wf_expire_dep_coverages
ENR-7The system shall classify a coverage termination as COBRA-qualifying when the coverage type is COBRA-eligible and the expiration reason is in the COBRA reason code set; for COBRA-administered groups, a non-qualifying termination of COBRA-type coverage shall offer generation of a COBRA "Unavailability of Coverage" letter.enroll/w_enrollment_maintenance wf_check_cobra (coverages.cobra_elig_flg, code key MBREXPCOBR), wf_non_qual_event (code key MBEXPNCOBR, group_enroll_opts.enroll_opt_cd = 'CobraADM', group_coverages.cobra_type_cd <> 'NOCOBRA')
ENR-8On save, the system shall remove incomplete COBRA event records that correspond to eligibility expirations recorded as non-qualifying events.enroll/w_enrollment_maintenance event ue_update (delete from cobra_event where status_cd = 'INCOMPLETE')
ENR-9The system shall compute a waiting-period end date from a start date, a unit code and a length, where units are: none, calendar days, months (rolling the year; lengths over 11 months treated as 0), years, and work days (5-day weeks converted to calendar days).enroll/w_enrollment_maintenance wf_add_elapsed_days
ENR-10The system shall store member waiting periods as date-bounded records with a waiting-period start date, maintainable for subscriber and dependents.enroll/d_enroll_wait_pd, enroll/d_enroll_dependent_wait (member_waiting_periods), enroll/w_enroll_view_wait_period
ENR-11The system shall generate internal member keys from a database sequence at row creation.enroll/w_enrollment_maintenance ue_set_new_row (gnv_app.inv_sql.uf_next_member_seq()); enroll/w_quick_enroll_main validates a generated key is present
ENR-12The system shall default the external member ID according to the group's MEMBER_ID option: NONE (manual), SOC (SSN), SOC+LETTER (SSN plus suffix letter), or SYSKEY (9-digit zero-padded system key plus suffix letter); the subscriber suffix is "A" and dependents are lettered sequentially B through Z based on the prior dependent's suffix.enroll/w_enrollment_maintenance ue_set_new_row, member-ID itemchanged case, wf_get_member_suffix (both overloads); option read from group_option_vals via d_enroll_group_option_vals
ENR-13The system shall validate member-ID uniqueness within the master group before accepting a defaulted or entered member ID.enroll/w_enrollment_maintenance (gnv_app.inv_sql.uf_validate_mem_id(ls_memid, is_master_group_id))
ENR-14The system shall require subscriber SSN (exactly 9 characters), member ID, master group, gender and last name before saving a subscriber; birth date must not be later than the current date.enroll/w_quick_enroll_main ue_validate; enroll/w_enrollment_maintenance SSN length check and birth_dt itemchanged
ENR-15The system shall support group-level enrollment options that alter entry behavior, including an SSN option ("SSNo") that is checked per group.enroll/w_enrollment_maintenance wf_check_ssno_enroll_opt, wf_check_subssnoltr_enroll_opt (group_enroll_opts)
ENR-16The system shall record benefit elections per subscriber, coverage type, coverage plan and sequence number, with effective/expiration dates, status, expiration reason, COBRA flag, coverage level (tier), benefit amount and beneficiary name.enroll/d_quick_enroll_sub_cov_elect, enroll/d_enroll_dependent_coverage_elections (elections)
ENR-17The system shall record which family members are covered by each election as member-coverage rows keyed by the election identifiers plus the covered member, with their own effective/expiration dates, status and QMCSO order reference.enroll/d_enroll_subscriber_member_coverage, enroll/d_quick_enroll_covg_elect (election_coverages)
ENR-18The system shall define coverage levels (tiers) in the ELECTLEVEL code table; known values include Single, Family, SpouseOnly, DepsOnly and Emp+Spo+1, with additional extended levels permitted.enrolrpt/d_coverage_levels (CODES where CODE_KEY = 'ELECTLEVEL')
ENR-19For salary-based benefit coverages, the system shall compute the benefit amount as the group's default amount plus salary times the group multiplier, rounded to the group's rounding increment using the group's rounding style (nearest, up, down), then clamped to the group's minimum/maximum; the salary comes from the member's SALARY category value.enroll/w_enrollment_maintenance wf_calc_benefit_amount, wf_round_amount, wf_get_salary_amount (group_coverages)
ENR-20The system shall validate that a member coverage's effective date is consistent with the member's eligibility and the parent election before acceptance.enroll/w_enrollment_maintenance wf_valid_eff_mem_covg, wf_check_mem_elig
ENR-21The system shall standardize member and dependent addresses through the address-standardization service before saving; when standardization fails, the operator shall be asked whether to save the address anyway, and declining aborts the save.enroll/w_enrollment_maintenance wf_stand_addr, enroll/w_quick_enroll_main wf_stand_addr (invo_mailers.of_standardize_address, of_save_address)
ENR-22Addresses shall be stored as shared records referenced by number; when a changed address has multiple references, the standardization service is invoked without forcing an update in place.enroll/w_enrollment_maintenance wf_stand_addr (single_ref / force_update handling), addresses.addr_no usage across DataWindows
ENR-23Saving enrollment changes shall be atomic: all member, family, eligibility, category, election, coverage, rider, COB and PCP changes commit together or roll back together.enroll/w_enrollment_maintenance event ue_update; enroll/w_quick_enroll_main event ue_save
ENR-24After a successful save, when subscriber or coverage information changed for coverages whose group configuration requires ID cards, the system shall ask the operator whether to request new ID cards and submit a request per qualifying coverage.enroll/w_enrollment_maintenance wf_request_id_cards, wf_check_id_card_print, global f_submit_mem_id_req
ENR-25After a save that expires or changes a drug election, the system shall prompt for a prescription-plan transfer and open the drug-plan member maintenance function.enroll/w_enrollment_maintenance wf_expire_coverage (sets drug-processing flag), wf_request_prescription_tsfr
ENR-26The system shall allow moving a saved eligibility period's elections and coverages from one division to another division of the same parent group; unsaved changes must be saved or the transfer is cancelled.enroll/w_enrollment_maintenance event ue_move_mem_div, enroll/w_enroll_trans_div
ENR-27Group-level termination shall expire, as of the entered date and with the entered reason code, all member coverages, elections and eligibilities effective on and not already expired before that date for subscribers of the selected group, and set the member termination date; scope (members / eligibilities / elections / coverages) is operator-selectable.enrollutils/u_terminate, enrollutils/n_term_enroll of_term_elections / of_term_eligibilities / of_term_members / of_term_coverage, enrollutils/d_term_keys
ENR-28Group-level re-enrollment shall create follow-on eligibility, election, coverage and category records for members whose most recent eligibility was expired with the specified termination code, after validating the new period against the group's coverage periods and group periods.enrollutils/w_reenroll, enrollutils/n_term_enroll of_termenroll_* / of_create_*, enrollutils/d_reenroll_elig
ENR-29The system shall maintain per-dependent student records (student/spouse indicator, school, status code, effective/expiration dates, school address, phone, other-insurance indicator).enroll/d_enroll_dependent_student_info, enroll/d_quick_enroll_dep_student (students)
ENR-30The system shall maintain coordination-of-benefits records per member and coverage type (carrier, policy, plan type, status and reason, other-subscriber and employer details with addresses).enroll/d_qe_cob_detail (coord_of_bens), enroll/w_enrollment_cob_maint
ENR-31The system shall flag eligibility periods subject to a QMCSO and maintain QMCSO orders with custodian/guardian parties; member coverages may reference a QMCSO order number.enroll/d_enroll_dependent_eligibility_period (qmcso_flg Y/N), enroll/w_enroll_qmcso_maint, enroll/d_qmcso_custodian_info, election_coverages.qmcso_order_no
ENR-32The dependent-eligibility audit shall, for groups opted in via the DEPAUDIT group option, generate first and second request letters, track response state in a DEPAUDIT member category value (e.g. No, 2ndLetter), and on the second letter suspend non-responding dependents by expiring their eligibility with reason Suspended and closing their waiting periods.enrolrpt/w_dep_audit, enrolrpt/d_dep_audit_group_list (group_option_vals option DEPAUDIT)
ENR-33The system shall restrict master-group selection to groups the signed-on user is authorized for, and resolve divisions through the group parent hierarchy.enroll/d_enroll_master_group_ids (security joins), hierarchical CONNECT BY prior group_id = parent_group_id queries in enroll/d_enroll_group_option_vals, enroll/w_enroll_group_export
ENR-34The system shall support export of a master group's eligibility (subscribers and dependents, with relationship, demographics, address, coverage type/level/plan and coverage dates) to a flat file named <group>-<yyyymmdd>, at a configurable path, for members active as of the entered date.enroll/w_enroll_group_export (cursor cur_recs, enrolldump_path INI setting)
ENR-35The system shall record HB1 members separately with coverage type, monthly premium and date-bounded periods, and record HB1 payments with received date, paid-through date, check number and amount.enroll/d_hb1_member_detail (hb1_members), enroll/d_hb1_payment_detail (hb1_payments), enroll/w_hb1_maintenance
ENR-36Every enrollment change to member, eligibility, election, coverage, category, address, COB, student and waiting-period data shall be viewable per family in an audit log combining current rows with recorded audit events (who, when, insert/update/delete, changed values).enrolaud/w_enrollment_log, enrolaud/d_audit_trail_enrollment (aud_trail_mbr)

Data

Core tables and how the enrollment libraries touch them (CRUD derived from _re/analysis/schema.json):

TableRoleenrollenrollutilsenrolaudenrolrpt
membersOne row per person (subscriber or dependent): names, SSN, member_id, master_group_id, birth/hire dates, gender, life status, mbr_term_dt, addr_noCRUDRUCRUD*CRUD*
familyLinks subscriber to family members (sub_member_sys_key, dep_member_sys_key); subscriber row has sub = depCRUDRCRUD*R
member_eligibilitiesDate-bounded eligibility per member per group/division (eff_dt, exp_dt, dep_exp_cd, qmcso_flg, cobra_rights_sent_dt)CRUDCRUDRRU
electionsBenefit election per subscriber + coverage type + plan + sequence (dates, status, level/tier, COBRA flag, benefit amount, beneficiary)CRUDCRUDRR
election_coveragesCovered members per election (dep_member_sys_key, member_elect_eff_dt/exp_dt/status/exp_cd, qmcso_order_no)CRUDCRUDRR
addressesShared, reference-counted addresses (addr_no, std_addr_flg)CRUDRR
member_waiting_periodsWaiting-period spans per memberCRUDR
member_cat_valMember category values (SALARY, RELATIONS, DEPAUDIT, …)CRUDRCRU
studentsDependent student recordsCUDR
coord_of_bensCoordination of benefitsCRUDRR
aud_trail_mbrEnrollment audit eventsR
hipaa_transactionsHIPAA certificate work queueCRUD
hb1_members / hb1_paymentsHB1 enrollment and premium paymentsCRUDR (payments)

Subscriber vs dependent pattern. Everywhere in this domain, sub_member_sys_key identifies the subscriber and dep_member_sys_key the person the row is about; the subscriber's own rows have sub_member_sys_key = dep_member_sys_key (subscriber eligibility filter in enroll/d_enroll_subscriber_eligibility_period; dependent filter sub <> dep in enroll/d_quick_enroll_dep; enrollutils/d_term_keys). elections hang off the subscriber only; election_coverages fan out to each covered member.

member_accums. The accumulator table shares the same sub/dep key pattern (member_accums.sub_member_sys_key / dep_member_sys_key, from_dt/thru_dt) but per schema.json used_by it is read/written only by claims libraries (claims, clmsproc, clmutils, clmrpt, homersys) — no enrollment library touches it. Migration must nevertheless preserve key compatibility, since accumulators are joined to members enrolled here. See Open questions.

Enrollment audit subsystem (enrolaud)

enrolaud/w_enrollment_log ("Enrollment Audit Log") shows change history for one family:

  • Operator finds a member by last name (w_member_select_by_last_name) or SSN (w_homer_social_search); the window resolves the subscriber via family and gathers all dependent keys (event ue_retrieve).
  • The audit source is table aud_trail_mbr with columns dep_member_sys_key, sub_member_sys_key, audit_dt, tbl_name, tbl_key (a tilde-delimited snapshot of key/values, up to 500 chars), audit_activity (3-char action), audit_user_id, chg_desc and chg_comment (2000 chars each) (enrolaud/d_audit_trail_enrollment).
  • Per-table tabs (members, member_eligibilities, elections, election_coverages, member_cat_val, addresses, coord_of_bens, students, member_waiting_periods) merge two sources: the current base-table rows, rendered as an "Insert … by create_user_id on create_dt" baseline (each d_audit_trail_* DataWindow selects from the live table with literal action 'Insert'), plus decoded audit rows, which the window parses out of tbl_name/tbl_key with wf_get_token (tilde-delimited) and date-format conversion wf_cvt_string_date, then appends via the wf_set_* functions.
  • A "deleted" checkbox (cbx_deleted) toggles inclusion of deleted-record events.
  • Each tab renders a sentence per event: "On <date> user <id> <action>d this record" (compute in enrolaud/d_audit_trail_members).

The writer of aud_trail_mbr is not in these four libraries (no INSERT into it found here); it is presumed populated by database triggers or shared services. Flagged in Open questions.

PBM / carrier eligibility feeds

Searched all four libraries for mmo_enrollment_work, ppo_enrollment_work, sp_aetna_enrollment, and "aetna"/"melissa": none are referenced from these libraries. What these libraries do evidence:

  • MMO audit report (enrolrpt/w_mmo_audit, enrolrpt/d_mmo_audit) — an audit/export of repriced claims for MMO-affiliated groups: it derives the MMO group and section numbers per master group from database function SFPIDBA.F_GET_GROUP_MMO_INFO(master_group_id, 'MMOBASEGRP'|'MMOSECTION'), restricted to claims whose claim_id starts EMMO, and sums REPRICE_DISCOUNT_AMT as "MMO Pricing"; the window offers Retrieve and Export over a date range.
  • Flat-file eligibility export (enroll/w_enroll_group_export) — the generic outbound eligibility feed described under ENR-34.
  • Drug-plan transfer hand-off (enroll/w_enrollment_maintenance wf_request_prescription_tsfr) — opens the drug-plan module's member maintenance for PBM-side changes; the PBM file production itself lives outside these libraries (drugplan library).

Any mmo_enrollment_work / ppo_enrollment_work / sp_aetna_enrollment processing must live in another library or in the database — see Open questions.

Reports (enrolrpt catalog)

PurposeWindows / DataWindows
Annual employee statements — per-group benefit statement with coverages, dependents, beneficiary; group-level options control salary, partner, all-coverage inclusion, custom instructions; receipt is recorded per member by datew_annlstmt, w_annlstmt_option_maintenance (annual_statement_options), w_annlstmt_report_date ("Receive Annual Statements"), d_annlstmt_*
Census reports — parameterized member listings selected from the batch_reports table (report_type = 'census'); variants by name, birth date, city/state, state, zip, eligibility period, hire date, coverage-with-dependents, PCP, life/AD&D, flex, sales summaryw_census_rpt_args_sheet, w_census_rpt_display, dddw_rpt_select, d_census_*
Medicare-age censuses — members with Medicare COB, and members over age 65 (age computed from birth date as of a report date, with coverage level/plan)d_census_medicare_with_cob, d_census_over_65
Dependents over age — dependents older than a threshold as of a date, with subscriber infow_enrollrpt_deps_over_age, d_enrollrpt_deps_age
Enrollment error reports — members with elections but no member coverages ("members without coverages") and single members enrolled in multi-person coverage levelsw_enrollrpt_error_rpts, d_enrollrpt_nocov, d_enrollrpt_single_in_multi
Dependent eligibility audit — first letter, second letter, final report and reprints for DEPAUDIT groups (see ENR-32); final report exportable to textw_dep_audit, d_dep_audit_*
MMO audit — see feeds sectionw_mmo_audit, d_mmo_audit
HB1 member/payment reportw_hb1_report, d_rpt_hb1_payment
HIPAA notes report (in enroll) — HIPAA-related notes by member/group/allenroll/w_notes_hipaa_report_view, d_notes_hipaa_report_*
FSA notices & dependent-care tax statements (in enrollutils) — flexible spending account notices, summary listings, and end-of-year dependent-care tax reports by filing periodenrollutils/w_fsa_notices, w_fsa_depcare_tax_statements, d_fsa_*

Migration notes

  • Effective-dating is the backbone. Nearly every entity (member_eligibilities, elections, election_coverages, member_waiting_periods, students, member_cat_val, group config) is a date-bounded span with null = open-ended. The overlap rule (ENR-3) and the containment rules (ENR-4, ENR-20) are enforced client-side only (PowerScript loops over DataWindow rows, e.g. f_verify_dates_outside_range); a migrated system should enforce them server-side.
  • Cascades are client-side too. Expiration cascade (ENR-6), COBRA event generation (ENR-7/8), ID-card requests (ENR-24) and drug transfer (ENR-25) all run in window code after user prompts; batch termination (ENR-27) builds dynamic SQL strings with 1000-key IN-lists and commits per batch (enrollutils/n_term_enroll) — no single transaction, and interrupted runs can leave partial terminations.
  • Member ID scheme is group-configurable (ENR-12); dependent letter suffixes cap at 25 dependents (B–Z, wf_get_member_suffix). SSNs are stored raw as char(9) and widely used as identifiers (exports, annual statement matching by SSN in enrolrpt/w_annlstmt_member_select) — a privacy/redesign concern.
  • Shared address book with reference counting via the Mailers service (ENR-21/22). The standardization vendor call is a COM/DLL-style non-visual object (invo_mailers); equivalent functionality (CASS-style standardization with user override) must be provided.
  • Audit trail duplication: aud_trail_mbr stores tilde-delimited snapshots parsed by UI string code, with two date formats in the wild (wf_cvt_string_date handles both). Migrate to structured audit rows; the log view expects per-table before/after visibility including deletes.
  • Hard-coded literals to externalize: code keys ELECTLEVEL, MBREXPCOBR, MBEXPNCOBR; category codes SALARY, RELATIONS, DEPAUDIT; group options MEMBER_ID, DEPAUDIT, CobraADM, SSNo; sentinel dates 12/31/2049, 12/31/2050, 01/01/1900 used as "open" markers in SQL.
  • Oracle-specific SQL throughout (CONNECT BY group hierarchies, outer-join (+), DECODE, SYSDATE, TO_DATE); dynamic SQL via EXECUTE IMMEDIATE in termination; rownum used for grouping in audit DataWindows.
  • Legacy/dead code: w_quick_enroll_cob is marked "** OLD **"; w_enrollment_cob_maint and d_qe_cob_detail are commented "NOT REGISTERED"; large commented blocks exist in save paths. Confirm scope before porting.

Open questions

  1. Who writes aud_trail_mbr? No inserts exist in these libraries; presumed database triggers or a shared service. The trigger set and the exact tbl_key/chg_desc encodings must be recovered from the database before the audit log can be re-implemented.
  2. Where do mmo_enrollment_work, ppo_enrollment_work and sp_aetna_enrollment run? Not referenced in enroll/enrollutils/enrolaud/enrolrpt. Locate the owning library or database jobs; only the MMO claims-audit report and the generic eligibility export exist here.
  3. member_accums interplay — accumulators are claims-owned; is any enrollment action (termination, re-enrollment, division transfer) expected to reset or carry over accumulators? No such code exists in these libraries.
  4. Retroactivity policy — the code validates overlaps and containment but nowhere restricts how far back an effective/expiration date may be set; retro changes silently cascade (ENR-6) with no billing-adjustment hook visible in these libraries. Confirm intended retroactivity limits and downstream billing behavior.
  5. uf_validate_mem_id / uf_next_member_seq semantics live in a shared non-visual object (gnv_app.inv_sql, outside these libraries); exact uniqueness scope and sequence source need confirmation from homersys/system libraries.
  6. Medicare handling — only reporting evidence exists (d_census_medicare_with_cob, d_census_over_65); no Medicare status field maintenance was found in the enrollment screens. Confirm whether Medicare status is tracked via COB records only.
  7. HB1 meaninghb1_members/hb1_payments model premium-paying members ("HB1 Member Maintenance", monthly_premium, paid_thru_dt) but the business meaning of "HB1" is not stated in code or comments.
  8. Mailers service contractstr_mailers_address fields (standardized flag, single_ref, new address arrays) imply a specific DLL contract; the vendor product and version are not identified in these libraries.
  9. w_enroll_cobra_dependent_address_sync exists (response window over d_enroll_cobra_dependent_address_sync) suggesting COBRA dependent addresses can be synchronized with subscriber addresses; the triggering conditions were not fully traced.
  10. Dead/disabled code — subscriber-address saves are commented out inside ue_update (address saved via the Mailers path instead); confirm the authoritative address save path before migration.