SAIF.Business.External.Users operations and processes¶
This page is the operation catalog and cross-operation hub for SAIF.Business.External.Users. The library centers on external-user registration, account maintenance, user-type and access-group administration, premium-audit routing, and supporting lookup utilities. Each operation's detailed, step-by-step logic lives in its own page under operations/.
Operation catalog¶
| Operation | Intent | Trigger | Inputs | Outputs | Rules | Tables | SQL |
|---|---|---|---|---|---|---|---|
| User self-registration and account management | Create, retrieve, update, and post-process external-user accounts | clsUser.NewUser, clsUser.GetUser, clsUser.GetForgottenUser, or clsUser.UpdateLastLogonDate |
clsNewUserArgs, UserID, AD user ID, email, user-type context, child collections |
Persisted EXT_USER row, saved child objects, forgotten-user match, updated last-logon timestamp |
BR-EU-01, BR-EU-04, BR-EU-05 | EXT_USER, EXT_USER_TYPE, EMAIL_ADDRESS | SQL-005, SQL-015, SQL-016, SQL-017, SQL-018, SQL-019, SQL-045, SQL-046 |
| Deny self-registration check | Maintain and query the self-registration block list | clsUserDenySelfRegistration CRUD or clsUserDenySelfRegistrationCollection.GetUserDenySelfRegistrations |
User-type code, source-system group ID, customer-requested flag, reason | Matching deny-list row(s) or persisted block-list change | BR-EU-02, BR-EU-05 | EXT_USER_DENY_SELF_REG | SQL-007, SQL-027, SQL-048, SQL-054 |
| Security question management | Maintain a user's security-question answers and the active question catalog | clsUserSecurityQuestion CRUD, GetUserSecurityQuestionsByUserID, or GetAllSecurityQuestions |
User ID, question code, answer, culture code | Persisted question rows or active question choices | BR-EU-05 | EXT_USER_SECURITY_QUESTION, EXT_USER_SEC_QUESTION_CODE | SQL-008, SQL-028, SQL-029, SQL-049, SQL-055 |
| Auditor assignment override management | Maintain premium auditors, auditor zip routing, and policy-specific default or exclusion overrides | Auditor, zip-code, or override CRUD; default-auditor resolution for a policy | Auditor metadata, zip codes, policy number, override auditor IDs, audit type | Persisted PA_AUDITOR, PA_AUDITOR_ZIP_CODE, and PA_ASSIGN_OVERRIDE rows; resolved default auditor |
BR-EU-03 | PA_AUDITOR, PA_AUDITOR_ZIP_CODE, PA_ASSIGN_OVERRIDE | SQL-001, SQL-002, SQL-003, SQL-004, SQL-010, SQL-011, SQL-012, SQL-013, SQL-042, SQL-043, SQL-044, SQL-052 |
| User access group management | Load, reconcile, and persist access-group selections for a user type | Access-group list retrieval, AD reconciliation helpers, or access-group save | User-type ID, user-type code, access type, AD group list, selected flags | Possible groups, AD-derived additions/removals, persisted access-group rows | BR-EU-05 | EXT_USER_ACCESS_GROUP, EXT_USER_ACCESS_GROUP_CODE, EXT_USER_ACCESS_GROUP_AD, EXT_USER_AD_GROUP | SQL-006, SQL-021, SQL-022, SQL-023, SQL-024, SQL-025, SQL-026, SQL-047, SQL-053 |
| User type management | Create, validate, and persist user-type rows and their provider/policy helper actions | clsUserType CRUD, GetUserTypesByUserID, policy/provider helper methods |
User-type metadata, customer IDs, source-system values, policy number, provider email | Persisted EXT_USER_TYPE row, saved customer/access-group children, helper booleans and EFT updates |
BR-EU-05 | EXT_USER_TYPE, EXT_USER_TYPE_CODE, EXT_USER_STATUS_CODE, PAYMENT_AUTHORIZATION, PROVIDER_EOB_INTERFACE | SQL-009, SQL-030, SQL-031, SQL-032, SQL-033, SQL-034, SQL-035, SQL-036, SQL-038, SQL-039, SQL-050, SQL-051, SQL-056 |
| Premium auditor lookup | Resolve an auditor from AD user ID and vendor number | mdlAuditor.LoadAuditor |
AD user ID, vendor number, test-user flag | Retrieved clsAuditor object |
— | PA_AUDITOR | SQL-041 |
| Zip code routing lookup | Resolve county, office, and audit-office routing for a zip code | clsZipCode.GetZipCode |
Zip code | Populated routing object or empty lookup object | — | PA_ZIP_CODE, COUNTY, OFFICE_CODE | SQL-037 |
| Provider registration validation | Validate a medical-provider registration request before account creation | clsNewUserArgs.ValidateMedicalProviderRegistration or clsNewUserArgs.IsValidProviderRegistration |
Provider tax ID or provider ID, bill ID, claim number, self-registration context | Boolean validation result and caller-facing error message | BR-EU-02 | DUAL, EXT_USER_DENY_SELF_REG | SQL-014 |
| User search | Search external users with optional filters and row limiting | clsUserCollection.GetUsers(...) search overload |
Test-user flag, access group, customer ID, partial AD ID, partial email, partial name, status code, user-type code, optional row limit | Collection of matching users | — | EXT_USER, PERSON, EXT_USER_TYPE, EXT_USER_ACCESS_GROUP, COMPANY, PERSON_EMAIL, EMAIL_ADDRESS | SQL-020 |
| Password generation and validation | Generate temporary passwords and validate caller-supplied passwords | clsPassword.Generate or clsPassword.IsValid |
Password length, special-character count, user ID, first name, last name, candidate password | Generated password string or validation result with messages | BR-EU-06 | None | None |
Process flow diagram¶
The following diagram shows how the major external-user operations interact from registration through ongoing administration.
flowchart TD
Start([External-user request]) --> Validate[Validate registration or admin input]
Validate --> Provider[Provider registration validation]
Validate --> Deny[Deny self-registration check]
Validate --> Password[Password generation and validation]
Provider --> Account[User self-registration and account management]
Deny --> Account
Password --> Account
Account --> Questions[Security question management]
Account --> Types[User type management]
Types --> Groups[User access group management]
Types --> Search[User search]
Account --> Search
Account --> AuditorLookup[Premium auditor lookup]
AuditorLookup --> AuditorAdmin[Auditor assignment override management]
AuditorAdmin --> Zip[Zip code routing lookup]
Zip --> AuditorAdmin
Search --> Done([Read or persisted result returned])
Questions --> Done
Groups --> Done
AuditorAdmin --> Done
Database interactions¶
The following table summarizes which operations read from or write to the database. Per-step SQL and table citations live in each operation's detail page under operations/.
Stored procedure operations¶
Operations implemented in Oracle stored procedures referenced by this library.
| Operation | Description | Source | Link |
|---|---|---|---|
| Provider registration validation | Validates that the provider, bill, and claim combination is eligible for registration | pk82396_medical_bills.ValidateProvReg |
Details |
| Quoted policy expiry check | Evaluates whether a quoted policy has expired before policyholder self-registration | pk72971_epay_policy.is_expired_quoted_policy |
Details |
| Billing plan type retrieval | Verifies that a quoted or pending policy has an established billing plan | pk72971_epay_policy.get_policy_billing_plan_type |
Details |
| ePay eligibility check | Verifies that the billing plan supports the installment pattern required for self-registration | pk72971_epay_policy.is_policy_eligible_for_epay |
Details |
Failure and edge-case behavior¶
- Duplicate active non-test email addresses fail validation before the user row is persisted (BR-EU-04).
- Updates on BOF-managed tables rely on
UPDATE_NUM; if the row-count check fails, the operation reports a DB-contention error instead of silently overwriting data (BR-EU-05). - Self-registration validators actively query the deny list for agency, provider, policyholder, and injured-worker registrations; any matching row blocks the registration path (BR-EU-02).
- The stored-procedure package bodies referenced by Provider registration validation and the policy helper methods are not present in this repository, so their database-side behavior must be taken from the SQL and procedure documentation rather than traced local source.**
- Lookup-style operations such as Premium auditor lookup and Zip code routing lookup return whatever data the backing read path finds; when no row matches, callers receive an empty or default object rather than a persisted update.
Related documentation¶
- Index
- Overview
- Architecture
- Dependencies
- Business rules
- Database tables
- SQL catalog
- Procedures
- API reference
- Configuration
Note: Statements marked with * were inferred from code structure, naming conventions, or contextual evidence where direct confirmation was not available in source artifacts. Statements marked with ** could not be confirmed; treat as unknown until verified.
Sources¶
Business\SAIF.Business.External.Users\clsAuditAssignmentOverride.vbBusiness\SAIF.Business.External.Users\clsAuditor.vbBusiness\SAIF.Business.External.Users\clsAuditorCollection.vbBusiness\SAIF.Business.External.Users\clsAuditorZipCode.vbBusiness\SAIF.Business.External.Users\clsAuditorZipCodeCollection.vbBusiness\SAIF.Business.External.Users\clsNewUserArgs.vbBusiness\SAIF.Business.External.Users\clsPassword.vbBusiness\SAIF.Business.External.Users\clsUser.vbBusiness\SAIF.Business.External.Users\clsUserAccessGroup.vbBusiness\SAIF.Business.External.Users\clsUserDenySelfRegistration.vbBusiness\SAIF.Business.External.Users\clsUserSecurityQuestion.vbBusiness\SAIF.Business.External.Users\clsUserType.vbBusiness\SAIF.Business.External.Users\clsZipCode.vbBusiness\SAIF.Business.External.Users\mdlAuditor.vbBusiness\SAIF.Business.External.Users\mdlCodeMaps.vbBusiness\SAIF.Business.External.Users\mdlGroupAssociation.vb