**APPENDIX C**

Migrate Candidate Violations Processes

This page is intentionally left blank.

**Migrate Candidate Violations Processes**

This appendix documents the processes or steps that take place after the
user specifies Issuing Agency, Year, Status Reason, and Comment
information and then clicking OK to initiate the migration process from
the Issuing Agency Selection dialog box.

**Process: Migrate Candidate Violations** - The following logic is
embedded in the procedure CDS_C_CANDIDATE_VIOLATON_LIST described below.

1.  Read each CANDIDATE_VIOLATION the user selected to be migrated by
    calling cds_read_candidate_violation. The subprocess extracts
    relevant information to create the actual violation from the
    candidate violation and linked records from other CDS tables:

    a.  CDS_FACILITY_ANALYTE_LEVEL - applies to SWTR/DBP violations

    b.  CDS_MDBP_SUMMARY - applies to SWTR/DBP violations

    c.  CDS_ORIGINATING_VIOLATION - applies to PN violations

    d.  CDS_PN_ACTIVITY - applies to PN violations

    e.  CDS_SAMPLE_RESULT - applies to MCL violations

    f.  CDS_SAMPLING_POINT_SUBSCHEDULE - applies to M&R violations

    g.  CDS_SCHEDULE - applies to M/R violations

    h.  CDS_SCHEDULE_ACTIVITY - applies to Schedule Activity violations

    i.  Perform a duplicate by data check by calling
        dup_check_vio_first_step. Impose the duplicate by data checks as
        specified prior to creating actual violations in TMNVIOL:

    j.  If the duplicate check indicates that the new Violation is not
        unique:

        i.  a log with details of the Candidate Violation is written to
            a text file located in the SDWIS context on the server under
            the POST_MIG_REPORTS folder. (A.C.c) . It will have a
            filename in the format POST_MIGYYYYMMDDYYHHMMSS.RPT. As part
            of the details, the log will indicate the status of the
            already existing violation where 'V' - Valid, 'P' -
            Potential or 'R' - Rejected. See more details on the Log
            File Format at the end of this Appendix.

        ii. Do not delete the candidate violation and associated child
            records.

        iii. If the software flows back to the CDS Candidate Violation
             Migration List, highlight candidate violations that were
             identified as duplicate.

2.  When an M&R candidate violation is determined as the result of
    failure to monitor according to an analyte group schedule (i.e.,
    where CDS_CANDIDATE_VIOLATION.Anlgp_Code is valued), migrate the
    candidate violation as a violation group and create hidden
    violations for each analyte in the analyte group that are associated
    to the violation group by calling identify_violation_group,
    otherwise, if the CDS_CANDIDATE_VIOLATION.Analyte_Code is valued,
    migrate the candidate violation as an individual violation by
    calling identify_indiv_violation .

3.  If candidate violation is an M&R-type violation (Vtype_Category_Code
    = 'MON') that is linked to a record in Candidate Schedule
    (TCDSASCH), when the actual M&R violation is created use
    assoc_viol_to_samp_sched.

    a.  If violation references an Analyte , the software should also
        link the new violation in TMNVIOL to the equivalent Sample
        Schedule in TMNSASCH.

    b.  Otherwise, if candidate violation references an Analyte Group,
        when the actual M&R violation group is created in TMNVGRP, the
        software should also link the new violation group to the
        equivalent Sample Schedule Group in TMNSSGRP.

4.  If candidate violation is an MCL-type violation (Vtype_Category_Code
    = 'MCL') and is linked to one or more CDS Sample Results (TCDSSAR),
    when the actual violation is created in TMNVIOL, link the new
    violation to the equivalent Sample Analytical Results (TSASAR), and
    create a record in VIOLATION_SAMPLE_RESULT_ASGMT (TMNVISRA) for each
    associated CDS Sample Result to link the new violation to the sample
    result(s) using associate_sar_to_violation.

5.  If candidate violation is associated to a CDS Facility Analyte
    Level, create the violation in TMNVIOL, and link the new violation
    to the equivalent record in TMNFANL by calling
    add_or_modify_viol_fanl_assoc

