find_cmm DROP FUNCTION IF EXISTS mig_func_schema.find_cmm(BIGINT) CREATE OR REPLACE FUNCTION mig_func_schema.find_cmm(circ_id BIGINT) RETURNS SETOF INTEGER[] LANGUAGE plpgsql AS $function$ DECLARE aou INTEGER; ac INTEGER; au INTEGER; r INTEGER[]; BEGIN SELECT circ_lib FROM action.circulation WHERE id = circ_id INTO aou; SELECT target_copy FROM action.circulation WHERE id = circ_id INTO ac; SELECT usr FROM action.circulation WHERE id = circ_id INTO au; FOR r IN SELECT buildrows FROM action.find_circ_matrix_matchpoint(aou,ac,au,FALSE) LOOP RETURN NEXT r; END LOOP; RETURN; END $function$ circ_count Circs 0 Open Circulations Circulation Status.Migrated.Count of Circs SELECT 'Closed Circulations', x_migrate::TEXT, COUNT(id) FROM MIGSCHEMA.action_circulation_legacy WHERE xact_finish IS NOT NULL GROUP BY 2 UNION ALL SELECT 'Open Circulations', x_migrate::TEXT, COUNT(id) FROM MIGSCHEMA.action_circulation_legacy WHERE xact_finish IS NULL GROUP BY 2 circ_count Circs 1 Open Circulations Circulation Status.Count of Circs SELECT 'Closed Circulations', COUNT(id) FROM MIGSCHEMA.action_circulation WHERE xact_finish IS NOT NULL UNION ALL SELECT 'Open Circulations', COUNT(id) FROM MIGSCHEMA.action_circulation WHERE xact_finish IS NULL circ_by_orgunit Circs 0 Circulations by Org Unit Circulations Count.Migrated.Org Unit SELECT COUNT(acirc.id), acirc.x_migrate::TEXT, aou.name FROM MIGSCHEMA.action_circulation_legacy acirc JOIN actor.org_unit aou ON aou.id = acirc.circ_lib WHERE acirc.xact_finish IS NULL GROUP BY 2, 3 circ_by_orgunit Circs 1 Circulations by Org Unit Circulations Count.Org Unit SELECT COUNT(acirc.id), aou.name FROM MIGSCHEMA.action_circulation acirc JOIN actor.org_unit aou ON aou.id = acirc.circ_lib WHERE acirc.xact_finish IS NULL GROUP BY 2 circs_by_duration Circs 0 Migrated Circulations by Duration, Fine and Max Fine Count of Circs.Duration.Fine.Max Fine.Migrated SELECT COUNT(id), duration, recurring_fine, max_fine, x_migrate::TEXT FROM MIGSCHEMA.action_circulation_legacy WHERE x_migrate = TRUE GROUP BY 2, 3, 4, 5 circs_by_duration Circs 1 Circulations by Duration, Fine and Max Fine Count of Circs.Duration.Fine.Max Fine SELECT COUNT(id), duration, recurring_fine, max_fine FROM MIGSCHEMA.action_circulation GROUP BY 2, 3, 4 ORDER BY 2, 3, 4 circs_by_usrgroup Circs 0 Circulations by Rules and Patron Group Count of Circs.Duration.Fine.Max Fine.User Group.Matchpoints SELECT COUNT(acirc.id), acirc.duration, acirc.recurring_fine, acirc.max_fine, pgt.name, x.buildrows FROM MIGSCHEMA.action_circulation_legacy acirc JOIN actor.usr au ON au.id = acirc.usr JOIN permission.grp_tree pgt ON pgt.id = au.profile JOIN (SELECT acirc.id, ARRAY_TO_STRING(mig_func_schema.find_cmm(acirc.id),',') AS buildrows FROM MIGSCHEMA.action_circulation_legacy acirc WHERE acirc.x_migrate = TRUE) x ON x.id = acirc.id WHERE acirc.x_migrate = TRUE GROUP BY 2, 3, 4, 5, 6 ORDER BY 2, 3, 4, 5, 6 circs_by_usrgroup Circs 1 Circulations by Rules and Patron Group Count of Circs.Duration.Fine.Max Fine.User Group.Matchpoints SELECT COUNT(acirc.id), acirc.duration, acirc.recurring_fine, acirc.max_fine, pgt.name, x.buildrows FROM MIGSCHEMA.action_circulation acirc JOIN actor.usr au ON au.id = acirc.usr JOIN permission.grp_tree pgt ON pgt.id = au.profile JOIN (SELECT acirc.id, ARRAY_TO_STRING(mig_func_schema.find_cmm(acirc.id),',') AS buildrows FROM MIGSCHEMA.action_circulation acirc) x ON x.id = acirc.id GROUP BY 2, 3, 4, 5, 6 ORDER BY 2, 3, 4, 5, 6 circs_by_circmod Circs 0 Circulations by Rules and Circulation Modifier Count of Circs.Duration.Fine.Max Fine.Circulation Modifier.Matchpoints SELECT COUNT(acirc.id), acirc.duration, acirc.recurring_fine, acirc.max_fine, ac.circ_modifier, x.buildrows FROM MIGSCHEMA.action_circulation_legacy acirc JOIN asset.copy ac ON ac.id = acirc.target_copy JOIN (SELECT acirc.id, ARRAY_TO_STRING(mig_func_schema.find_cmm(acirc.id),',') AS buildrows FROM MIGSCHEMA.action_circulation_legacy acirc WHERE acirc.x_migrate = TRUE) x ON x.id = acirc.id WHERE acirc.x_migrate = TRUE GROUP BY 2, 3, 4, 5, 6 ORDER BY 2, 3, 4, 5, 6 circs_by_circmod Circs 1 Circulations by Rules and Circulation Modifier Count of Circs.Duration.Fine.Max Fine.Circulation Modifier.Matchpoints SELECT COUNT(acirc.id), acirc.duration, acirc.recurring_fine, acirc.max_fine, ac.circ_modifier, x.buildrows FROM MIGSCHEMA.action_circulation acirc JOIN asset.copy ac ON ac.id = acirc.target_copy JOIN (SELECT acirc.id, ARRAY_TO_STRING(mig_func_schema.find_cmm(acirc.id),',') AS buildrows FROM MIGSCHEMA.action_circulation acirc) x ON x.id = acirc.id GROUP BY 2, 3, 4, 5, 6 ORDER BY 2, 3, 4, 5, 6 circs_by_orgunit Circs 0 Circulations by Rules and Org Unit Count of Circs.Duration.Fine.Max Fine.Library Branch SELECT COUNT(acirc.id), acirc.duration, acirc.recurring_fine, acirc.max_fine, aou.name FROM MIGSCHEMA.action_circulation_legacy acirc JOIN actor.org_unit aou ON aou.id = acirc.circ_lib WHERE acirc.x_migrate = TRUE GROUP BY 2, 3, 4, 5 ORDER BY 2, 3, 4, 5 circs_by_orgunit Circs 1 Circulations by Rules and Org Unit Count of Circs.Duration.Fine.Max Fine.Library Branch SELECT COUNT(acirc.id), acirc.duration, acirc.recurring_fine, acirc.max_fine, aou.name FROM MIGSCHEMA.action_circulation acirc JOIN actor.org_unit aou ON aou.id = acirc.circ_lib GROUP BY 2, 3, 4, 5 ORDER BY 2, 3, 4, 5 non_cat_circs Circs 0 Non-Cataloged Circulation Circulations Count.Migrated SELECT COUNT(id), x_migrate::TEXT FROM MIGSCHEMA.action_non_cataloged_circulation_legacy GROUP BY 2 non_cat_circs Circs 1 Non-Cataloged Circulation Circulations Count SELECT COUNT(id) FROM MIGSCHEMA.action_non_cataloged_circulation in_house Circs 0 In House Use In House Use Records.Migrated SELECT COUNT(id), x_migrate::TEXT FROM MIGSCHEMA.action_in_house_use_legacy GROUP BY 2 in_house Circs 1 In House Use In House Use Records SELECT COUNT(id) FROM MIGSCHEMA.action_in_house_use circs_missing_rules Circs 1 Circs Missing Rules Count.Field Missing SELECT COUNT(id), 'Duration Rule Value' FROM MIGSCHEMA.action_circulation WHERE duration IS NULL UNION ALL SELECT COUNT(id), 'Recurring Fine Rule Value' FROM MIGSCHEMA.action_circulation WHERE recurring_fine IS NULL UNION ALL SELECT COUNT(id), 'Max Fine Rule Value' FROM MIGSCHEMA.action_circulation WHERE max_fine IS NULL UNION ALL SELECT COUNT(id), 'Duration Rule' FROM MIGSCHEMA.action_circulation WHERE duration_rule IS NULL UNION ALL SELECT COUNT(id), 'Recurring Fine Rule' FROM MIGSCHEMA.action_circulation WHERE recurring_fine_rule IS NULL UNION ALL SELECT COUNT(id), 'Max Fine Rule' FROM MIGSCHEMA.action_circulation WHERE max_fine_rule IS NULL circ_open_by_item_status Circs 0 Open Circulation and Status of Linked Items Count.Status SELECT COUNT(acirc.id), ccs.name FROM action.circulation acirc JOIN asset.copy ac ON ac.id = acirc.target_copy JOIN config.copy_status ccs ON ccs.id = ac.status WHERE acirc.xact_finish IS NULL AND acirc.checkin_time IS NULL AND acirc.id IN (SELECT id FROM MIGSCHEMA.action_circulation) GROUP BY 2 ORDER BY 2 holds Holds 0 Migrated Holds Hold Type.Hold Count.Migrated SELECT 'Closed Holds', COUNT(id), x_migrate::TEXT FROM MIGSCHEMA.action_hold_request_legacy WHERE (expire_time::TIMESTAMP < now()) OR cancel_time IS NOT NULL OR fulfillment_time IS NOT NULL GROUP BY 3 UNION ALL SELECT 'Open Holds', COUNT(id), x_migrate::TEXT FROM MIGSCHEMA.action_hold_request_legacy WHERE (expire_time IS NULL OR expire_time::TIMESTAMP > now()) AND cancel_time IS NULL AND fulfillment_time IS NULL GROUP BY 3 holds_bytype Holds 0 Migrated Holds By Type Hold Type.Hold Count.Migrated SELECT hold_type as "Hold Type", COUNT(id), x_migrate::TEXT FROM MIGSCHEMA.action_hold_request_legacy GROUP BY 1, 3 transit_open_by_item_status Holds 0 Transit Copy Records and Status of Linked Items Count.Status SELECT COUNT(atc.id), ccs.name FROM action.transit_copy atc JOIN asset.copy ac ON ac.id = atc.target_copy JOIN config.copy_status ccs ON ccs.id = ac.status WHERE atc.id IN (SELECT id FROM MIGSCHEMA.action_transit_copy) AND atc.dest_recv_time IS NULL GROUP BY 2 ORDER BY 2 transit_copies_by_status Holds 0 Status of Items with Count of Open In Transits Count.Status.Count of Open Transits SELECT COUNT(ac.id), ccs.name, SUM(CASE WHEN atc.id IS NULL THEN 0 ELSE 1 END) FROM asset.copy ac JOIN config.copy_status ccs ON ccs.id = ac.status LEFT JOIN (SELECT * FROM action.transit_copy WHERE id IN (SELECT id FROM MIGSCHEMA.action_transit_copy) AND dest_recv_time IS NULL) atc ON atc.target_copy = ac.id WHERE ac.id IN (SELECT id from MIGSCHEMA.asset_copy) GROUP BY 2 ORDER BY 2 hold_copies_by_status Holds 0 Captured Holds with Status of Items Count of Captured Hold.Status of Item SELECT COUNT(ahr.id), ccs.name FROM action.hold_request ahr JOIN asset.copy ac ON ac.id = ahr.current_copy JOIN config.copy_status ccs ON ccs.id = ac.status WHERE ahr.capture_time IS NOT NULL AND ahr.fulfillment_time IS NULL and ahr.cancel_time IS NULL AND ahr.id IN (SELECT id FROM MIGSCHEMA.action_hold_request) GROUP BY 2 ORDER By 2 hold_depth Holds 0 Depth of Unfilled Holds Count.Depth SELECT COUNT(ahr.id), ahr.selection_depth FROM action.hold_request ahr WHERE ahr.id IN (SELECT id FROM MIGSCHEMA.action_hold_request) AND ahr.cancel_time IS NULL AND ahr.capture_time IS NULL AND ahr.fulfillment_time IS NULL GROUP BY 2 ORDER BY 2 asset_copy_count Count of Copies by Library Assets 0 Copy Count.Library.Migrated SELECT COUNT(ac.id), aou.name, ac.x_migrate::TEXT FROM MIGSCHEMA.asset_copy_legacy ac JOIN actor.org_unit aou ON aou.id = ac.circ_lib GROUP BY 2, 3 ORDER BY 2, 3 asset_deleted_copies Deleted Copies Assets 0 Copy Count.Deleted.Migrated SELECT COUNT(ac.id), ac.deleted::TEXT, ac.x_migrate::TEXT FROM MIGSCHEMA.asset_copy_legacy ac GROUP BY 2, 3 asset_copies_by_status Copies by Status Assets 0 Copy Count.Status.Migrated SELECT COUNT(ac.id), cs.name, ac.x_migrate::TEXT FROM MIGSCHEMA.asset_copy_legacy ac JOIN config.copy_status cs ON cs.id = ac.status GROUP BY 2, 3 ORDER BY 2, 3 asset_circ_mod_copies_count Copies by Circulation Modifier Assets 0 Copy Count.Circulation Modifier.Migrated SELECT COUNT(ac.id), ac.circ_modifier, ac.x_migrate::TEXT FROM MIGSCHEMA.asset_copy_legacy ac GROUP BY 2, 3 ORDER BY 2, 3 asset_copy_notes Copy Notes Assets 0 Note Count.Public.Migrated SELECT COUNT(acnote.id), acnote.pub::TEXT, acnote.x_migrate::TEXT FROM MIGSCHEMA.asset_copy_note_legacy acnote GROUP BY 2, 3 ORDER BY 2, 3 asset_copy_notes Copy Notes Assets 1 Note Count.Public SELECT COUNT(acnote.id), acnote.pub::TEXT FROM MIGSCHEMA.asset_copy_note acnote GROUP BY 2 ORDER BY 2 asset_vols_by_lib Volumes by Library Assets 0 Volume Count.Library.Migrated SELECT COUNT(acn.id), aou.name, acn.x_migrate::TEXT FROM MIGSCHEMA.asset_call_number_legacy acn JOIN MIGSCHEMA.actor_org_unit_legacy aou ON aou.id = acn.owning_lib GROUP BY 2, 3 ORDER BY 2, 3 asset_vols_by_lib Volumes by Library Assets 1 Volume Count.Library SELECT COUNT(acn.id), aou.name FROM MIGSCHEMA.asset_call_number acn JOIN actor.org_unit aou ON aou.id = acn.owning_lib GROUP BY 2 ORDER BY 2 asset_cops_by_loc_and_org Copies by Location Assets 0 Copy Count.Library.Circ Library.Migrated SELECT COUNT(ac.id), acl.name, aou.name, ac.x_migrate::TEXT FROM MIGSCHEMA.asset_copy_legacy ac JOIN asset.copy_location acl ON acl.id = ac.location JOIN actor.org_unit aou ON aou.id = ac.circ_lib GROUP BY 2, 3, 4 ORDER BY 2, 3, 4 asset_barcode_lengths Barcode Lengths by Library Assets 0 Count of Barcode.Barcode Length.Library SELECT COUNT(ac.id), LENGTH(ac.barcode), aou.name FROM MIGSCHEMA.asset_copy_legacy ac JOIN actor.org_unit aou ON aou.id = ac.circ_lib WHERE ac.x_migrate = TRUE GROUP BY 2, 3 ORDER BY 3, 2 asset_barcode_patterns Common Barcode Starting Patterns Assets 0 Count of Barcodes (greater than 10).Left 60% of Characters SELECT COUNT(ac.id), LEFT(ac.barcode,(ROUND(LENGTH(ac.barcode)*.6))::INT) FROM MIGSCHEMA.asset_copy_legacy ac WHERE ac.x_migrate = TRUE GROUP BY 2 HAVING COUNT(ac.id) > 10 ORDER BY 2 asset_barcode_incumbent_collisions Copy Barcode Incumbent Collisions Assets 0 Collision Count SELECT COUNT(id) FROM MIGSCHEMA.asset_copy_legacy WHERE x_migrate = TRUE AND barcode ~* 'collision' and barcode ~* 'incumbent' Incumbent collisions are those where the migrated barcodes collide with existing barcodes in the database. asset_barcode_incumbent_collisions Copy Barcode Incumbent Collisions Assets 1 Collision Count SELECT COUNT(id) FROM MIGSCHEMA.asset_copy WHERE barcode ~* 'collision' and barcode ~* 'incumbent' Incumbent collisions are those where the migrated barcodes collide with existing barcodes in the database. asset_barcode_internal_collisions Copy Barcode Internal Collisions Assets 0 Collision Count SELECT COUNT(id) FROM MIGSCHEMA.asset_copy_legacy WHERE x_migrate = TRUE AND barcode ~* 'collision' and barcode ~* 'internal' Internal collisions are those where the migrated barcodes have conflicts within their list of barcodes. asset_barcode_internal_collisions Copy Barcode Internal Collisions Assets 1 Collision Count SELECT COUNT(id) FROM MIGSCHEMA.asset_copy WHERE barcode ~* 'collision' and barcode ~* 'internal' Internal collisions are those where the migrated barcodes have conflicts within their list of barcodes. asset_barcode_collisions_shortlist Copy Barcode Collisions (first 20) Assets 0 Collision List SELECT ac.barcode FROM MIGSCHEMA.asset_copy_legacy ac WHERE ac.barcode ~* 'collision' ORDER BY 1 LIMIT 20 This is a shortlist of patron barcode collisions that maxes out at 20. If there are more collisions we will need to run a custom report. asset_barcode_collisions_shortlist Copy Barcode Collisions (first 20) Assets 1 Collision List SELECT ac.barcode FROM MIGSCHEMA.asset_copy ac WHERE ac.barcode ~* 'collision' ORDER BY 1 LIMIT 20 This is a shortlist of patron barcode collisions that maxes out at 20. If there are more collisions we will need to run a custom report. asset_barcode_collision_patterns Common Copy Barcode Collision Patterns Assets 0 Number of Barcodes Matching Pattern Greater than 10.Left 60% of Characters SELECT COUNT(ac.id), LEFT(ac.barcode,(ROUND(LENGTH(ac.barcode)*.6))::INT) FROM MIGSCHEMA.asset_copy_legacy ac WHERE barcode ~* 'collision' GROUP BY 2 HAVING COUNT(ac.id) > 10 ORDER BY 2 asset_barcode_collision_patterns Common Copy Barcode Collision Patterns Assets 1 Number of Barcodes Matching Pattern Greater than 10.Left 60% of Characters SELECT COUNT(ac.id), LEFT(ac.barcode,(ROUND(LENGTH(ac.barcode)*.6))::INT) FROM MIGSCHEMA.asset_copy ac WHERE barcode ~* 'collision' GROUP BY 2 HAVING COUNT(ac.id) > 10 ORDER BY 2 asset_stat_cats Copy Statistical Categories Assets 0 Stat Cat Count.Library.Statistical Category SELECT COUNT(ac_sc.id), aou.name, ac_sc.name FROM MIGSCHEMA.asset_stat_cat_legacy ac_sc JOIN actor.org_unit aou ON aou.id = ac_sc.owner GROUP BY 2,3 ORDER BY 2,3 asset_stat_cats Copy Statistical Categories Assets 1 Stat Cat Count.Library.Statistical Category SELECT COUNT(ac_sc.id), aou.name, ac_sc.name FROM MIGSCHEMA.asset_stat_cat ac_sc JOIN actor.org_unit aou ON aou.id = ac_sc.owner GROUP BY 2,3 ORDER BY 2,3 asset_stat_cat_entries Copy Stat Cat User Entries Assets 0 Copy Stat Count.Library.Statistical Category SELECT COUNT(map.id), aou.name, ac_sc.name FROM MIGSCHEMA.asset_stat_cat_entry_copy_map_legacy map JOIN MIGSCHEMA.asset_stat_cat_legacy ac_sc ON ac_sc.id = map.stat_cat JOIN actor.org_unit aou ON aou.id = ac_sc.owner GROUP BY 2,3 ORDER BY 2,3 asset_stat_cat_entries Copy Stat Cat User Entries Assets 1 Copy Stat Count.Library.Statistical Category SELECT COUNT(map.id), aou.name, ac_sc.name FROM MIGSCHEMA.asset_stat_cat_entry_copy_map map JOIN MIGSCHEMA.asset_stat_cat ac_sc ON ac_sc.id = map.stat_cat JOIN actor.org_unit aou ON aou. id = ac_sc.owner GROUP BY 2,3 ORDER BY 2,3 asset_copy_tags Copy Tags Assets 0 Tag Count.Copy Tag Type.Copy Tag Label.Staff Note.Public SELECT COUNT(map.id), tag.tag_type, tag.label, tag.staff_note, tag.pub FROM MIGSCHEMA.asset_copy_tag tag JOIN MIGSCHEMA.asset_copy_tag_copy_map map ON map.tag = tag.id GROUP BY 2,3,4,5 ORDER BY 2,3 money_billing_voided Bills Voided And Not Money 0 Count.Voided.Sum.Migrated SELECT COUNT(a.id), a.voided::TEXT, SUM(a.amount), a.x_migrate::TEXT FROM MIGSCHEMA.money_billing_legacy a GROUP BY 2, 4 ORDER BY 2, 4 money_billing_voided Bills Voided And Not Money 1 Count.Voided.Sum SELECT COUNT(a.id), a.voided::TEXT, SUM(a.amount) FROM MIGSCHEMA.money_billing a GROUP BY 2 ORDER BY 2, 3 money_billing_by_type Bills by Type Money 0 Count.Billing Type.Migrated SELECT COUNT(a.id), a.billing_type, a.x_migrate::TEXT FROM MIGSCHEMA.money_billing_legacy a GROUP BY 2, 3 ORDER BY 2, 3 money_billing_by_type Bills by Type Money 1 Count.Billing Type SELECT COUNT(a.id), a.billing_type FROM MIGSCHEMA.money_billing a GROUP BY 2 ORDER BY 2 money_cash_payment Cash Payments Money 0 Count.Voided.Sum.Migrated SELECT COUNT(a.id), a.voided::TEXT, SUM(a.amount), a.x_migrate::TEXT FROM MIGSCHEMA.money_cash_payment_legacy a GROUP BY 2, 4 ORDER BY 2, 4 money_cash_payment Cash Payments Money 1 Count.Voided.Sum SELECT COUNT(a.id), a.voided::TEXT, SUM(a.amount) FROM MIGSCHEMA.money_cash_payment a GROUP BY 2 ORDER BY 2 money_check_payment Check Payments Money 0 Count.Voided.Sum.Migrated SELECT COUNT(a.id), a.voided::TEXT, SUM(a.amount), a.x_migrate::TEXT FROM MIGSCHEMA.money_check_payment_legacy a GROUP BY 2, 4 ORDER BY 2, 4 money_forgive_payment Forgive Payments Money 0 Count.Voided.Sum.Migrated SELECT COUNT(a.id), a.voided::TEXT, SUM(a.amount), a.x_migrate::TEXT FROM MIGSCHEMA.money_forgive_payment_legacy a GROUP BY 2, 4 ORDER BY 2, 4 money_forgive_payment Forgive Payments Money 1 Count.Voided.Sum SELECT COUNT(a.id), a.voided::TEXT, SUM(a.amount) FROM MIGSCHEMA.money_forgive_paymen a GROUP BY 2 ORDER BY 2 money_goods_payment Goods Payments Money 0 Count.Voided.Sum.Migrated SELECT COUNT(a.id), a.voided::TEXT, SUM(a.amount), a.x_migrate::TEXT FROM MIGSCHEMA.money_goods_payment_legacy a GROUP BY 2, 4 ORDER BY 2, 4 money_work_payment Work Payments Money 0 Count.Voided.Sum.Migrated SELECT COUNT(a.id), a.voided::TEXT, SUM(a.amount), a.x_migrate::TEXT FROM MIGSCHEMA.money_work_payment_legacy a GROUP BY 2, 4 ORDER BY 2, 4 money_credit_card_payment Credit Card Payments Money 0 Count.Voided.Sum.Migrated SELECT COUNT(a.id), a.voided::TEXT, SUM(a.amount), a.x_migrate::TEXT FROM MIGSCHEMA.money_credit_card_payment_legacy a GROUP BY 2, 4 ORDER BY 2, 4 money_credit_payment Credit Payments Money 0 Count.Voided.Sum.Migrated SELECT COUNT(a.id), a.voided::TEXT, SUM(a.amount), a.x_migrate::TEXT FROM MIGSCHEMA.money_credit_payment_legacy a GROUP BY 2, 4 ORDER BY 2, 4 bibs Extracted Bibliographic Records Bibs 0 Count.Deleted.Migrated SELECT COUNT(bre.id), bre.deleted::TEXT, bre.x_migrate::TEXT FROM MIGSCHEMA.biblio_record_entry_legacy bre GROUP BY 2, 3 ORDER BY 2, 3 False means the records are not deleted. bibs Extracted Bibliographic Records Bibs 1 Count SELECT COUNT(eg) FROM MIGSCHEMA.bib_id_map bibswovolumes Bibliographic Records Without Volumes Bibs 0 Count SELECT COUNT(eg) FROM MIGSCHEMA.bib_id_map where eg::INTEGER NOT IN (SELECT DISTINCT record FROM MIGSCHEMA.asset_call_number) bibs_notes Bib Record Notes Bibs 0 Count.Migrated SELECT COUNT(b.id), b.x_migrate::TEXT FROM MIGSCHEMA.biblio_record_note_legacy b GROUP BY 2 bibs_notes Bib Record Notes Bibs 1 Count SELECT COUNT(b.id) FROM MIGSCHEMA.biblio_record_note b bibs_peers Peer Bib Copies Bibs 0 Count.Migrated SELECT COUNT(b.id), b.x_migrate::TEXT FROM MIGSCHEMA.biblio_peer_bib_copy_map_legacy b GROUP BY 2 bibs_peers Peer Bib Copies Bibs 1 Count SELECT COUNT(b.id) FROM MIGSCHEMA.biblio_peer_bib_copy_map b bibs_parts Monograph Parts Bibs 0 Count.Migrated SELECT COUNT(b.id), b.x_migrate::TEXT FROM MIGSCHEMA.biblio_monograph_part_legacy b GROUP BY 2 bibs_parts Monograph Parts Bibs 1 Count SELECT COUNT(b.id) FROM MIGSCHEMA.biblio_monograph_part b usrsbyorg Patrons by Home Org Actors 0 Count.Library.Deleted.Migrated SELECT COUNT(au.id), aou.name, au.deleted::TEXT, au.x_migrate::TEXT FROM MIGSCHEMA.actor_usr_legacy au JOIN actor.org_unit aou ON aou.id = au.home_ou GROUP BY 2, 3, 4 ORDER BY 2, 3, 4 usrsbypgt Patrons by Permission Group Actors 0 Count.Permission Group.Migrated SELECT COUNT(au.id), pgt.name, au.x_migrate::TEXT FROM MIGSCHEMA.actor_usr_legacy au JOIN permission.grp_tree pgt ON pgt.id = au.profile GROUP BY 2, 3 ORDER BY 2, 3 active_usrs Patron by Active Status Actors 0 Count of Users.Active.Migrated SELECT COUNT(id), active::TEXT, x_migrate::TEXT FROM MIGSCHEMA.actor_usr_legacy GROUP BY 2, 3 active_usrs Patrons by Active Status Actors 1 Count of Users.Active SELECT COUNT(id), active::TEXT FROM MIGSCHEMA.actor_usr GROUP BY 2 active_usr_barcodes Patron Barcodes by Active Status Actors 0 Count of Barcodes.Active.Migrated SELECT COUNT(id), active::TEXT, x_migrate::TEXT FROM MIGSCHEMA.actor_card_legacy GROUP BY 2, 3 active_usr_barcodes Patron Barcodes by Active Status Actors 1 Count of Barcodes.Active SELECT COUNT(id), active::TEXT FROM MIGSCHEMA.actor_card GROUP BY 2 usr_barcode_lengths Barcode Lengths by Library Actors 0 Count of Barcode.Barcode Length.Library SELECT COUNT(acard.id), LENGTH(acard.barcode), aou.name FROM MIGSCHEMA.actor_card_legacy acard JOIN MIGSCHEMA.actor_usr_legacy au ON au.id = acard.usr JOIN actor.org_unit aou ON aou.id = au.home_ou WHERE acard.x_migrate = TRUE GROUP BY 2, 3 ORDER BY 3, 2 usr_barcode_lengths Barcode Lengths by Library Actors 1 Count of Barcode.Barcode Length.Library SELECT COUNT(acard.id), LENGTH(acard.barcode), aou.name FROM MIGSCHEMA.actor_card acard JOIN MIGSCHEMA.actor_usr au ON au.id = acard.usr JOIN actor.org_unit aou ON aou.id = au.home_ou GROUP BY 2, 3 ORDER BY 3, 2 usr_barcode_patterns Common Barcode Starting Patterns Actors 0 Count of Barcodes (greater than 10).Left 60% of Characters SELECT COUNT(acard.id), LEFT(acard.barcode,(ROUND(LENGTH(acard.barcode)*.6))::INT) FROM MIGSCHEMA.actor_card_legacy acard WHERE acard.x_migrate = TRUE GROUP BY 2 HAVING COUNT(acard.id) > 10 ORDER BY 2 usr_barcode_patterns Common Barcode Starting Patterns Actors 1 Count of Barcodes (greater than 10).Left 60% of Characters SELECT COUNT(acard.id), LEFT(acard.barcode,(ROUND(LENGTH(acard.barcode)*.6))::INT) FROM MIGSCHEMA.actor_card acard GROUP BY 2 HAVING COUNT(acard.id) > 10 ORDER BY 2 usr_barcode_collisions Patron Barcode Collisions Actors 0 Collision Count SELECT COUNT(acard.id) FROM MIGSCHEMA.actor_card_legacy acard WHERE barcode ~* 'collision' AND x_migrate = TRUE usr_barcode_collisions Patron Barcode Collisions Actors 1 Collision Count SELECT COUNT(acard.id) FROM MIGSCHEMA.actor_card acard WHERE barcode ~* 'collision' usr_barcode_collision_shortlist Patron Barcode Collisions (first 20) Actors 0 Collision List SELECT acard.barcode FROM MIGSCHEMA.actor_card_legacy acard WHERE acard.barcode ~* 'collision' AND acard.x_migrate = TRUE ORDER BY 1 LIMIT 20 This is a shortlist of patron barcode collisions that maxes out at 20. If there are more collisions we will need to run a custom report. In some cases we may flag individual accounts to not migrate. usr_barcode_collision_shortlist Patron Barcode Collisions (first 20) Actors 1 Collision List SELECT acard.barcode FROM MIGSCHEMA.actor_card acard WHERE acard.barcode ~* 'collision' ORDER BY 1 LIMIT 20 This is a shortlist of patron barcode collisions that maxes out at 20. If there are more collisions we will need to run a custom report. In some cases we may flag individual accounts to not migrate. usr_barcode_collision_patterns Common Patron Barcode Collision Patterns a.x_migrate Actors 0 Number of Barcodes Matching Pattern Greater than 10.Left 60% of Characters SELECT COUNT(acard.id), LEFT(acard.barcode,(ROUND(LENGTH(acard.barcode)*.6))::INT) FROM MIGSCHEMA.actor_card_legacy acard WHERE acard.barcode ~* 'collision' AND acard.x_migrate = TRUE GROUP BY 2 HAVING COUNT(acard.id) > 10 ORDER BY 2 usr_barcode_collision_patterns Common Patron Barcode Collision Patterns a.x_migrate Actors 1 Number of Barcodes Matching Pattern Greater than 10.Left 60% of Characters SELECT COUNT(acard.id), LEFT(acard.barcode,(ROUND(LENGTH(acard.barcode)*.6))::INT) FROM MIGSCHEMA.actor_card acard WHERE acard.barcode ~* 'collision' GROUP BY 2 HAVING COUNT(acard.id) > 10 ORDER BY 2 usr_addressses_status Patron Addresses by Valid Status Actors 0 Count.Valid.Migrated SELECT COUNT(aua.id), valid::TEXT, x_migrate::TEXT FROM MIGSCHEMA.actor_usr_address_legacy aua GROUP BY 2, 3 usr_addressses_status Patron Addresses by Valid Status Actors 1 Count.Valid SELECT COUNT(aua.id), valid::TEXT FROM MIGSCHEMA.actor_usr_address aua GROUP BY 2 usr_addresses_pending Patron Addresses by Pending Status Actors 0 Count of Addresses.Pending.Migrated SELECT COUNT(aua.id), pending::TEXT, x_migrate::TEXT FROM MIGSCHEMA.actor_usr_address_legacy aua GROUP BY 2, 3 usr_addresses_pending Patron Addresses by Pending Status Actors 1 Count of Addresses.Pending SELECT COUNT(aua.id), pending::TEXT FROM MIGSCHEMA.actor_usr_address aua GROUP BY 2 usr_messages Patron Messages Actors 0 Count.Deleted.Migrated SELECT COUNT(aum.id), deleted::TEXT, x_migrate::TEXT FROM MIGSCHEMA.actor_usr_message_legacy aum GROUP BY 2, 3 usr_messages Patron Messages Actors 1 Count.Deleted SELECT COUNT(aum.id), deleted::TEXT FROM MIGSCHEMA.actor_usr_message_legacy aum GROUP BY 2 usr_notes Patron Notes Actors 0 Count.Public.Migrated SELECT COUNT(aun.id), pub::TEXT, x_migrate::TEXT FROM MIGSCHEMA.actor_usr_note_legacy aun GROUP BY 2, 3 usr_notes Patron Notes Actors 1 Count.Public SELECT COUNT(aun.id), pub::TEXT FROM MIGSCHEMA.actor_usr_note aun GROUP BY 2 usr_stat_cats Patron Statistical Categories Actors 0 Stat Cat Count.Library.Statistical Category.Migrated SELECT COUNT(au_sc.id), aou.name, au_sc.name, au_sc.x_migrate::TEXT FROM MIGSCHEMA.actor_stat_cat_legacy au_sc JOIN actor.org_unit aou ON aou.id = au_sc.owner GROUP BY 2, 3, 4 ORDER BY 2, 3, 4 usr_stat_cats Patron Statistical Categories Actors 1 Stat Cat Count.Library.Statistical Category SELECT COUNT(au_sc.id), aou.name, au_sc.name FROM MIGSCHEMA.actor_stat_cat au_sc JOIN actor.org_unit aou ON aou.id = au_sc.owner GROUP BY 2, 3 ORDER BY 2, 3 usr_stat_cat_entries Patron Stat Cat User Entries Actors 0 Patron Stat Count.Library.Statistical Category.Migrated SELECT COUNT(map.id), aou.name, au_sc.name, map.x_migrate::TEXT FROM MIGSCHEMA.actor_stat_cat_entry_usr_map_legacy map JOIN MIGSCHEMA.actor_stat_cat_legacy au_sc ON au_sc.id = map.stat_cat JOIN actor.org_unit aou ON aou.id = au_sc.owner GROUP BY 2, 3, 4 ORDER BY 2,3, 4 usr_stat_cat_entries Patron Stat Cat User Entries Actors 1 Patron Stat Count.Library.Statistical Category SELECT COUNT(map.id), aou.name, au_sc.name FROM MIGSCHEMA.actor_stat_cat_entry_usr_map map JOIN MIGSCHEMA.actor_stat_cat au_sc ON au_sc.id = map.stat_cat JOIN actor.org_unit aou ON aou.id = au_sc.owner GROUP BY 2, 3 ORDER BY 2,3 fund_count 0 Acq Migrated Funds Number of Funds.Migrated SELECT COUNT(id), x_migrate::TEXT FROM MIGSCHEMA.acq_fund_legacy GROUP BY 2; fund_count 1 Acq Migrated Funds Number of Funds SELECT COUNT(id) FROM MIGSCHEMA.acq_fund; invoice_count 0 Acq Migrated Invoices Number of Invoices.Migrated SELECT COUNT(id), x_migrate::TEXT FROM MIGSCHEMA.acq_invoice_legacy GROUP BY 2; invoice_count 1 Acq Migrated Invoices Number of Funds SELECT COUNT(id) FROM MIGSCHEMA.acq_invoice; serials_mfhd_count serials 0 Migrated Serial MFHDs Number of MFHDs SELECT COUNT(id) FROM MIGSCHEMA.seriarecord_entry