2 <!-- sample reports entry
4 <name>name of report</name>
5 <iteration value='0' /> which version, the first version to run is 0, first backup is 1, then so on
6 <tag>money</tag> arbitrary tags, each should go in separate tag
7 <report_title>Migrated Billings</report_title> title used in the asciidoc output
8 <heading column='1'>Number of Billings.Migrated.Total</heading> period delimited
9 <query>SELECT COUNT(id),x_migrate,SUM(amount) FROM money_billing_legacy GROUP BY 2;</query> query itself, will be replaced
10 <note>Arbitrary note that can be included in the entries.</note>
17 <name>evg_asset_copy_statuses</name>
18 <report_title>Statuses</report_title>
20 <iteration>0</iteration>
21 <heading>Copy Count.Migrating Status.New Evergreen Status.Notes</heading>
22 <query>SELECT COUNT(ac.l_id), cs.l_name FROM asset_copy_legacy ac JOIN config_copy_status_legacy cs ON cs.l_id = ac.l_status GROUP BY 2 ORDER BY 2</query>
23 <note>You only need to fill this sheet out if you use custom statuses that need to be migrated.</note>
27 <name>evg_asset_circ_mods</name>
28 <report_title>Circulation Modifiers</report_title>
30 <iteration>0</iteration>
31 <heading>Copy Count.Migrating Circ Mod.New Circ Mod.Notes</heading>
32 <query>SELECT COUNT(ac.l_id), ac.l_circ_modifier FROM asset_copy_legacy ac GROUP BY 2 ORDER BY 2</query>
36 <name>evg_asset_copy_locs</name>
37 <report_title>Copy Locations</report_title>
39 <iteration>0</iteration>
40 <heading>Count.Library.Migrating Copy Location.New Copy Location.Notes</heading>
41 <query>SELECT COUNT(ac.l_id), aou.l_name, acl.l_name FROM asset_copy_location_legacy acl JOIN actor_org_unit_legacy aou ON aou.l_id = acl.l_owning_lib JOIN asset_copy_legacy ac ON ac.l_location = acl.l_id GROUP BY 2, 3 ORDER BY 2, 3</query>
42 <note>Any locations not mapped can be moved over as their existing locations.</note>
46 <name>evg_permission_grps</name>
47 <report_title>Permission Groups</report_title>
49 <iteration>0</iteration>
50 <heading>Count.Migrating Permission Group.New Permission Group.Notes</heading>
51 <query>SELECT COUNT(au.l_id), pgt.l_name FROM actor_usr_legacy au JOIN permission_grp_tree_legacy pgt ON pgt.l_id = au.l_profile GROUP BY 2 ORDER BY 2</query>
56 <name>tlc_load_branches_list</name>
58 <iteration>0</iteration>
59 <report_title>Branches Present in Extract</report_title>
60 <heading>Name.Evergreen Org Unit.Notes</heading>
61 <query>SELECT l_name FROM ctbranches_tsv_clean ORDER BY 1</query>
65 <name>tlc_load_asset_notes</name>
66 <report_title>Item Notes</report_title>
68 <iteration>0</iteration>
69 <heading>Count.Note Type.Notes</heading>
70 <query>SELECT COUNT(l_itemcomment)::TEXT, 'Item Comments' FROM ititeminformation_tsv_clean WHERE l_itemcomment IS NOT NULL GROUP BY 2
71 UNION ALL SELECT COUNT(l_physicalcondition)::TEXT, 'Condition Notes' FROM ctlocitem_tsv_clean WHERE l_physicalcondition IS NOT NULL GROUP BY 2
72 UNION ALL SELECT COUNT(l_checkinoutnote)::TEXT, 'Circ Notes' FROM ctlocitem_tsv_clean WHERE l_checkinoutnote IS NOT NULL GROUP BY 2
73 UNION ALL (SELECT DISTINCT 'Sample Item Comment', l_itemcomment FROM ititeminformation_tsv_clean WHERE l_itemcomment IS NOT NULL LIMIT 20)
74 UNION ALL (SELECT DISTINCT 'Sample Physical Condition', l_physicalcondition FROM ctlocitem_tsv_clean WHERE l_physicalcondition IS NOT NULL LIMIT 20)
75 UNION ALL (SELECT DISTINCT 'Sample Circ Note', l_checkinoutnote FROM ctlocitem_tsv_clean WHERE l_checkinoutnote IS NOT NULL LIMIT 20)
80 <name>tlc_load_asset_holdings_codes</name>
81 <report_title>Holdings Codes</report_title>
83 <iteration>0</iteration>
84 <heading>Count.Holdings Codes.Evergreen Circulation Modifier.Evergreen Shelving Locatione</heading>
85 <query>SELECT COUNT(l_barcode), l_activeholdingscode FROM ctlocitem_tsv_clean GROUP BY 2 ORDER BY 2</query>
89 <name>tlc_load_asset_callnumbertype</name>
90 <report_title>Call Number Types</report_title>
92 <iteration>0</iteration>
93 <heading>Copy Count.Call Number Type.Evergreen Call Number Type.Notes</heading>
94 <query>SELECT COUNT(l_barcode), l_callnumbertype FROM ctlocitem_tsv_clean GROUP BY 2 ORDER BY 2</query>
95 <note>Mappable to generic, LoC and Dewey types in Evergreen.</note>
100 <name>tlc_load_asset_callnumberparts</name>
101 <report_title>Call Number Parts</report_title>
103 <iteration>0</iteration>
104 <heading>Copy Count.Call Number Part.Evergreen Sequence.Evergreen Call Number Part.Delimiter</heading>
105 <query>SELECT COUNT(l_barcode) FROM ctlocitem_tsv_clean, 'Prefixes' WHERE l_callnumberprefix IS NOT NULL GROUP BY 1 UNION ALL SELECT 'Class Label', COUNT(l_barcode) FROM ctlocitem_tsv_clean WHERE l_callnumberclass IS NOT NULL GROUP BY 1 UNION ALL SELECT 'Cutter', COUNT(l_barcode) FROM ctlocitem_tsv_clean WHERE l_callnumbercutter IS NOT NULL GROUP BY 1 UNION ALL SELECT 'Year', COUNT(l_barcode) FROM ctlocitem_tsv_clean WHERE l_year IS NOT NULL GROUP BY 1 UNION ALL SELECT 'Volume', COUNT(l_barcode) FROM ctlocitem_tsv_clean WHERE l_volume IS NOT NULL GROUP BY 1</query>
109 <name>tlc_load_money_migrating_bills</name>
110 <report_title>Migrating Bills By Bill Type</report_title>
112 <iteration>0</iteration>
113 <heading>Count.Billing Type.Evergreen Bill Type</heading>
114 <query>SELECT COUNT(a.l_chargenumber), b.l_description FROM itpayment_tsv_clean a JOIN itpaymenttype_tsv_clean b ON b.l_paymenttype = a.l_paymenttype WHERE a.l_dueamount::INTEGER - (a.l_waiveamount::INTEGER + a.l_tenderamount::INTEGER) > 0 GROUP BY 2 ORDER BY 2 </query>
118 <name>tlc_load_usrs_bygroup</name>
119 <report_title>Patrons by Agency Type</report_title>
121 <iteration>0</iteration>
122 <heading>Count.Permission Group.Evergreen Permission Group</heading>
123 <query>SELECT COUNT(l_agencynumber), l_agencytype FROM itagency_tsv_clean GROUP BY 2 ORDER BY 2</query>
127 <name>tlc_load_usrs_byexpiration</name>
128 <report_title>Patrons by Expiration Date</report_title>
130 <iteration>0</iteration>
131 <heading>Count.Year of Expiration.Do Not Migrate?</heading>
132 <query>SELECT COUNT(l_agencynumber), LEFT(l_expirationdate,4) FROM itagency_tsv_clean GROUP BY 2 ORDER BY 2</query>
136 <name>tlc_load_usrs_bynever</name>
137 <report_title>Patrons With Claims</report_title>
139 <iteration>0</iteration>
140 <heading>Count.Claim Type.Do Not Migrate</heading>
141 <query>SELECT COUNT(l_agencynumber) FROM itagency_tsv_clean, 'Never Checked Out' WHERE l_itemsclaimednevercheckedout != '0' GROUP BY 1 UNION ALL SELECT COUNT(l_agencynumber), 'Claims Returned' FROM itagency_tsv_clean WHERE l_itemsclaimedreturned != '0' GROUP BY 1</query>
145 <name>tlc_load_usrs_byactive</name>
146 <report_title>Patrons by Last Active Date</report_title>
148 <iteration>0</iteration>
149 <heading>Count.Year Last Active.Migrate as Active Flag?</heading>
150 <query>SELECT COUNT(l_agencynumber), LEFT(l_lastactivedate,4) FROM itagency_tsv_clean GROUP BY 2 ORDER BY 2</query>
151 <note>We can set the active flag based on this if desired.</note>
155 <name>tlc_load_usrs_blocks</name>
156 <report_title>Patrons by Block Status</report_title>
158 <iteration>0</iteration>
159 <heading>Count.Block Status.Migration Note</heading>
160 <query>SELECT COUNT(l_agencynumber), l_blockstatus FROM itagency_tsv_clean GROUP BY 2 ORDER BY 2</query>
164 <name>tlc_load_usrs_gender</name>
165 <report_title>Patrons by Gender</report_title>
167 <iteration>0</iteration>
168 <heading>Count.Gender.Migrate as Stat Cat</heading>
169 <query>SELECT COUNT(l_agencynumber), l_gender FROM itagency_tsv_clean GROUP BY 2 ORDER BY 2</query>
170 <note>Evergreen can load these as statistical categories</note>
174 <name>tlc_load_active_usr_passwords</name>
175 <report_title>Count of Patrons w Passwords</report_title>
177 <iteration>0</iteration>
178 <heading>Count of NULL PINs.Default Password</heading>
179 <query>SELECT COUNT(l_agencynumber) FROM itagency_tsv_clean WHERE l_pin IS NULL</query>
180 <note>If any PINS are blank we will have to choose a method to supply them as Evergreen requires passwords.</note>
184 <name>tlc_load_usr_notes</name>
185 <report_title>Count of Patron Notes</report_title>
187 <iteration>0</iteration>
188 <heading>Count.Note Type.Action</heading>
189 <query>SELECT COUNT(l_agencynumber), 'Patron Note' FROM itagency_tsv_clean WHERE l_agencycomment IS NOT NULL UNION ALL SELECT COUNT(l_agencynumber), 'Address Comments' FROM itaddress_tsv_clean WHERE l_addresscomment IS NOT NULL</query>
193 <name>tlc_load_usr_balance</name>
194 <report_title>Count and Sum of Balances</report_title>
196 <iteration>0</iteration>
197 <heading>Count.SUM in Pennies.Migrate?</heading>
198 <query>SELECT COUNT(l_agencynumber), SUM(l_accountbalance::INTEGER) FROM itagency_tsv_clean WHERE l_accountbalance != '0'</query>
199 <note>If this is being migrated there are a few options of how to do it and each will have different workflows.</note>
203 <name>tlc_load_usr_addresses_phones</name>
204 <report_title>Patron Phones</report_title>
206 <iteration>0</iteration>
207 <heading>Count.Phone Type.Phone Type</heading>
208 <query>SELECT COUNT(l_phone1), 'Phone 1' FROM itaddress_tsv_clean WHERE l_phone1 IS NOT NULL GROUP BY 2 UNION ALL SELECT COUNT(l_phone1), 'Phone 2' FROM itaddress_tsv_clean WHERE l_phone2 IS NOT NULL GROUP BY 2</query>
209 <note>These need to be mounted to Evergreen phone fields.</note>
213 <name>tlc_load_usr_stat_cats</name>
214 <report_title>Patron Stat Cats and Counts</report_title>
216 <iteration>0</iteration>
217 <heading>Patron Count.Stat Cat.Migrate?</heading>
218 <query>SELECT COUNT(b.l_agencynumber), a.l_description FROM itagencyfields_tsv_clean a JOIN itagencydata_tsv_clean b ON b.l_agencyfieldnumber = a.l_agencyfieldnumber GROUP BY 2 ORDER BY 1</query>
224 <name>destiny_load_usr_by_gradelevel</name>
225 <report_title>Patrons by Destiny Grade Level</report_title>
227 <iteration>0</iteration>
228 <heading>Count.Graduation Year</heading>
229 <query>SELECT COUNT(*), grade_level FROM patrons_csv GROUP BY 2 ORDER BY 2</query>
230 <note>Transfer to note or stat cat?</note>
234 <name>destiny_load_usr_by_gender</name>
235 <report_title>Patrons by Destiny Gender</report_title>
237 <iteration>0</iteration>
238 <heading>Count.Gender</heading>
239 <query>SELECT COUNT(*), gender FROM patrons_csv GROUP BY 2 ORDER BY 2</query>
240 <note>Transfer to stat cat?</note>
244 <name>destiny_load_usr_by_patrontype</name>
245 <report_title>Patrons by Destiny Patron Type</report_title>
247 <iteration>0</iteration>
248 <heading>Count.Patron Type.Permission Group</heading>
249 <query>SELECT COUNT(*), patron_type FROM patrons_csv GROUP BY 2 ORDER BY 2</query>
253 <name>destiny_load_usr_by_status</name>
254 <report_title>Patrons by Destiny Status</report_title>
256 <iteration>0</iteration>
257 <heading>Count.Status</heading>
258 <query>SELECT COUNT(*), status FROM patrons_csv GROUP BY 2 ORDER BY 2</query>
262 <name>destiny_load_usr_by_municipality</name>
263 <report_title>Patrons by Municipality</report_title>
265 <iteration>0</iteration>
266 <heading>Count.Municipality</heading>
267 <query>SELECT COUNT(*), municipality FROM patrons_csv GROUP BY 2 ORDER BY 2</query>
268 <note>State cat?</note>
272 <name>destiny_load_usr_notes</name>
273 <report_title>Types of and Counts of Notes</report_title>
275 <iteration>0</iteration>
276 <heading>Type of Note.Count</heading>
277 <query>SELECT 'General Note', COUNT(*) FROM patrons_csv WHERE note_general IS NOT NULL and note_general != '' UNION ALL SELECT 'Important Note', COUNT(*) FROM patrons_csv WHERE note_important IS NOT NULL and note_important != '' </query>
278 <note>Messsage / alert / note?</note>
282 <name>destiny_load_usr_userdefined5</name>
283 <report_title>User Defined Field 5</report_title>
285 <iteration>0</iteration>
286 <heading>Count.Values</heading>
287 <query>SELECT COUNT(*), user_defined_5 FROM patrons_csv GROUP BY 2 ORDER BY 2</query>
288 <note>Retain somewhere?</note>
292 <name>destiny_load_usrs_pswdconfigured</name>
293 <report_title>Patrons by Password Configured</report_title>
295 <iteration>0</iteration>
296 <heading>Count.Password Configured</heading>
297 <query>SELECT COUNT(*), password_configured FROM patrons_csv GROUP BY 2 ORDER BY 2</query>
298 <note>Need how they want passwords set since we don't have them to migrate and do they want these that are configured with some special note?</note>
302 <name>destiny_load_usrs_phonefields</name>
303 <report_title>Phone Fields</report_title>
305 <iteration>0</iteration>
306 <heading>Phone Field.Count.Evergreen Phone Field</heading>
307 <query>SELECT 'Primary Phone 1', COUNT(*) FROM patrons_csv WHERE primary_phone_1 IS NOT NULL AND primary_phone_1 != '' UNION ALL SELECT 'Primary Phone 2', COUNT(*) FROM patrons_csv WHERE primary_phone_2 IS NOT NULL AND primary_phone_2 != '' UNION ALL SELECT 'Secondary Phone 1', COUNT(*) FROM patrons_csv WHERE secondary_phone_1 IS NOT NULL AND secondary_phone_1 != '' UNION ALL SELECT 'Secondary Phone 2', COUNT(*) FROM patrons_csv WHERE secondary_phone_2 IS NOT NULL AND secondary_phone_2 != '' </query>
311 <name>destiny_load_asset_categories</name>
312 <report_title>Count of Categories</report_title>
314 <iteration>0</iteration>
315 <heading>Count.Category.Circ Mod?</heading>
316 <query>SELECT COUNT(*), category FROM copies_csv GROUP BY 2 ORDER BY 2</query>
320 <name>destiny_load_asset_notes</name>
321 <report_title>Copies by Note Types</report_title>
323 <iteration>0</iteration>
324 <heading>Note Type.Count</heading>
325 <query>SELECT 'General Note', COUNT(*) FROM copies_csv WHERE note_general IS NOT NULL and note_general != '' UNION ALL SELECT 'Important Note', COUNT(*) FROM copies_csv WHERE note_important IS NOT NULL and note_important != ''</query>
330 <name>destiny_load_asset_sublocation</name>
331 <report_title>Copies by Sub Location</report_title>
333 <iteration>0</iteration>
334 <heading>Count.Sub Location.Shelving Location?</heading>
335 <query>SELECT COUNT(*), sublocation FROM copies_csv GROUP BY 2 ORDER BY 2</query>
339 <name>destiny_load_asset_vendor</name>
340 <report_title>Copies by Vendor</report_title>
342 <iteration>0</iteration>
343 <heading>Count.Vendor</heading>
344 <query>SELECT COUNT(*), vendor FROM copies_csv GROUP BY 2 ORDER BY 2</query>
349 <name>destiny_load_asset_descriptions</name>
350 <report_title>Copies with Description Fields</report_title>
352 <iteration>0</iteration>
353 <heading>Description Field.Count</heading>
354 <query>SELECT 'Description Field 1', COUNT(*) FROM copies_csv WHERE description_1 IS NOT NULL and description_1 != '' UNION ALL SELECT 'Description Field 2', COUNT(*) FROM copies_csv WHERE description_2 IS NOT NULL and description_2 != '' UNION ALL SELECT 'Description Field 3', COUNT(*) FROM copies_csv WHERE description_3 IS NOT NULL and description_3 != ''</query>
355 <note>Need report? Retain?</note>
359 <name>destiny_load_fines_byreason</name>
361 <iteration>0</iteration>
362 <report_title>Fines by Reason</report_title>
363 <heading>Count.Reason</heading>
364 <query>SELECT COUNT(*), reason FROM fines_csv GROUP BY 2 ORDER BY 2</query>
371 <name>circ_bystatus</name>
372 <report_title>Circulations by Status</report_title>
374 <iteration>0</iteration>
375 <heading>Count.Status.Type</heading>
376 <query>SELECT COUNT(id), l_status, l_type FROM action_circulation_legacy GROUP BY 2, 3</query>
377 <note>Circulations will only not be migrated if they can't be attached to a migrated patron and holding.</note>
381 <name>hold_bystatus</name>
382 <report_title>Holds by Status</report_title>
384 <iteration>0</iteration>
385 <heading>Count.Status</heading>
386 <query> SELECT COUNT(id), l_status FROM action_hold_request_legacy GROUP BY 2</query>
387 <note>Only unfilled holds are being migrated.</note>
391 <name>asset_pending_bibs</name>
392 <report_title>Pending Records</report_title>
394 <iteration>0</iteration>
395 <heading>Count.Year of Last Edit.Count of Copies Attached</heading>
396 <query>SELECT COUNT(bre.id), CASE WHEN LENGTH(bre.l_edited) > 1 THEN EXTRACT(YEAR FROM bre.l_edited::TIMESTAMP) ELSE '1900' END, COUNT(ac.id) FROM biblio_record_entry_legacy bre LEFT JOIN asset_copy_legacy ac ON ac.l_biblio = bre.l_id WHERE bre.l_status = 'pending' GROUP BY 2 ORDER BY 2
401 <name>asset_copies_by_status</name>
402 <report_title>Copies by Status</report_title>
404 <iteration>0</iteration>
405 <heading>Count.Status</heading>
406 <query>SELECT COUNT(id), l_status FROM asset_copy_legacy GROUP BY 2 ORDER BY 2</query>
407 <note>Deleted copies with a delete date were not exported additionally those with the deleted status won't get loaded.</note>
411 <name>asset_pending_copies</name>
412 <report_title>Pending Copies by Last Edit</report_title>
414 <iteration>0</iteration>
415 <heading>Count.Last Edited</heading>
416 <query>SELECT COUNT(id), CASE WHEN LENGTH(l_edited) > 1 THEN EXTRACT(YEAR FROM l_edited::TIMESTAMP) ELSE '1900' END FROM asset_copy_legacy WHERE l_status = 'pending' GROUP BY 2 ORDER BY 2</query>
420 <name>assets_by_memberships</name>
421 <report_title>Copies by Memberships</report_title>
423 <iteration>0</iteration>
424 <heading>Count.Membership Number.Membership Name</heading>
425 <query>SELECT COUNT(ac.id), acl.l_membership_number, acl.l_membership_name FROM asset_copy_legacy ac JOIN asset_copy_location_legacy acl ON acl.l_membership_name = ac.l_memberships GROUP BY 2,3 ORDER BY 2
430 <name>money_bills</name>
431 <report_title>Bills</report_title>
433 <iteration>0</iteration>
434 <heading>Count.Status</heading>
435 <query>SELECT COUNT(id), l_status FROM money_billing_legacy GROUP BY 2 ORDER BY 2</query>
436 <note>Unless there is a good reason to do so forgiven and paid bills will not be migrated.</note>
440 <name>actor_groups</name>
441 <report_title>Patron Membership Groups</report_title>
443 <iteration>0</iteration>
444 <heading>Membership List Name.Membership List ID.Membership Number.Membership Name.Membership Length in Monthst</heading>
445 <query>SELECT l_membership_list_name, l_membership_list_id, l_membership_number, l_membership_name, l_membership_length_months FROM actor_usr_legacy_groups_tsv ORDER BY 1, 3</query>
446 <note>Age looks like a good target for a stat cat and / or juvenile setting while the patron type can map to profiles.</note>
450 <name>actor_by_groups</name>
451 <report_title>Patrons by Membership Groups</report_title>
453 <iteration>0</iteration>
454 <heading>Count.Membership List Name.Membership Number</heading>
455 <query>SELECT COUNT(*), l_membership_list_name, l_membership_number FROM (SELECT id, UNNEST(STRING_TO_ARRAY(l_memberships,'|')) AS m FROM actor_usr_legacy ) x JOIN actor_usr_legacy_groups_tsv t ON t.l_membership_name = x.m GROUP BY 2, 3 ORDER BY 2, 3</query>
459 <name>actor_addresses_nulls</name>
460 <report_title>Patron Addresses</report_title>
462 <iteration>0</iteration>
463 <heading>Address Field.Nulls</heading>
464 <query>SELECT 'Street Address', COUNT(id) FROM actor_usr_address_legacy WHERE l_lines IS NULL UNION ALL SELECT 'City', COUNT(id) FROM actor_usr_address_legacy UNION ALL SELECT 'State', COUNT(id) FROM actor_usr_address_legacy WHERE l_country_division IS NULL UNION ALL SELECT 'Postal Code', COUNT(id) FROM actor_usr_address_legacy WHERE l_postal_code IS NULL </query>
465 <note>If any of these fields are null then we need defaults to fill in, note the extract had no city data.</note>
469 <name>actor_phones</name>
470 <report_title>Patron Phones</report_title>
472 <iteration>0</iteration>
473 <heading>Count.Type</heading>
474 <query>SELECT COUNT(*), l_type FROM actor_usr_phones_tsv GROUP BY 2 ORDER BY 2</query>
475 <note>These need to be mapped to Evergreen phone types.</note>
479 <name>hz_borrowersbybtypes</name>
480 <report_title>Borrowers by Borrower Types</report_title>
482 <iteration>0</iteration>
483 <heading>Count.Borrower Type</heading>
484 <query>SELECT COUNT(id), l_borrower_btype FROM actor_usr_legacy GROUP BY 2 ORDER BY 2;</query>
488 <name>hz_borrowerpinsamples</name>
489 <report_title>Borrower PINs Samples</report_title>
491 <iteration>0</iteration>
492 <heading>Sample PINs</heading>
493 <query>SELECT l_borrower_pin FROM actor_usr_legacy WHERE LENGTH(l_borrower_pin) > 1 LIMIT 20;</query>
494 <note>Only 16 PINS defined.</note>
498 <name>hz_borrowernotesample</name>
499 <report_title>Borrower Note Field Samples</report_title>
501 <iteration>0</iteration>
502 <heading>Count</heading>
503 <query>SELECT l_borrower_borrower_note FROM actor_usr_legacy WHERE LENGTH(l_borrower_borrower_note) > 1 LIMIT 20;</query>
508 <name>hz_borrowernotesample2</name>
509 <report_title>Borrower Note Field 2 Samples</report_title>
511 <iteration>0</iteration>
512 <heading>Count</heading>
513 <query>SELECT l_borrower_note2 FROM actor_usr_legacy WHERE LENGTH(l_borrower_note2) > 1 LIMIT 20;</query>
518 <name>hz_borrowernotesample3</name>
519 <report_title>Borrower Note Field 3 Samples</report_title>
521 <iteration>0</iteration>
522 <heading>Count</heading>
523 <query>SELECT l_borrower_note3 FROM actor_usr_legacy WHERE LENGTH(l_borrower_note3) > 1 LIMIT 20;</query>
528 <name>hz_phones</name>
529 <report_title>Borrower Phones</report_title>
531 <iteration>0</iteration>
532 <heading>Count.Borrower Phone Type</heading>
535 FROM (SELECT l_borrower_phone_1_phone_type AS b FROM actor_usr_legacy
536 UNION ALL SELECT l_borrower_phone_2_phone_type AS b FROM actor_usr_legacy
537 UNION ALL SELECT l_borrower_phone_3_phone_type AS b FROM actor_usr_legacy
538 UNION ALL SELECT l_borrower_phone_4_phone_type AS b FROM actor_usr_legacy) x
539 GROUP BY 2 ORDER BY 2
541 <note>Ordinal phones will have to be combined.</note>
545 <name>hz_bstats</name>
546 <report_title>Borrower B-Stats</report_title>
548 <iteration>0</iteration>
549 <heading>Count.BStat</heading>
550 <query>SELECT COUNT(*), b
551 FROM (SELECT l_borrower_bstat_1_bstat AS b FROM actor_usr_legacy
553 SELECT l_borrower_bstat_2_bstat AS b FROM actor_usr_legacy
555 SELECT l_borrower_bstat_3_bstat AS b FROM actor_usr_legacy) x
556 GROUP BY 2 ORDER BY 1;
561 <name>hz_copybycollection</name>
562 <report_title>Copies by Collection</report_title>
564 <iteration>0</iteration>
565 <heading>Count.Collection</heading>
566 <query>SELECT COUNT(id), l_collection FROM asset_copy_legacy GROUP BY 2 ORDER BY 2;</query>
570 <name>hz_copyfieldexamples</name>
571 <report_title>Sample Copy Field Values</report_title>
573 <iteration>0</iteration>
574 <heading>Field</heading>
575 <query>SELECT l_copy FROM asset_copy_legacy WHERE LENGTH(l_copy) > 1 LIMIT 30;</query>
579 <name>hz_itemsbyitype</name>
580 <report_title>Items by IType</report_title>
582 <iteration>0</iteration>
583 <heading>Count.Item Type (itype)</heading>
584 <query>SELECT COUNT(id), l_itype FROM asset_copy_legacy GROUP BY 2 ORDER BY 2;</query>
588 <name>hz_volfieldexamples</name>
589 <report_title>Sample Volume Field Values</report_title>
591 <iteration>0</iteration>
592 <heading>Field</heading>
593 <query>SELECT l_volume FROM asset_copy_legacy WHERE LENGTH(l_volume) > 1 LIMIT 30;</query>
598 <name>hz_iteminhouseuses</name>
599 <report_title>Item In House Uses</report_title>
601 <iteration>0</iteration>
602 <heading>Count.Number of Uses</heading>
603 <query>SELECT COUNT(id), l_n_inhouse_uses FROM asset_copy_legacy GROUP BY 2 ORDER BY 2;</query>
607 <name>hz_internalnotesample</name>
608 <report_title>Internal Item Notes</report_title>
610 <iteration>0</iteration>
611 <heading>Sample Note</heading>
612 <query>SELECT l_internal_note FROM asset_copy_legacy WHERE LENGTH(l_internal_note) > 1 LIMIT 30;</query>
615 <!-- resource mate -->
618 <name>rm_load_circ_count</name>
620 <iteration>0</iteration>
621 <report_title>Circs by Status</report_title>
622 <heading>Count of Circs.Status</heading>
623 <query>SELECT COUNT(id), l_is_checked_out FROM asset_copy_legacy GROUP BY 2</query>
627 <name>rm_load_asset_by_resource_type</name>
628 <report_title>Resource Type</report_title>
630 <iteration>0</iteration>
631 <heading>Count.Resource Type</heading>
632 <query>SELECT COUNT(*), l_resource_type FROM asset_copy_legacy GROUP BY 2 ORDER BY 2</query>
636 <name>rm_load_asset_by_location</name>
637 <report_title>Copies by Location</report_title>
639 <iteration>0</iteration>
640 <heading>Count.Location</heading>
641 <query>SELECT COUNT(*), l_location FROM asset_copy_legacy GROUP BY 2 ORDER BY 2</query>
645 <name>rm_load_asset_by_category</name>
646 <report_title>Copies by Category</report_title>
648 <iteration>0</iteration>
649 <heading>Count.Category</heading>
650 <query>SELECT COUNT(*), l_category FROM asset_copy_legacy GROUP BY 2 ORDER BY 2</query>
654 <name>rm_load_asset_by_status</name>
655 <report_title>Copies by Status</report_title>
657 <iteration>0</iteration>
658 <heading>Count.Status</heading>
659 <query>SELECT COUNT(*), l_status FROM asset_copy_legacy GROUP BY 2 ORDER BY 2</query>
663 <name>rm_actor_groups</name>
664 <report_title>Patrons by User Groups</report_title>
666 <iteration>0</iteration>
667 <heading>Count.Group</heading>
668 <query>SELECT COUNT(id), l_user_group FROM actor_usr_legacy GROUP BY 2 ORDER BY 2;
673 <name>rm_actor_access</name>
674 <report_title>Patrons by Access Field</report_title>
676 <iteration>0</iteration>
677 <heading>Count.Access</heading>
678 <query>SELECT COUNT(id), l_access_if_applicable FROM actor_usr_legacy GROUP BY 2 ORDER BY 2;
682 <name>rm_actor_comments</name>
683 <report_title>Patron Comments</report_title>
685 <iteration>0</iteration>
686 <heading>Count.Sample</heading>
687 <query>SELECT COUNT(id), 'All Comments' FROM actor_usr_legacy WHERE LENGTH(l_comments) > 1
688 UNION ALL SELECT NULL, l_comments FROM actor_usr_legacy WHERE LENGTH(l_comments) > 1 LIMIT 10
693 <name>rm_actor_circulation_note</name>
694 <report_title>Patron Circ Notes</report_title>
696 <iteration>0</iteration>
697 <heading>Count.Sample</heading>
698 <query>SELECT COUNT(id), 'All Notes' FROM actor_usr_legacy WHERE LENGTH(l_circulation_note) > 1
699 UNION ALL SELECT NULL, l_circulation_note FROM actor_usr_legacy WHERE LENGTH(l_circulation_note) > 1 LIMIT 10
706 <name>tlc_reports_load_asset_holdings_codes</name>
707 <report_title>Holdings Codes</report_title>
708 <tag>tlc_reports</tag>
709 <iteration>0</iteration>
710 <heading>Count.Library.Holdings Codes.Evergreen Circulation Modifier.Evergreen Shelving Locatione</heading>
711 <query>SELECT COUNT(id), x_source, l_holdingscode FROM asset_copy_legacy GROUP BY 2, 3 ORDER BY 2, 3</query>
715 <name>tlc_reports_load_usrs_bygroup</name>
716 <report_title>Patrons by Agency Type</report_title>
717 <tag>tlc_reports</tag>
718 <iteration>0</iteration>
719 <heading>Count.Library.Permission Group.Evergreen Permission Group</heading>
720 <query>SELECT COUNT(id), l_location, l_borrower_type FROM actor_usr_legacy GROUP BY 2, 3 ORDER BY 2, 3</query>
724 <name>tlc_reports_load_usr_balance</name>
725 <report_title>Count and Sum of Balances</report_title>
726 <tag>tlc_reports</tag>
727 <iteration>0</iteration>
728 <heading>Count.SUM.Migrate?</heading>
729 <query>SELECT COUNT(id), SUM(l_current_fine_balance::NUMERIC(6,2)) FROM actor_usr_address_legacy WHERE l_current_fine_balance != '0' AND l_current_fine_balance IS NOT NULL</query>
733 <name>tlc_reports_users_blocked</name>
734 <report_title>Count of Blocked Patrons</report_title>
735 <tag>tlc_reports</tag>
736 <iteration>0</iteration>
737 <heading>Count.Blocked.Migrate?</heading>
738 <query>SELECT COUNT(id), l_blocked FROM actor_usr_address_legacy GROUP BY 2</query>
742 <name>tlc_reports_load_usr_addresses_phones</name>
743 <report_title>Patron Phones</report_title>
744 <tag>tlc_reports</tag>
745 <iteration>0</iteration>
746 <heading>Count.Phone Type.Phone Type</heading>
747 <query>SELECT COUNT(id), 'Phone 1' FROM actor_usr_address_legacy WHERE l_phone_1 IS NOT NULL GROUP BY 2 UNION ALL SELECT COUNT(id), 'Phone 2' FROM actor_usr_address_legacy WHERE l_phone_2 IS NOT NULL GROUP BY 2</query>