6.  If candidate violation is associated to one or more CDS Sampling
    Point Subschedules(s), create the violation in TMNVIOL, and create a
    record in VIOLATION_SAMPLING_POINT_ASGMT (TMNVISPA) for each
    associated CDS Sampling Point Subschedule to link the new violation
    to the sampling point(s). If creating a violation group and when
    hidden violations are created for each analyte in the referenced
    analyte group, hidden violation should be associated with that
    subschedule's sampling point(s). Use add_or_mod_viol_samp_pts_assoc

7.  If candidate violation is associated to a CDS MDBP Summary, when the
    violation is created in TMNVIOL, link the new violation to the
    equivalent summary in MDBP_SUMMARY (TMNMDBPS) by calling
    add_or_modify_viol_mdbp_assoc

8.  If candidate violation is associated to a CDS PN Activity, when the
    violation is created in TMNVIOL, link the new violation to the
    equivalent record(s) in PUBLIC_NOTIFICATION_ACTIVITY (TENPNACT) by
    calling add_or_modify_pn_sched_act_assoc

9.  If candidate violation is associated to a CDS Schedule Activity,
    when the violation is created in TMNVIOL, link the new violation to
    the equivalent records (s) in SCHEDULE_ACTIVITY (TENSCHAT) by
    calling add_or_modify_viol_cmp_sch_act_assc .

10. If candidate violation is associated to one or more CDS Original
    Violations, when the violation is created in TMNVIOL, link the new
    violation to the equivalent original violation by creating a record
    in ORIGINAL_VIOLATION_ASGMT (TMNORVIA). Use
    add_or_mod_originatng_violation

11. If migrating, as validated (VIOLATION.Status = 'V') or preliminary
    (VIOLATION.Status = 'P'), a PN Candidate Violation
    (VIOLATION_TYPE.Type_Code is either 75 or 76) and the
    VIOLATION.Period_End_Date is valued:

    a.  Use **mbs_identify_enforcement_action** action block to create
        an ENFORCEMENT_ACTION record as follows and associate it to the
        newly created violation.

    b.  If the primacy agency (Government Agency where Primacy Indicator
        is 'Y') is defined as type Regional (RG):

        i.  Data_Origin_Code is set to 'R'

        ii. Link to Action Type EOX

        iii. Otherwise, if the primacy agency is defined as type State
             (ST):

        iv. Data_Origin_Code is set to 'S'

        v.  Link to Action Type SOX

        vi. Set ENFORCEMENT_ACTION.Status_Date to
            CDS_CANDIDATE_VIOLATION.FederalViolation_Period_End_Date

        vii. Set ENFORCEMENT_ACTION.Status to 'T' (Taken) if the
             violation is migrated as Validated or 'P' (Potential) if
             the violation is migrated as Preliminary or "R" (Rejected)
             if the violation is migrated as Rejected. (A.C.d)

    c.  Link the ENFORCEMENT_ACTION to the same agency selected by the
        user on the Issuing Agency dialog box.

    d.  Associate the ENFORCEMENT_ACTION record to the VIOLATION record.

    e.  Write to the Post Candidate Violation Migration Report that the
        software created a SOX or EOX enforcement action and associated
        it to the violation with the following message: **A SOX/EOX
        enforcement action was created and associated to Water System
        No. \[Water System Number\], Violation No. \[Violation EXSN\].**

12. Delete CANDIDATE_VIOLATION the (software will delete the candidate
    violation and cascade delete all linked records in other CDS
    tables).

13. Process next Candidate Violation.

    **Subprocess: Read Candidate Violation**

    (Action Block: **cds_read_candidate_violation**)

```{=html}
<!-- -->
```
1.  For each candidate violation selected to be migrated, set
    appropriate table values as follows:

    a.  Set Analyte data from Candidate Violation data.

    b.  Set Analyte Group data from Candidate Violation data.

    c.  Set Monitoring Period data from Candidate Violation data.

    d.  Set Violation data from Candidate Violation data.

    e.  Set Violation Type data from Candidate Violation data.

    f.  Set Water System data from Candidate Violation data.

    g.  Set Water System Facility data from Candidate Violation data.

    h.  If candidate violation is a TCR violation (defined as being of
        type 21, 22, 23, 24, 25, or 26), set Rule data from Candidate
        Violation data.

    i.  If candidate violation is a TCR violation (defined as being of
        type 21, 22, 23, 24, 25, or 26), set Analyte Level Rule
        Assignment data from Candidate Violation data.

    j.  Read associated CDS Facility Analyte Level, if any.

    k.  Read associated CDS PN Activity, if any.

    l.  Read associated CDS Schedule Activity, if any.

    m.  Read associated CDS MDBP Summary, if any.

    n.  Read associated CDS Sampling Point Subschedule/s, if any.

    o.  Read associated CDS Originating Violation/s, if any.

    p.  If Candidate Violation is a monitoring violation (Type = 'MON'),
        read associated CDS Schedule.

    q.  Otherwise if Candidate Violation is an MCL violation
        (Type='MCL'), read each associated CDS Sample Result/s.

**Subprocess: Check for Duplicate Violation**

(Action Block: **dup_check_vio_first_step)**

This is a shared process also used in the Violation Maintenance
component of the Monitoring Business System. Reference design
specifications in Appendix E for the action block
**dup_check_vio_first_step** which incorporates common action block
**dup_check_vio_second_step**

**Subprocess: Create Group Violation**

( Action Block: **identify_violation_group**)

This is a shared process also used in the Violation Maintenance
component of the Monitoring Business System.

1.  Create Violation Group:

    a.  Set Year to year entered on the Issuing Agency Selection dialog
        box.

    b.  Associate to Analyte Group specified in Candidate Violation.

    c.  Associate to Sample Schedule Group specified in Candidate
        Violation.

    d.  Read each Analyte that is part of the Analyte Group

        i.  For each Analyte, create Violation:

            1.  Set Year to year entered on the Issuing Agency Selection
                dialog box.

            2.  Set System_Generated_Code_Indicator to 'Y'

            3.  Set Status_Code to either 'P' (Potential), 'V' (Valid)
                or 'R' (Rejected) as entered on the Issuing Agency
                Selection dialog box.

            4.  Set Status_Reason_code to the user supplied selection
                from the Issuing Agency Selection dialog box (A.C.a)

            5.  Set Remarks_Text to the comments entered on the Issuing
                Agency Selection dialog box

            6.  Set all other fields to the data specified in the
                Candidate Violation

            7.  Associate to Water System as specified in the Candidate
                Violation

            8.  Associate to Water System Facility as specified in the
                Candidate Violation, if any.

            9.  Associate to Violation Type as specified in the
                Candidate Violation

            10. Associate to the Analyte retrieved above

            11. Associate to Issuing (Government) Agency selected on the
                Issuing Agency Selection dialog box.

            12. Associate to the parent Violation Group created above.

            13. Associate to Monitoring Period as specified in the
                Candidate Violation, if any.

            14. Associate to Code of Regulation by creating Code of
                Regulation Assignment, if any (not used for Migrating
                Candidate Violations).

            15. Associate to Rule, if any. No need to associate to Rule
                WS MP Asgmt because TCR violations can never be group
                violations.

                a.  Create Violation Status and set Determination_Date
                    and Type_Code to the Violation's Determination_Date
                    and Status_Type_Code, respectively.

                b.  Associate Violation Status to Violation

    e.  Process next Analyte in the Analyte Group by going back to step
        1.d.

        **Subprocess: Create Individual Violation**

        (Action Block: **identify_indiv_violation**)

        This is a shared process also used in the Violation Maintenance
        component of the Monitoring Business System.

```{=html}
<!-- -->
```
1.  Create Violation:

    a.  Set Year to year entered on the Issuing Agency Selection dialog
        box.

    b.  Set System_Generated_Code_Indicator to 'Y'

    c.  Set Status_Code to either 'P' (Potential), 'V' (Valid) or 'R'
        (Rejected) as entered on the Issuing Agency Selection dialog
        box.

    d.  Set Status_Reason_code to the user-supplied selection from the
        Issuing Agency Selection dialog box. (A.C.b)

    e.  Set Remarks_Text to the comments entered on the Issuing Agency
        Selection dialog box

    f.  Set all other fields to the data specified in the Candidate
        Violation

    g.  Associate to Water System as specified in the Candidate
        Violation

    h.  Associate to Water System Facility as specified in the Candidate
        Violation, if any.

    i.  Associate to Violation Type as specified in the Candidate
        Violation

    j.  Associate to the Analyte as specified in the Candidate Violation

    k.  Associate to Issuing (Government) Agency selected on the Issuing
        Agency Selection dialog box.

    l.  Associate to the parent Violation Group created in 1.

    m.  Associate to Monitoring Period as indicated in the Candidate
        Violation, if any.

    n.  Associate to Code of Regulation by creating Code of Regulation
        Assignment, if any (not used for Migrating Candidate
        Violations).

    o.  Associate to Rule, if any. Also, associate to Rule WS MP Asgmt
        for TCR violations (Type 21, 22, 23, 24, 25, 26).

2.  Create Violation Status and set Determination_Date and Type_Code to
    the Violation's Determination_Date and Status_Type_Code,
    respectively.

    a.  Associate Violation Status to Violation

        **Subprocess: Associate Violation to Sample Schedule/Sample
        Schedule Group**

        (Action Block: **assoc_viol_to_samp_sched**)

        This is a shared process also used in the Violation Maintenance
        component of the Monitoring Business System.

```{=html}
<!-- -->
```
1.  If associating a Group Violation:

    a.  Read each hidden Violation that is a part of the Group Violation

    b.  If a Group Sample Schedule is supplied, associate hidden
        Violation to Hidden Sample Schedule for Group Violation (this is
        the add or change mode applicable to Migrating Candidate
        Violations)

    c.  Otherwise, disassociate Violation from Group Sample Schedule
        (this is the remove association mode that is not used in
        Migrating Candidate Violations)

    d.  Associate Group Sample Schedule to Group Violation

2.  Otherwise, if associating an Individual Violation:

    a.  Read Violation

    b.  Read Sample Schedule

    c.  Associate Sample Schedule to Violation

        **Subprocess: Associate Violation to Sample Results**

        (Action Block: **associate_sar_to_violation**)

        This is a shared process also used in the Violation Maintenance
        component of the Monitoring Business System.

```{=html}
<!-- -->
```
1.  Read Violation.

2.  For each Sample Result (from CDS Sample Result):

    a.  Read Sample Result

    b.  Associate Sample Result to Violation

        **Subprocess: Associate Violation to Facility Analyte Level**

        (Action Block: **add_or_modify_viol_fanl_assoc**)

        This is a shared process also used in the Violation Maintenance
        component of the Monitoring Business System.

```{=html}
<!-- -->
```
1.  If associating a Group Violation:

    a.  Read each hidden Violation that is a part of the Group Violation

    b.  If a Facility Analyte Level is supplied, associate hidden
        Violation to Facility Analyte Level (this is the add or change
        mode applicable to Migrating Candidate Violations)

    c.  Otherwise, disassociate Violation from Facility Analyte Level
        (this is the remove association mode that is not used in
        Migrating Candidate Violations)

2.  Otherwise, if associating an Individual Violation:

    a.  Read Violation

    b.  If a Facility Analyte Level is supplied, associate Violation to
        Facility Analyte Level (this is the add or change mode
        applicable to Migrating Candidate Violations)

    c.  Otherwise, disassociate Violation from Facility Analyte Level
        (this is the remove association mode that is not used in
        Migrating Candidate Violations)

        **Subprocess: Associate Violation to Sampling Points**

        (Action Block: **add_or_mod_viol_samp_pts_assoc**)

        This is a shared process also used in the Violation Maintenance
        component of the Monitoring Business System.

```{=html}
<!-- -->
```
1.  If associating a Group Violation:

    a.  Read each hidden Violation that is a part of the Group Violation

    b.  If a Sampling Point is derived from CDS Sampling Point
        Subschedule, associate each hidden Violation to sampling point
        (this is the add or change mode applicable to Migrating
        Candidate Violations) by creating Violation Sampling Point Asgmt

    c.  Otherwise, disassociate Violation from sampling point (this is
        the remove association mode that is not used in Migrating
        Candidate Violations)

2.  Otherwise, if associating an Individual Violation:

    a.  Read Violation

    b.  If a sampling point is derived from CDS Sampling Point
        Subschedule, associate Violation to Sampling Point (this is the
        add or change mode applicable to Migrating Candidate Violations)
        by creating Violation Sampling Point Asgmt

    c.  Otherwise, disassociate Violation from Sampling Point (this is
        the remove association mode that is not used in Migrating
        Candidate Violations) by creating Violation Sampling Point Asgmt

        **Subprocess: Associate Violation to MDBP Summary**

        (Action Block: **add_or_modify_viol_mdbp_assoc**)

        This is a shared process also used in the Violation Maintenance
        component of the Monitoring Business System.

```{=html}
<!-- -->
```
1.  If associating a Group Violation:

    a.  Read each hidden Violation that is a part of the Group Violation

    b.  If an MDBP Summary is supplied, associate each hidden Violation
        to MDBP Summary (this is the add or change mode applicable to
        Migrating Candidate Violations)

    c.  Otherwise, disassociate Violation from Facility Analyte Level
        (this is the remove association mode that is not used in
        Migrating Candidate Violations)

2.  Otherwise, if associating an Individual Violation:

    a.  Read Violation

    b.  If an MDBP Summary is supplied, associate Violation to MDBP
        Summary (this is the add or change mode applicable to Migrating
        Candidate Violations)

    c.  Otherwise, disassociate Violation from Facility Analyte Level
        (this is the remove association mode that is not used in
        Migrating Candidate Violations)

        **Subprocess: Associate Violation to PN Activities**

        (Action Block: **add_or_modify_pn_sched_act_assoc**)

        This is a shared process also used in the Violation Maintenance
        component of the Monitoring Business System.

```{=html}
<!-- -->
```
1.  If associating a Group Violation:

    a.  Read each hidden Violation that is a part of the Group Violation

        i.  Read each PN Activity

        ii. If PN Activity is for association, associate hidden
            Violation to PN Activity (this is the add or change mode
            applicable to Migrating Candidate Violations)

        iii. If PN Activity is for disassociation, disassociate
             Violation from PN Activity (this is the remove association
             mode that is not used in Migrating Candidate Violations)

2.  Otherwise, if associating an Individual Violation:

    a.  Read Violation

        i.  Read each PN Activity

        ii. If PN Activity is for association, associate Violation to PN
            Activity (this is the add or change mode applicable to
            Migrating Candidate Violations)

        iii. If PN Activity is for disassociation, disassociate
             Violation from PN Activity (this is the remove association
             mode that is not used in Migrating Candidate Violations)

             **Subprocess: Associate Violation to Schedule Activities**

             (Action Block: **add_or_modify_viol_cmp_sch_act_assc** )

             This may be a shared process that may also be used in the
             Violation Maintenance component of the Monitoring Business
             System.

```{=html}
<!-- -->
```
1.  If associating a Group Violation:

    a.  Read each hidden Violation that is a part of the Group Violation

        i.  Read each Schedule Activity

        ii. If Schedule Activity is for association, associate each
            hidden Violation to Schedule Activity (this is the add or
            change mode applicable to Migrating Candidate Violations)

        iii. If Schedule Activity is for disassociation, disassociate
             Violation from Schedule Activity (this is the remove
             association mode that is not used in Migrating Candidate
             Violations)

2.  Otherwise, if associating an Individual Violation:

    a.  Read Violation

        i.  Read each Schedule Activity

        ii. If Schedule Activity is for association, associate Violation
            to Schedule Activity (this is the add or change mode
            applicable to Migrating Candidate Violations)

        iii. If Schedule Activity is for disassociation, disassociate
             Violation from Schedule Activity (this is the remove
             association mode that is not used in Migrating Candidate
             Violations)

             **Subprocess: Associate Violation to Original Violations**

             (Action Block: **add_or_mod_originatng_violation**) **-**
             This is a shared process also used in the Violation
             Maintenance component of the Monitoring Business System.

```{=html}
<!-- -->
```
1.  Read PN Violation:

    a.  If associating an Original Group Violation

        i.  Read each Original Violation that is part of the Original
            Group Violation

        ii. Associate Original Violation to PN Violation by creating
            Original Violation Asgmt

    b.  If associating an Individual Original Violation

        i.  Read Original Violation

        ii. Associate Original Violation to PN Violation by creating
            Original Violation Asgmt

            **Log File Format:**

```{=html}
<!-- -->
```
1.  The header text at the top of the Post Candidate Violation Migration
    Report should say the following:

> **For Your Information: \[userid\] tried to migrate the following list
> of candidate violations into SDWIS/STATE. These were not migrated
> because a duplicate violation already existed in SDWIS/STATE.**
>
> A duplicate violation is defined as a violation with a status of
> validated, preliminary, or rejected that has the same violation type,
> same state violation period begin date, same water system, same water
> system facility and same analyte. If the violation type is 75 or 76,
> the originating violation is also part of the duplicate check.
>
> If the candidate violation references a water system facility and the
> existing one does not, it is not a duplicate even if all of the rest
> of the data indicated above matches. Similarly, if the candidate
> violation does not reference a water system facility and the existing
> one does, it is not a duplicate even if all of the rest of the data
> indicated above matches.
>
> If the candidate violation references an analyte and the existing one
> does not, it is not a duplicate even if all of the rest of the data
> indicated above matches. Similarly, if the candidate violation does
> not reference an analyte and the existing one does, it is not a
> duplicate even if all of the rest of the data indicated above matches.
>
> If the candidate violation was for an analyte group and some but not
> all of the violations that would be created were duplicate, then those
> analytes referenced by the candidate violation\'s analyte group that
> were duplicate will be listed along with the analyte group of the
> candidate violation.

2.  The following sample Post Candidate Violation Migration Report shows
    how the report should be formatted as well as provides examples of
    violations/violation groups that could not be migrated because of
    failure of one of the above duplicate checks. All data in the report
    comes from the Candidate CDS Violation table (TCDVIOL).

The status shown on the report is the status used to migrate the
candidate violation.

\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*

POST CANDIDATE VIOLATION MIGRATION REPORT

POSTMIG_20070706122911.RPT

DATE - 07/06/2007 TIME - 12:29:11

\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*

\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*

> **For Your Information: JSMITH tried to migrate the following list of
> candidate violations into SDWIS/STATE. These were not migrated because
> a duplicate violation already existed in SDWIS/STATE.**
>
> A duplicate violation is defined as a violation with a status of
> validated, preliminary, or rejected that has the same violation type,
> same state violation period begin date, same water system, same water
> system facility and same analyte. If the violation type is 75 or 76,
> the originating violation is also part of the duplicate check.
>
> If the candidate violation references a water system facility and the
> existing one does not, it is not a duplicate even if all of the rest
> of the data indicated above matches. Similarly, if the candidate
> violation does not reference a water system facility and the existing
> one does, it is not a duplicate even if all of the rest of the data
> indicated above matches.
>
> If the candidate violation references an analyte and the existing one
> does not, it is not a duplicate even if all of the rest of the data
> indicated above matches. Similarly, if the candidate violation does
> not reference an analyte and the existing one does, it is not a
> duplicate even if all of the rest of the data indicated above matches.
>
> If the candidate violation was for an analyte group and some but not
> all of the violations that would be created were duplicate, then those
> analytes referenced by the candidate violation\'s analyte group that
> were duplicate will be listed along with the analyte group of the
> candidate violation.

PWS No. & Name WSF State Assigned ID & Name

Vio. Type Status Analyte/Analyte Group State Vio. Period Begin Date

\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\--

IL0310780 - ELMWOOD PARK; CC01 - CC 01-PUMPING STAT 7418 W FULLERTON

27 MJ V ORTHOPHOSPHATE (1044) 02/01/1999

IL0315880 - LEYDEN TWSP WATER DISTRICT

22 V COLIFORM, TOTAL (TCR) 01/01/2003

IL0950085 -- ABINGDON; WELL52003 -- WELL 3 100E LATIMER S SIDE ST IN
PARK

03 V INORGANIC CHEMICALS (IOC) 07/01/2001

MANGANESE (1032)

MERCURY (1035)

SELENIUM (1045)

**Exhibit C-1.** Post Candidate Violation Migration Report