~evergreen-bugs/evergreen/rel_3_11

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
Evergreen 2.10 Release Notes
============================
:toc:
:numbered:

Evergreen 2.10.12
-----------------
This release is a security release.

Security Issue: XSS Vulnerability in Public Catalog
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This release fixes several cross-site scripting (XSS) vulnerabilities
in the public catalog. When upgrading, Evergreen administrators should
review whether any of the following templates have been customized
or overridden. If so, either the template should be replaced with the
stock version or the XSS fix (which entails adding the `| html` filter
in several places) applied to the customized version.

* `Open-ILS/src/templates/opac/parts/locale_picker.tt2`
* `Open-ILS/src/templates/opac/parts/login/form.tt2`
* `Open-ILS/src/templates/opac/parts/searchbar.tt2`

Acknowledgements
~~~~~~~~~~~~~~~~
We would like to thank the following individuals who contributed code,
testing and documentation patches to the 2.10.12 point release of
Evergreen:

* Galen Charlton
* Dan Scott

Evergreen 2.10.11
-----------------

This release contains several bug fixes improving on Evergreen 2.10.10.

* A fix to avoid fetching and creating EDI message entries that the
system cannot parse.
* A fix to prevent staff users from marking a long overdue item as lost 
so that the patron will not be billed twice for the same item.
* A fix to the link that is used on the catalog's Library Info page so
that links with anchors can be successfully retrieved.
* A replacement for the blank fallback image used when the catalog cannot
retrieve an added content book cover.
* An EDI fix that prevents EDI fetcher from crashing when the vendor
supplies a zero-length file.
* A fix to an issue where adjusting a bill to zero for a current checkout
prematurely closes the transaction.
* A fix to encoding problems in MODS output. These problems caused issues
when using Zotero with records in the catalog.
* A fix that marks a hold as fulfilled when staff check out a hold-
captured item for a hold whose expire time is in the past.
* A change to the acquisitions funding source funds drop down menu so that
the menu will now only display active funds and will also display the 
year alongside the fund.
* A fix to a problem where the Current Bills tab of the patron record
showed duplicate charges when a check in was done from the Items Out tab.
* A fix that hides the option to add to My Lists from the staff client since this functionality does not work as expected in the staff client.
* A change to the fund year selectors in acq interfaces so that the years
are sorted in descending order.
* A fix to a billing issue where transactions were not re-opened after
they acquired a non-zero balance at check in.

Acknowledgements
~~~~~~~~~~~~~~
We would like to thank the following individuals who contributed code,
testing and documentation patches to the 2.10.11 point release of
Evergreen:

* Jason Boyer
* Galen Charlton
* Jeff Davis
* Bill Erickson
* Jason Etheridge
* Kathy Lussier
* Christine Morgan
* Michele Morgan
* Terran McCanna
* Jane Sandberg
* Jonathan Schatz
* Dan Scott
* Ben Shum
* Remington Steed
* Dan Wells
* Bob Wicksall

Evergreen 2.10.10
-----------------
This is a security release that also contains several other bug fixes improving
on Evergreen 2.10.9.  All users of Evergreen 2.10.x are recommended to upgrade
to 2.10.10 as soon as possible.

Security Issue: Credit Processor Stripe Settings Permissions
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Unprivileged users can retrieve organizational unit setting values for
setting types lacking a "view" permission.  When the feature adding
Stripe credit card processing was added, the upgrade script neglected
to add the VIEW_CREDIT_CARD_PROCESSING permission to the
organizational unit setting type.  This means that anyone can retrieve
and view the settings for Stripe credit card processing.

Any system that upgraded from Evergreen version 2.5 to 2.6 is
affected.  If you use Stripe for credit card processing, it is
strongly recommended that you apply this upgrade.  Even if you do not
use Stripe, applying this upgrade is still recommended.  If you did
not upgrade from version 2.5 to 2.6 of Evergreen, but started with a
later version, applying this upgrade is harmless.

If you are not ready to perform a full upgrade, and if you use Stripe,
you can protect the settings by running the following two SQL statements:

[source,sql]
----
UPDATE config.org_unit_setting_type
    SET view_perm = (SELECT id FROM permission.perm_list
        WHERE code = 'VIEW_CREDIT_CARD_PROCESSING' LIMIT 1)
    WHERE name LIKE 'credit.processor.stripe%' AND view_perm IS NULL;

UPDATE config.org_unit_setting_type
    SET update_perm = (SELECT id FROM permission.perm_list
        WHERE code = 'ADMIN_CREDIT_CARD_PROCESSING' LIMIT 1)
    WHERE name LIKE 'credit.processor.stripe%' AND update_perm IS NULL;
----

Other Fixes
~~~~~~~~~

Evergreen 2.10.10 also contains the following bug fixes:

* A fix to correctly apply floating group settings when performing
no-op checkins.
* A fix to the HTML coding of the temporary lists page.
* A fix of a problem where certain kinds of requests of information
about the organizational unit hierarchy to consume all available
`open-ils.cstore` backends.
* A fix to allow staff to use the 'place another hold' link without
running into a user interface loop.
* A fix to the 'Edit Due Date' form in the web staff client.
* A fix to sort billing types and non-barcoded item types in alphabetical
order in the web staff client.
* A fix to the 'return to grouped search results' link in the public
catalog.
* A fix to allow pre-cat checkouts in the web staff client without requiring
a circulation modifier.
* Other typo and documentation fixes.

Acknowledgements
~~~~~~~~~~~~~~
We would like to thank the following individuals who contributed code,
testing and documentation patches to the 2.10.10 point release of
Evergreen:

* Ben Shum
* Bill Erickson
* Blake Henderson
* Chris Sharp
* Christine Burns
* Galen Charlton
* Jane Sandberg
* Jason Stephenson
* Jeanette Lundgren
* Josh Stompro
* Kathy Lussier
* Kyle Huckins
* Mike Rylander

Evergreen 2.10.9
----------------

This release contains several bug fixes improving on Evergreen 2.10.8

* A fix to the web client patron interface that changed the holds count in the
patron summary from total / available to available / total.
* A fix to an issue where the Closed Dates Editor was displaying an extra day of closure.
* A fix to the Closed Dates Editor so that it now displays "All Day" when the library is closed for the entire day.
* A fix to properly format LC Call numbers in spine label printing.
* A fix to a bug that was causing intermittent search failures.

Acknowledgements
~~~~~~~~~~~~~~~~
We would like to thank the following individuals who contributed code,
testing and documentation patches to the 2.10.9 point release of
Evergreen:

* Galen Charlton
* Kyle Huckins
* Jeanette Lundgren
* Dan Pearl
* Michelle Purcell
* Jane Sandberg
* Dan Scott
* Remington Steed


Evergreen 2.10.8
----------------

This release contains several bug fixes improving on Evergreen 2.10.7

* A fix to that provides alphabetical sorting to the fund selector in
the Acquisitions Selection List -> Copies interface.
* The addition of a progress bar that displays when conducting a patron search in the web client.
* A fix to the web client patron interface so that total Items Out in the
patron summary now includes overdue and long overdue items. It will also
include Lost and Claims Returned items when the appropriate library
setting is enabled.
* A change to the public catalog My Account screen where the font for 
leading articles will now be smaller when sorting a list by title. 
* A fix to subject links in the catalog's record summary page so that
periods are no longer stripped from resulting subject searches, leading
to more accurate results when those links are clicked.
* A fix to avoid avoid unint warnings in the logs for prox_cache in
open-ils.circ.hold.is_possible.
* A fix to rounding errors that occured when summing owed/paid totals
for display in the catalog's credit card payment form.
* A change to sort behavior in the My Account screens. Previously, a 
third click on a column header returned the list to its original sort
order. Clicking column headers will now simply toggle the sort
between ascending and descending order. 
* The Permalink option on the catalog's record summary page will now be
hidden in the staff client because clicking the link in the client led
to no discernable change for users.
* A fix to the text of a notice that displays when migrating circulation
history during the upgrade to 2.10.
* An improvement to the performance for the lookup of a user's circ
history by adding an index on action.usr_circ_history(usr).
* The addition of Spanish as a supported translation so that
it can be configured as a language option in the public catalog.
* A fix so that when a bib record's fingerprint changes, it gets correctly
moved to a different metarecord.

Acknowledgements
~~~~~~~~~~~~~~~~
We would like to thank the following individuals who contributed code,
tests and documentation patches to the 2.10.8 point release of
Evergreen:

* Galen Charlton
* Bill Erickson
* Jim Keenan
* Kathy Lussier
* Christine Morgan
* Dan Scott
* Ben Shum
* Remington Steed
* Josh Stompro
* Dan Wells

Evergreen 2.10.7
----------------

This release contains several bug fixes improving on Evergreen 2.10.6.

* When adding a price to the Acquisitions Brief Record price field, it will
now propogate to the lineitem estimated price field.
* Declares UTF-8 encoding when printing from the catalog to resolve issues
where non-ASCII characters printed incorrectly in some browsers.
* Fixes an issue where the circ module sometimes skipped over booking logic
even when booking was running on a system.
* Fixes an issue where the workstation parameter was not passed through
the AuthProxy.pm login function, causing problems with opt-in settings and
transit behaviors.

Acknowledgements
~~~~~~~~~~~~~~~~
We would like to thank the following individuals who contributed code,
testing and documentation patches to the 2.10.7 point release of
Evergreen:

* Eva Cerninakova
* Bill Erickson
* Mike Rylander
* Dan Scott 
* Dan Wells

Evergreen 2.10.6
----------------
This release contains bug fixes improving on Evergreen 2.10.5.

Add Date Header to Action Trigger Email/SMS Templates
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The Date: header specified in RFC 2822 has been added to the seed data
for the example Action Trigger email and SMS templates, but no attempt
has been made to automatically modify existing templates. To add this
header (and end any "Why are my library emails from 1969/70?" questions
you may have heard) make sure the following lines are in all templates
that use the SendEmail or SendSMS reactors:

The first is already in most sample templates, but you may need to add
it to the top of any custom templates:
`[%- USE date -%]`

And this line should be inserted into the header block of each template:
`Date: [%- date.format(date.now, '%a, %d %b %Y %T -0000', gmt => 1) %]`

Other Bug Fixes
~~~~~~~~~~~~~~~
* Prorating invoice charges now works again.
* The claims never checked out counter on the patron record is now
  incremented correctly when marking a lost loan as
  claims-never-checked-out.
* When a transit is canceled, the copy's status is changed only
  if its status was previously "In Transit".
* Retrieving records with embedded holdings via SRU and Z39.50 is now
  faster.
* A performance issue with sorting entries on the public catalog
  circulation history page is fixed.
* Various style and responsive design improvements are made to the
  circulation and holds history pages in the public catalog.
* The public catalog holds history page now indicates if a hold
  had been fulfilled.
* The hold status message in the public catalog now uses
  better grammar.
* The error message displayed when a patron attempts to place
  a hold but is prevented from doing so due to policy reasons
  is now more likely to be useful
* The public catalog now draws the edition statement only
  from the 250 field; it no longer tries to check the 534
  and 775 fields.
* Embedded schema.org microdata now uses "offeredBy" rather
  than "seller".
* The ContentCafe added content plugin now handles the "fake"
  ISBNs that Baker and Taylor assigns to media items.
* Attempting to renew a rental or deposit item in the public
  catalog no longer causes an internal server error.
* Various format icons now have transparent backgrounds (as opposed
  to white).
* The file extension when exporting non-imported records is
  now ".mrc" rather than ".xml".
* The staff client will no longer wait indefinitely for Novelist
  to supply added content, improving its responsiveness.
* A few additional strings are now marked as translatable.

Translation Updates
~~~~~~~~~~~~~~~~~~~
Translations in this release have been significantly increased.  In
particular, Spanish has received a huge update with over 9,000 new
translations, Czech has received a sizable update of over 800
translations, and additional smaller updates have been added for
Arabic, French (Canada), and Armenian.

Acknowledgments
~~~~~~~~~~~~~~~
We would like to thank the following individuals who contributed
code, testing and documentation patches to the 2.10.6 point release of Evergreen:

* Thomas Berezansky
* Jason Boyer
* Galen Charlton
* Jeff Davis
* Bill Erickson
* Blake Graham-Henderson
* Jim Keenan
* Kathy Lussier
* Mike Rylander
* Jane Sandberg
* Dan Scott
* Ben Shum
* Remington Steed
* Jason Stephenson
* Josh Stompro
* Yamil Suarez
* Dan Wells

Evergreen 2.10.5
----------------
This release contains bug fixes improving on Evergreen 2.10.4

* Fixes SIP2 failures with patron information messages when a
patron has one or more blocking penalties that are not otherwise
ignored.
* Recovers a previously existing activity log entry that logged the
username, authtoken, and workstation (when available) for successful
logins.
* Fixes an error that occurred when the system attempted to display a translated
string for the "Has Local Copy" hold placement error message.
* Fixes an issue where the Show More/Show Fewer Details button didn't work in
catalogs that default to showing more details.
* Removes Social Security Number as a stock patron identification type for
new installations. This fix does not change patron identification types for 
existing Evergreen systems.
* Adds two missing link fields (patron profile and patron home library) to
the fm_idl.xml for the Combined Active and Aged Circulations (combcirc)
reporter source.
* Adds a performance improvement for the "Clear Holds Shelf" checkin modifier.

Acknowledgements
~~~~~~~~~~~~~~~~
We would like to thank the following individuals who contributed
code, testing and documentation patches to the 2.10.5 point release of Evergreen:

* Galen Charlton
* Bill Erickson
* Jeff Godin
* Codey Kolasinski
* Jeanette Lundgren
* Kathy Lussier
* Terran McCanna
* Michele Morgan
* Jason Stephenson

Evergreen 2.10.4
----------------
This release contains bug fixes improving on Evergreen 2.10.3

* Fixes the responsive view of the My Account Items Out screen so that Title and
Author are now in separate columns.
* Fixes an incorrect link for the MVF field definition and adds a new link to
BRE in fm_IDL.xml.
* Fixes a bug where the MARC stream authority cleanup deleted a bib 
record instead of an authority record from the authority queue.
* Fixes a bug where Action Triggers could select an inactive event
definition when running.
* Eliminates the output of a null byte after a spool file is processed
in MARC steam importer.
* Fixes an issue where previously-checked-out items did not display in
metarecord searches when the Tag Circulated Items Library Setting is
enabled.
* Fixes an issue in the 0951 upgrade script where the script was not
inserting the version into config.upgrade_log because the line to do so
was still commented out.

Acknowledgments
~~~~~~~~~~~~~~~
We would like to thank the following individuals who contributed
code, testing, and documentation patches to the 2.10.4 point release
of Evergreen:

* Jason Boyer
* Bill Erickson
* Galen Charlton
* Kathy Lussier
* Jason Stephenson
* Josh Stompro


Evergreen 2.10.3
----------------
This release contains bug fixes improving on Evergreen 2.10.2:

* Fixes a critical bug where a newly-registered patron record could
  not be used to log in to Evergreen using the password supplied during
  registration. Under some circumstances, the same bug could also
  prevent patron records that were modified via the patron registration
  form from being used to log in.
* Emails sent using the Action Trigger SendEmail reactor now always
  MIME-encode the From, To, Subject, Bcc, Cc, Reply-To, and Sender
  headers. As a consequence, non-ASCII character in those fields are
  more likely to be displayed correctly in email clients.

Acknowledgements
~~~~~~~~~~~~~~
We would like to thank the following individuals who contributed
code, testing, and documentation patches to the 2.10.3 point release
of Evergreen:

* Galen Charlton
* Pasi Kallinen
* Kathy Lussier
* Mike Rylander
* Dan Scott
* Remington Steed
* Dan Wells

Evergreen 2.10.2
----------------
This release contains several bug fixes improving on Evergreen 2.10.1

* Fixes a bug where phrase searching in the catalog failed when the phrase
started or ended with punctuation.
* Fixes a bug where changing the sort order in the public catalog to
"relevance" could fail.
* Fixes a bug that prevented users from recreating a monograph part that
had previously been deleted.
* Fixes a bug where serials checkouts failed for users that track circulation
history.
* Fixes a bug that prevented the Library Settings Editor from
consistently retrieving the values of library settings.
* Fixes several issues with the new web-based Angular patron editor, including:
** Allows barcodes to be used as user name even if it doesn't match the user
name regex.
** Presents an alert when trying to save a form with invalid values.
** Allows staff to delete all patron addresses if the corresponding Library 
Setting allows them to do so.
** Honors Library Settings to require the county and state fields at patron
registration time.
** Resizes checkboxes that had become huge in some browsers.
** Displays the New Address button at all times.
** Prevents staff from editing linked addresses for cloned users.
** Fixes a bug where out-of-scope stat cats would be incorrectly bundled in the 
patron save operation, resulting in a server-side error on save.
* Silences unnecessary warnings emitted for libraries using extending grace
periods.
* Removes support for Debian Squeeze now that its long-term support period
has ended.
* Fixes a bug that had prevented the dependency libpcre3 from being
intalled on Debian Jessie.
* Fixes some QA tests that had been failing.
* Renumbers the Perl unit test files.

Acknowledgements
~~~~~~~~~~~~~~~~
We would like to thank the following individuals who contributed
code and documentation patches to the 2.10.2 point release of Evergreen:

* Jason Boyer
* Steve Callender
* Galen Charlton
* Bill Erickson
* Anna Goben
* Angela Kilsdonk
* Debbie Luchenbill
* Jennifer Pringle
* Mike Rylander
* Jane Sandberg
* Jason Stephenson
* Yamil Suarez

We also thank the following organizations whose employees contributed
patches:

* BC Libraries Cooperative
* Berklee College of Music
* Equinox Software, Inc.
* Evergreen Indiana
* King County Library System
* Linn Libraries Consortium
* Merrimack Valley Library Consortium
* MOBIUS


Evergreen 2.10.1
----------------

Evergreen 2.10.1 is a bugfix release that fixes one significant
bug in 2.10.0:

* https://bugs.launchpad.net/bugs/1560174[Bug 1560174: Importing MARC records can fail in database upgraded to 2.10.0]

This bug affected only databases that were upgraded to 2.10.0 from a
previous version; fresh installations of 2.10.0 are not affected.

Evergreen users who prefer not to perform a full upgrade from 2.10.0
to 2.10.1 can fix the bug by applying the database update script
`2.10.0-2.10.1-upgrade-db.sql` (found in the source directory
`Open-ILS/src/sql/Pg/version-upgrade`).

Evergreen 2.10.1 Acknowledgments
--------------------------------
The Evergreen project would like to thank the following 
individuals who contributed code and testing to this release
of Evergreen:

 * Galen Charlton
 * Dan Wells

Evergreen 2.10.0 Upgrade notes
------------------------------

* Support for PostgreSQL 9.1 is deprecated as of
  the release of Evergreen 2.10.0. Users are recommended
  to install Evergreen on PostgreSQL 9.2 or later.
* In the next major release following 2.10.0, Evergreen will no
  longer officially support PostgreSQL 9.1.
* Please read the release notes thoroughly for information
  about changes that Evergreen administrators may need
  to make manually when upgrading to 2.10.0.  In particular,
  the enhancement to user password storage introduces a
  new service, `open-ils.auth_internal`, and requires
  changes to `opensrf.xml` in order for users to be able
  log in.

Evergreen 2.10.0 New Features
-----------------------------



Acquisitions
~~~~~~~~~~~~



PO Line item "paid" label
^^^^^^^^^^^^^^^^^^^^^^^^^
A new "paid" label appears along the bottom of each line item in the PO 
display when every non-canceled copy on the line item has been invoiced.




Disencumber funds on invoice close
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Fund debits linked to an invoice are now marked as paid (encumbrance=false)
when the invoice is marked as closed/complete instead of at invoice create
time.  This is particularly useful for EDI invoices which may be 
created well in advance of receipt and payment.





PO actions selector always visible
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The actions selector is now always visible in the purchase order view,
even when no line items exist.  With this, users can print PO's that
only contain direct charges.

The custom "Add Brief Record" button is no longer present, since the
same action is accessible via the now-visible selector.




Administration
~~~~~~~~~~~~~~



Set application name when connecting to database
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The services that connect directly to the PostgreSQL database
(and Clark Kent) now look for an application_name parameter
as part of the database login credentials specified in
`opensrf.xml`.  If present, the value is used to set the
application name Pg connection value; this in turn shows up in
the Postgres `pg_stat_activity` table and Pg's logs.




Credit card receipts and privacy
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

To improve privacy and security, Evergreen now stores less data 
about credit card transactions.  The following fields are no 
longer stored:

 * `cc_type`
 * `cc_first_name`
 * `cc_last_name`
 * `expire_month`
 * `expire_year`

NOTE: All existing data within these fields will be deleted during
the upgrade.  Reports using this data will no longer function.

Additionally, a tool has been added to Evergreen for clearing the 
last 4 digits of the credit payment from the database after payments
reach a certain age.

Print/email templates
+++++++++++++++++++++

The stock print and email payment templates have been modified to no 
longer use these fields, but only when the existing templates matched
the stock templates.  If local changes have been applied, it will
be necessary to modify local templates to avoid referencing these
fields which no longer exist.

Any templates whose hook is "money.format.payment_receipt.print" or 
"money.format.payment_receipt.email" may need modification.  In stock
Evergreen, these are templates:

1. "money.payment_receipt.email" (stock id 29)
2. "money.payment_receipt.print" (stock id 30)

Example diff:

[source,diff]
---------------------------------------------
-  [% CASE "credit_card_payment" %]credit card (
-      [%- SET cc_chunks = mp.credit_card_payment.cc_number.replace(' ','').chunk(4); -%]
-      [%- cc_chunks.slice(0, -1+cc_chunks.max).join.replace('\S','X') -%] 
-      [% cc_chunks.last -%]
-      exp [% mp.credit_card_payment.expire_month %]/[% mp.credit_card_payment.expire_year -%]
-  )
+  [% CASE "credit_card_payment" %]credit card
+  [%- IF mp.credit_card_payment.cc_number %] ([% mp.credit_card_payment.cc_number %])[% END %]
---------------------------------------------

Clearing the last 4 of the CC number
++++++++++++++++++++++++++++++++++++

To activate automatic CC number clearing, add the following to opensrf's
crontab.  Change timing to suit.

[source,sh]
---------------------------------------------
5  4  * * *   . ~/.bashrc && $EG_BIN_DIR/clear_cc_number.srfsh
---------------------------------------------

The default retention age is 1 year, but this can be changed by modifying
`clear_cc_number.srfsh` (typically found in `/openils/bin/`).  Replace "1 year"
with the age of your choice.






Configure multiple telephony servers via action/trigger
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
If you are using the AstCall action/trigger reactor
to generate callfiles to send to an Asterisk server, until
now the only place to specify the relevant configuration
was in `opensrf.xml`. However, this restricted an Evergreen
consortium to using only one Asterisk instance.

Now, the telephony parameters can also be specified as 
A/T event parameters, allowing per-library configuration.

.Telephony parameters
|===
| Name | Example value

| enabled
| 0

| driver
| "SIP"

| channels
| ["Zap/1", "Zap/2", "IAX/user:secret@widgets.biz"]

| host
| "localhost"

| port
| "10080"

| user
| "evergreen"

| pw
| "evergreen"

| callfile_lines
| ["MaxRetries: 3", "RetryTime: 60", "WaitTime: 30", "Archive: 1", "Extension: 10"]
|===




Juvenile-to-adult batch script honors library setting
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The batch `juv_to_adult.srfsh` script that, when set up as a cronjob,
is responsible for toggling a patron from juvenile to adult now
honors the age value set in the library setting named "Juvenile Age
Threshold" (`global.juvenile_age_threshold`).  When no library setting value
is present at a given patron's home library, the value passed in to the
script will be used as a default.




New reporting source for hold/copy ratios
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
A new reporting source is added, "Hold/Copy Ratio per Bib
and Pickup Library (and Descendants)", that, for each bib
that has a hold request on it or any of its components,
calculates the following:

 * active holds at each OU (including the OU's descendants)
 * holdable copies at each OU (and its descendants)
 * the ratio of the above two counts
 * counts and ratio across the entire consortium

This source differs from the "Hold/Copy Ratio per Bib
and Pickup Library" source by including all descendants
of the organization unit one is filtering on.

One use case is allowing a multi-branch system within an
Evergreen consortium that doesn't do full resource sharing
to readily calculate whether additional copies should be
purchased for that system.




New patron action/trigger notice
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

A new action/trigger event definition ("New User Created Welcome Notice") 
has been added that will allow you to send a notice after a new patron has 
been created, based on the actor.usr create-date field.

This notice can be used for various tasks.

  * Sending a welcome email to new patrons to market library services.
  * Confirm that a new patron email address is correct.
  * Generate postal notices to send a welcome packet to new patrons.

Enable this event in the staff client at *Admin* -> *Local Administration* 
-> *Notifications / Action Triggers*.




Improved password management and authentication
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Evergreen user passwords are now stored with additional layers of 
encryption and may only be accessed directly by the database, not
the application layer.

All API changes are backwards compatible with existing 3rd-party
clients.

Migrating passwords
+++++++++++++++++++

Passwords are migrated for each user automatically the first time a user
logs in under the new setup.  However, it is also possible to force
password migration for a given user via a database function:

[source,sql]
------------------------------------------------------------
-- actor.migrate_passwd() will only migrate un-migrated 
-- accounts, but it's faster to avoid any re-migration attempts.
SELECT actor.migrate_passwd(au.id)
FROM actor.usr au
    LEFT JOIN actor.passwd pw ON (pw.usr = au.id)
WHERE pw.usr IS NULL; 
------------------------------------------------------------

Using this, admins could perform manual batch updates to force all
users to use the new, more secure passwords, regardless of when or
whether a patron logs back into the system.  

Beware that doing this for all users in a large database will 
take some time and should probably be performed in batches.

Changing Encryption Work Factor
+++++++++++++++++++++++++++++++

Roughly speaking, the 'work factor' determines the amount of time/effort
required to crack passwords.  The higher the value, the more secure the
password.  Higher values also mean that it takes longer for password
verification (e.g. during login) to work.

At time of release, Evergreen uses a work factor value of 10.  The value
is set in the database table/column actor.passwd_type.iter_count (hash
iteration count).  When this value is modified, any passwords created or
modified after the change will use the new work factor.  Other passwords
will continue using the work factor in place when they were
created/modified, until they are changed once again.

Beware that raising the work factor can have a significant impact on
login speeds.  A work factor of 10 requires ~0.1 seconds to verify a
password.  A work factor of 15 takes almost 2 full seconds!  Also beware
that once a password is encoded with a higher work factor, it cannot be
lowered again through any automatic means.  The owner of the password
would have to log in and modify the password after the work factor is
re-lowered.

Because of this, it's recommended that admins thoroughly test work
factor modifications before deploying to production.

To check encryption timing:

[source,sql]
--------------------------------------------------------------------------
-- enable psql timing
evergreen=# \timing

-- encode password "HELLOWORLD" with a work factor of 10.
evergreen=# select crypt('HELLOWORLD', gen_salt('bf', 10));
(1 row)

Time: 95.082 ms
--------------------------------------------------------------------------

open-ils.auth_internal
++++++++++++++++++++++
To support the new storage mechanism, a new Evergreen service has
been added called `open-ils.auth_internal`.  This service runs on
the private OpenSRF/XMPP domain and is used to store authenticated 
user data in the authentication cache.  

This is a required service and changes to `opensrf.xml` (typically 
`/openils/conf/opensrf.xml`) are needed to run the new service.

.Modifying opensrf.xml
* A new `<open-ils.auth_internal>` app stanza is added to define the 
  new service
* Cache timeout settings are moved from the app stanza for `open-ils.auth`
  into `open-ils.auth_internal`
* `open-ils.auth_internal` is added to the set of running services for the 
  domain.

Example diff:

[source,diff]
---------------------------------------------------------------------
diff --git a/Open-ILS/examples/opensrf.xml.example b/Open-ILS/examples/opensrf.xml.example
index 3b47481..59f737a 100644
--- a/Open-ILS/examples/opensrf.xml.example
+++ b/Open-ILS/examples/opensrf.xml.example
@@ -424,6 +424,29 @@ vim:et:ts=4:sw=4:
                 </unix_config>
                 <app_settings>
                     <!-- defined app-specific settings here -->
+                    <auth_limits>
+                        <seed>30</seed> <!-- amount of time a seed request is valid for -->
+                        <block_time>90</block_time> <!-- amount of time since last auth or seed request to save failure counts -->
+                        <block_count>10</block_count> <!-- number of failures before blocking access -->
+                    </auth_limits>
+                </app_settings>
+            </open-ils.auth>
+
+            <!-- Internal authentication server -->
+            <open-ils.auth_internal>
+                <keepalive>5</keepalive>
+                <stateless>1</stateless>
+                <language>c</language>
+                <implementation>oils_auth_internal.so</implementation>
+                <unix_config>
+                    <max_requests>1000</max_requests>
+                    <min_children>1</min_children>
+                    <max_children>15</max_children>
+                    <min_spare_children>1</min_spare_children>
+                    <max_spare_children>5</max_spare_children>
+                </unix_config>
+                <app_settings>
+                    <!-- defined app-specific settings here -->
                     <default_timeout>
                         <!-- default login timeouts based on login type -->
                         <opac>420</opac>
@@ -431,13 +454,10 @@ vim:et:ts=4:sw=4:
                         <temp>300</temp>
                         <persist>2 weeks</persist>
                     </default_timeout>
-                    <auth_limits>
-                        <seed>30</seed> <!-- amount of time a seed request is valid for -->
-                        <block_time>90</block_time> <!-- amount of time since last auth or seed request to save failure counts -->
-                        <block_count>10</block_count> <!-- number of failures before blocking access -->
-                    </auth_limits>
                 </app_settings>
-            </open-ils.auth>
+            </open-ils.auth_internal>
+
+
 
             <!-- Authentication proxy server -->
             <open-ils.auth_proxy>
@@ -1177,6 +1197,7 @@ vim:et:ts=4:sw=4:
                 <appname>open-ils.circ</appname> 
                 <appname>open-ils.actor</appname> 
                 <appname>open-ils.auth</appname> 
+                <appname>open-ils.auth_internal</appname>
                 <appname>open-ils.auth_proxy</appname> 
                 <appname>open-ils.storage</appname>  
                 <appname>open-ils.justintime</appname>  
---------------------------------------------------------------------








Sortable HTML reports
^^^^^^^^^^^^^^^^^^^^^
HTML reports can now be sorted by clicking on the header for a given column.
Clicking on the header toggles between sorting the column in ascending and
descending order. Note that sorting is available only when there are
at most 10,000 rows of output.




Cataloging
~~~~~~~~~~



Additional fixed fields
^^^^^^^^^^^^^^^^^^^^^^^
The AccM, Comp, CrTp, EntW, Cont, FMus, LTxt, Orig, Part, Proj, Relf, SpFm,
SrTp, Tech, and TrAr fixed fields have been defined and coded value maps added
so they can also be used for Advanced Searches or inclusion in Composite Value Maps.

Note that AccM, Cont, LTxt, Relf, and SpFm are  compositite values based on
the values of "helper" fields like AccM(1), AccM(2), and so on. These positional
fields can be ignored.

Coded value maps have also been added for Cont, Ctry, and DtSt, and the Time field
has been defined. All of these fields are now available in the Fixed Field Editor
when editing the appropriate records.




Quickly export non-imported records
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
When inspecting a queue in MARC Batch Import/Export, there is now
a link to download to MARC file any records in the queue that were
not imported into the catalog.  This allows catalogers to quickly
manipulate the records that failed to import using an external
tool, then attempt to import them again.




Link personal name/title series added entries
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The authority linker script now supports linking the MARC21
field 800 (series added entry - personal name) to authority
records.




MARC stream importer authority records and repairs
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The MARC stream importer script, commonly used with external 
services like OCLC Connexion, is now capable of importing authority
records in addition to bib records.  A single running instance of
the script can import either type of record, based on the record
leader.

New Options
+++++++++++

 * --auth-merge-profile
 * --auth-queue
 * --bib-import-no-match
 * --bib-auto-overlay-exact
 * --bib-auto-overlay-1match
 * --bib-auto-overlay-best-match
 * --auth-import-no-match
 * --auth-auto-overlay-exact
 * --auth-auto-overlay-1match
 * --auth-auto-overlay-best-match

Deprecated options
++++++++++++++++++

The following options still work and map to the "bib" equivalent
of the option, however a deprecation warning message is generated 
when the script is started.

 * --import-no-match
 * --auto-overlay-exact
 * --auto-overlay-1match
 * --auto-overlay-best-match

No longer supported options
+++++++++++++++++++++++++++

--import-by-queue is no longer supported.  This option serves no
particular purpose and is a bad idea when re-using the same queue over
and over as most people do, because queue bloat will increase run times.

--noqueue (AKA "direct import") is no longer supported.  All imports go
through Vandelay now.




Support for monograph parts import in MARC Batch Import/Export
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
When adding or overlaying copies in MARC Batch Import/Export
(Vandelay), monograph part labels can now be assigned during the import
process.  This feature is modeled after the existing support for
statistical category import.  As such, it:

 * Uses '|' characters to separate labels to allow for multiple part
   assignment
 * Adds to (rather than replaces) any existing parts assigned to overlay
   copies




Circulation
~~~~~~~~~~~



Alternate parts selection display when placing holds
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Users often miss the list of parts on the Place Holds screen, leading to many
title-level holds on records where only one or two libraries may have
'unparted' copies.

A new option is available to change this display so that a part is selected
via radio buttons instead of the traditional dropdown menu. This display
increases the visibility of parts on the Place Holds screen and also
forces users to make an explicit choice.

To enable the alternate display, set the enable.radio.parts option to 'true'
in config.tt2.

New config.tt2 setting
++++++++++++++++++++++
enable.radio.parts


Web staff client patron editor
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The web staff interface now includes a patron editor/registration form
that is written using AngularJS, leading to faster and more responsive
patron editing.  This feature is currently available in preview mode, but
supports the following actions:

  * adding and editing base patron records and addresses
  * setting statistical categories
  * editing secondary groups
  * cloning patron records
  * duplicate detection
  * surveys




==== Non-active status copy transit message ====

After copy checkin, if the copy is in transit, display a special
message in the transit alert dialog and in the printed transit receipt
(optionally, via macro) if the copy is in (or, rather, will be once it
arrives at its destination) a non-active copy status.

===== Upgrade notes =====

 * To add the new message to the transit slip, add the
   'transit_copy_status_msg' MACRO.
 * To remove the new message from the alert dialog, remove the 
   'staff.circ.utils.transit.copy_status_message' string property
   from 'Open-ILS/xul/staff_client/server/locale/LOCALE/circ.properties'
 * For a list of non-active copy statuses, see in the staff client
   under Admin -> Server Administration -> Copy Statuses.





Selectively disallow opt-in based on patron's home library
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
A new library setting has been added which enables a library to prevent their
patrons from being opted in at other libraries.

For example, consider the following org unit hierarchy:

       Org Units          Depth

          CONS              0
           |
      +-----+-----+
      |           |
     SYS1        SYS2       1
      |           |
   +--+--+     +--+--+
   |     |     |     |
  BR1   BR2   BR3   BR4     2

Suppose that SYS1 wishes to prevent its patrons from being opted in at SYS2.
To accomplish this, it sets the value of the "Restrict patron opt-in to home
library and related orgs at specified depth" setting to 1, meaning that patrons
at SYS1 libraries at or below that depth in the org tree cannot be opted in by
libraries outside that part of the org tree.  Thus, BR1 patrons can be opted in
at BR2, but not at BR3 or BR4.

(This setting is distinct from the "Patron Opt-In Boundary" setting, which
merely determines the depth at which Evergreen prompts for the patron to opt
in.)

New library setting
+++++++++++++++++++
  * Restrict patron opt-in to home library and related orgs at specified depth (`org.restrict_opt_to_depth`)




Standing penalty ignore proximity
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Standing penalties now have an `ignore_proximity` field that takes an
integer value.  When set, the value of this field represents the
proximity from the user's home organizational unit where this penalty
will be ignored for purposes of circulation and holds.  Typical values
for this field would be 0, 1, or 2 when using a standard hierarchy of
Consortium -> System -> Branch -> Sublibrary/Bookmobile.  A value of 1
would cause the penalty to be ignored at the user's home organization
unit, its parent and/or immediate child.  A value of 2 should cause
it to be ignored at the above as well as all sibling organizational
units to the user's home.  In all cases, a value of zero causes the
penalty to be ignored at the user's home and to apply at all other
organizational units.  If the value of this field is left unset (or
set to a negative value), the penalty will still take effect
everywhere using the normal organizational unit and depth values.  If
you use a custom hierarchy, you will need to figure out any values
greater than 0 on your own.

The `ignore_proximity` does not affect where penalties are applied. It
is used when determining whether or not a penalty blocks an activity
at the current organizational unit or the organizational unit that
owns the copy involved in the current transaction.  For instance, if
you set the `ignore_proximity` to 0 on patron exceeds overdue fines,
then the patron will still be able to place holds on and checkout
copies owned by their home organizational unit at their home
organizational unit.  They will not, however, be able to receive
copies from other organizational units, nor use other organizational
units as a patron.



Patron checkout history stored in a dedicated table
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Patron checkout history is now stored in separate, dedicated database 
table instead of being derived from the main circulation data.  This
allows us to age/anonymize circulations more aggressively, since they 
no longer need to stick around in cases where they represent a patron's
opt-in checkout history.

This has a number of patron privacy implications.

 * Minimal metadata is stored in the new patron checkout history table, 
   so once the corresponding circulation is aged, the full set of 
   circulation metadata is no longer linked to a patron's reading history.
   ** It is limited to checkout date, due date, checkin date, and copy data.
 * Staff can no longer report on a patron's reading history.  
   ** While it is possible to build aggregate reports on reading history 
      data, it is not possible to report on which user an entry in the
      history table belongs to.  (The 'usr' column is hidden from the 
      reporter).
 * Staff can no longer retrieve a patron's reading history via API.  Only
   the user that owns the history data can access it.

Upgrade notes
+++++++++++++

Administrators should verify the CSV export of checkout history works after
deploying this change.  If local changes were made to the CSV template,
the template will not be updated as part of this deployment.  The stock
template was modified to handle gracefully NULL values for checkin_time.

For example:

[source,diff]
------------------------------------------------------------------------
-    Returned: [% date.format(helpers.format_date(circ.checkin_time), '%Y-%m-%d') %]
+    Returned: [%
+        date.format(
+            helpers.format_date(circ.checkin_time), '%Y-%m-%d')
+            IF circ.checkin_time;
+    %]
------------------------------------------------------------------------



Client
~~~~~~



Holds count column picker option
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
A new column picker option showing the number of holds for a given item will
now be available in various interfaces displaying item information, including
the patron's Items Out tab and the Item Status, Check Out, Check In, Renew
Item and Record In-House Use screens.

Note: Because the holds count is generated from the hold_copy_map, newly-added
items and items in a non-holdable status will not display accurate hold counts
until 24 hours after they have been added to the system or moved to a holdable
copy status.


Distinct images for pop-ups and slips
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The client now supports using distinct images for hold, transit, and booking
reservation popup windows and slips. In addition, three new images have been
provided, replacing the turtle that previously displayed. The turtle file
is still available in the images directory for those sites that still wish
to use it.


Development
~~~~~~~~~~~



Removal of unused methods
^^^^^^^^^^^^^^^^^^^^^^^^^
The following public methods, which were both broken and not in use,
are removed:

 * `open-ils.actor.org_unit.closed_date.create`
 * `open-ils.actor.org_unit.closed_date.delete`





Public catalog
~~~~~~~~~~~~~~

Editable borrowing history
^^^^^^^^^^^^^^^^^^^^^^^^^^
Patrons can now delete titles that they do not wish to appear in their
Check Out History.

 * In "My Account", click on the "Items Checked Out" tab, then
   the "Check Out History" sub-tab.
 * Check off the items to conceal.
 * Click the Go button next to the "Delete Selected Titles" drop-down box.
 * Click OK in the pop-up to confirm the deletion.  Note that deletions
   cannot be undone.

Deleted titles will also not appear in the downloaded CSV file.

Patron history disable warning
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

When disabling checkout and/or holds history in the public catalog's
Search and History Preferences tab, patrons will be warned that the
operation is irreversible when history data exists that will be
deleted as part of the update.



Include parts label when sorting copies on the record details page
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The list of copies on the catalog's record details page now includes
the part label in the default sort order.

Specifically, copies are now sorted by (in order), org unit, then
call number, then part label sortkey, then copy number, and
finally barcode.

Previously, the hierarchy was org unit, then call number,
then copy number, and finally barcode



Quick option to change search scope to all libraries
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
A common usage of the catalog is to do a search in a restricted scope,
like a local library. When the results are lacking, the search is repeated in a
consortium-wide scope.  This feature provides an optional button and checkbox
to alter the depth of the search to a defined level.

This feature is enabled by default and can be configured in the Depth Button/
Checkbox section of config.tt2.

New config.tt2 settings
+++++++++++++++++++++++
  * ctx.depth_sel_checkbox
  * ctx.depth_sel_button
  * ctx.depth_sel_depth
  * ctx.sel_button_label
  * ctx.depth_sel_button_class
  * ctx.depth_sel_checkbox_label
  * ctx.depth_sel_tooltip
  * ctx.depth_sel_resultshint

Limiter to exclude electronic resources
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
A limiter to exclude electronic resources from search results is now available
on the advanced search screen and from the search results page. This limiter
will exclude any search results with an item form of o or s. This limiter
will be applied on top of any other format limiters used in the search.

The checkboxes are disabled by default. To display them in both places, set
the 'ctx.exclude_electronic_checkbox' setting in config.tt2 to 1.

New config.tt2 setting
++++++++++++++++++++++
ctx.exclude_electronic_checkbox


Expand unAPI API
^^^^^^^^^^^^^^^^
Evergreen's unAPI support now includes access to many more
record types. For example, the following URL would fetch
bib 267 in MODS32 along with holdings, volume, copy,
and record attribute information:

https://example.org/opac/extras/unapi?id=tag::U2@bre/267{holdings_xml,acn,acp,mra}&format=mods32

To access the new unAPI features, the unAPI ID should have the
following form:

  * +tag::U2@+
  * followed by class name, which may be
    * +bre+ (bibs)
    * +biblio_record_entry_feed+ (multiple bibs)
    * +acl+ (copy locations)
    * +acn+ (volumes)
    * +acnp+ (call number prefixes)
    * +acns+ (call number suffixes)
    * +acp+ (copies)
    * +acpn+ (copy notes)
    * +aou+ (org units)
    * +ascecm+ (copy stat cat entries)
    * +auri+ (located URIs)
    * +bmp+ (monographic parts)
    * +cbs+ (bib sources)
    * +ccs+ (copy statuses)
    * +circ+ (loan checkout and due dates)
    * +holdings_xml+ (holdings)
    * +mmr+ (metarecords)
    * +mmr_holdings_xml+ (metarecords with holdings)
    * +mmr_mra+ (metarecords with record attributes)
    * +mra+ (record attributes)
    * +sbsum+ (serial basic summaries)
    * +sdist+ (serial distributions)
    * +siss+ (serial issues)
    * +sisum+ (serial index summaries)
    * +sitem+ (serial items)
    * +sssum+ (serial supplement summaries)
    * +sstr+ (serial streams)
    * +ssub+ (serial subscriptions)
    * +sunit+ (serial units)
  * followed by +/+
  * followed by a record identifier (or in the case of
    the +biblio_record_entry_feed+ class, multiple IDs separated
    by commas)
  * followed, optionally, by limit and offset in square brackets
  * followed, optionally, by a comma-separated list of "includes"
    enclosed in curly brackets.  The list of includes is
    the same as the list of classes with the following addition:
    * +bre.extern+ (information from the non-MARC parts of a bib
      record)
   * followed, optionally, by +/+ and org unit; "-" signifies
     the top of the org unit tree
   * followed, optionally, by +/+ and org unit depth
   * followed, optionally, by +/+ and a path. If the path
     is +barcode+ and the class is +acp+, the record ID is taken
     to be a copy barcode rather than a copy ID; for example, in
     +tag::U2@acp/ACQ140{acn,bre,mra}/-/0/barcode+, +ACQ140+ is
     meant to be a copy barcode.
   * followed, optionally, by +&format=+ and the format in which the record
     should be retrieved. If this part is omitted, the list of available 
     formats will be retrieved. 




New form/genre search and facet index
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The stock indexing definitions now include a search and facet index on the
form/genre field (tag 655). This allows genre links in the public catalog
record display to retrieve works in the same genre. The public catalog genre
links will no longer display content from the 659 MARC fields. 

The genre facet will also display by default in the public catalog.  A partial
reingest during upgrade is required to use this index.




Limit number of facets retrieved during search
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Catalog search now limits the number of facets retrieved
per defined facet field. Setting a limit is useful so that
`open-ils.cstore backends don't end up needlessly consuming
memory when fetching facets for a large result set; if a broad
search retrieves over 10,000 author facets (say), even the most
persistant user is not going to actually look at all of them. Fetching
fewer facets can also slightly speed up generation of search results.

The limit is controlled by a new global flag, `search.max_facets_per_field`,
whose label is "Search: maximum number of facet values to retrieve for
each facet field".  The default limit value is 1,000, but lower values
(e.g., 100) are perhaps even better for most catalogs.

Significant bug fixes
~~~~~~~~~~~~~~~~~~~~~

Add acquisitions cancel reason 85 for Baker & Taylor EDI
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Baker & Taylor send backs a quantity status code of 85
when a line item is canceled when using EDI.  That code
is now included in the system so those cancelations get 
properly registered. 

Self-check printing
^^^^^^^^^^^^^^^^^^^
Corrections were made to the self-check holds and fines printing
functionality to so that the proper transactions can be printed.
The change requires that the Self-Checkout Fines Receipt and
Self-Checkout Holds Receipt action/trigger templates be updated
in order to work properly. 

Miscellaneous
~~~~~~~~~~~~~

* Copy records in the "Concerto" test data set now have prices.
* The web-based self-check interface now displays the patron
  information area only when a patron is logged in.
* The progress page displayed by MARC Batch Edit is improved.
* The public catalog now better handles the situation where
  a patron who does not have an email address registered in
  Evergreen tries to email a record.

Evergreen 2.10.0 bugs closed
----------------------------

* https://bugs.launchpad.net/bugs/838525[Bug 838525: Timestamp on dob can make date appear off by a day]
* https://bugs.launchpad.net/bugs/963341[Bug 963341: Allow the JSPac and TPac to display both MFHD records and Serial Control/Alternate records,]
* https://bugs.launchpad.net/bugs/1067823[Bug 1067823: tpac: genre links in record details page launch subject search]
* https://bugs.launchpad.net/bugs/1164174[Bug 1164174: Add support for author/title series added entry]
* https://bugs.launchpad.net/bugs/1175711[Bug 1175711: can't renew items on OPAC due to items being on Booking resource list]
* https://bugs.launchpad.net/bugs/1197636[Bug 1197636: Email record detail does not check for email]
* https://bugs.launchpad.net/bugs/1202742[Bug 1202742: Support alert/print message for transiting, non-active copies]
* https://bugs.launchpad.net/bugs/1206936[Bug 1206936: money.transaction_billing_summary view displays incorrect billing_type and billing_note for the actual last transaction]
* https://bugs.launchpad.net/bugs/1208613[Bug 1208613: Expand All button does not work past the 1st page when viewing a large picklist.]
* https://bugs.launchpad.net/bugs/1229757[Bug 1229757: support distinct pop-up images for holds, transits, and hold transits]
* https://bugs.launchpad.net/bugs/1240657[Bug 1240657: OpenILS::Application::Actor should check_perms for CREATE_CLOSED_DATE, not CREATE_CLOSEING]
* https://bugs.launchpad.net/bugs/1251415[Bug 1251415: Use the juvenile setting when auto-removing juvenile flag.]
* https://bugs.launchpad.net/bugs/1275118[Bug 1275118: Holds history displays canceled holds as active]
* https://bugs.launchpad.net/bugs/1312699[Bug 1312699: Editable Checkout History]
* https://bugs.launchpad.net/bugs/1319998[Bug 1319998: money.materialized_summary_billing_del() ADDS to balance_owed]
* https://bugs.launchpad.net/bugs/1333254[Bug 1333254: EDI invoices automatically expend debits]
* https://bugs.launchpad.net/bugs/1367926[Bug 1367926: Add support for (nearly) direct access to the full unapi backend]
* https://bugs.launchpad.net/bugs/1370694[Bug 1370694: Selfcheck "Print List" for Holds view does not work]
* https://bugs.launchpad.net/bugs/1371647[Bug 1371647: config.marc21_ff_pos_map needs an audit]
* https://bugs.launchpad.net/bugs/1375043[Bug 1375043: Support for in-A/T telephony configuration]
* https://bugs.launchpad.net/bugs/1380709[Bug 1380709: invoice print amounts-per-fund uses wrong value when item price varies]
* https://bugs.launchpad.net/bugs/1384740[Bug 1384740: Add authority records support to marc stream importer (Connexion)]
* https://bugs.launchpad.net/bugs/1391282[Bug 1391282: Default Action Trigger Templates  Updates]
* https://bugs.launchpad.net/bugs/1392396[Bug 1392396: Wishlist: Action Trigger for new user creation]
* https://bugs.launchpad.net/bugs/1402018[Bug 1402018: Acq Copy location UI scoped to registered workstation]
* https://bugs.launchpad.net/bugs/1402770[Bug 1402770: Add column picker option for number of holds in item context]
* https://bugs.launchpad.net/bugs/1406786[Bug 1406786: Merge parts functionality fails to preserve copy_part mapping]
* https://bugs.launchpad.net/bugs/1422802[Bug 1422802: Parts need to be more visible on the place holds screen]
* https://bugs.launchpad.net/bugs/1422932[Bug 1422932: TPAC: Holds history pager typo]
* https://bugs.launchpad.net/bugs/1429268[Bug 1429268: Credit card payment fails on NULL mailing address]
* https://bugs.launchpad.net/bugs/1452950[Bug 1452950: Angularize the patron editor]
* https://bugs.launchpad.net/bugs/1454871[Bug 1454871: KPAC Hold Notifications - SMS]
* https://bugs.launchpad.net/bugs/1454884[Bug 1454884: Hold placed on grouped metabib result displays wrong title]
* https://bugs.launchpad.net/bugs/1464765[Bug 1464765: evergreen.lpad_number_substrings doesn't handle internal substring matches properly]
* https://bugs.launchpad.net/bugs/1466173[Bug 1466173: Wishlist: Selfcheck Hide UI Elements until patron auth]
* https://bugs.launchpad.net/bugs/1466990[Bug 1466990: Detailed search results shows parts for items that dont have parts]
* https://bugs.launchpad.net/bugs/1468422[Bug 1468422: Improve Password Management and Authentication]
* https://bugs.launchpad.net/bugs/1470957[Bug 1470957: Items are incorrectly sorting when using the Sort By Publication date feature]
* https://bugs.launchpad.net/bugs/1474051[Bug 1474051: Avoid storing partial credit card payment info]
* https://bugs.launchpad.net/bugs/1474455[Bug 1474455: Fixed navigation menu for the web client]
* https://bugs.launchpad.net/bugs/1474566[Bug 1474566: Credit card API amount paid rounding error.]
* https://bugs.launchpad.net/bugs/1482336[Bug 1482336: create_release_notes.sh include .adoc files]
* https://bugs.launchpad.net/bugs/1483500[Bug 1483500: evergreen.lowercase needs test]
* https://bugs.launchpad.net/bugs/1483506[Bug 1483506: public.first_agg needs test]
* https://bugs.launchpad.net/bugs/1483508[Bug 1483508: public.text_concat needs tests]
* https://bugs.launchpad.net/bugs/1486151[Bug 1486151: Modifying password regular expression in Library Settings Editor can cause helper on the Update Password page to be invalid]
* https://bugs.launchpad.net/bugs/1486294[Bug 1486294: Add acquisitions data to the Concerto dataset]
* https://bugs.launchpad.net/bugs/1486592[Bug 1486592: Copies in concerto data should have prices]
* https://bugs.launchpad.net/bugs/1487527[Bug 1487527: TPAC: Provide shortcut for changing search scope]
* https://bugs.launchpad.net/bugs/1491571[Bug 1491571: When circ.password_reset_request_requires_matching_email setting is true, email case must match in addition to content]
* https://bugs.launchpad.net/bugs/1492793[Bug 1492793: Support for PostgreSQL Application Name Connection Options]
* https://bugs.launchpad.net/bugs/1496837[Bug 1496837: xml-related test is invalid]
* https://bugs.launchpad.net/bugs/1499123[Bug 1499123: Ability to Ignore Certain Standing Penalties Within a Proximity to the Patron's Home Library]
* https://bugs.launchpad.net/bugs/1501471[Bug 1501471: fetching OU settings in batch can be made faster]
* https://bugs.launchpad.net/bugs/1501516[Bug 1501516: Indicate whether a lineitem is fully paid/invoiced in PO list]
* https://bugs.launchpad.net/bugs/1502152[Bug 1502152: Trap Warnings in marc_export for better error reporting]
* https://bugs.launchpad.net/bugs/1504615[Bug 1504615: OPAC: Suggest record detail more useful when sorted by parts]
* https://bugs.launchpad.net/bugs/1505286[Bug 1505286: set limit on facets retrieved during search]
* https://bugs.launchpad.net/bugs/1506534[Bug 1506534: valid_z3950_attr_type check constraint can cause errors during pg_restore]
* https://bugs.launchpad.net/bugs/1507845[Bug 1507845: Correct search engine optimization -- allow robots to crawl, but not index, results]
* https://bugs.launchpad.net/bugs/1508477[Bug 1508477: browser client: hotkeys don't work if an input element has focus]
* https://bugs.launchpad.net/bugs/1509479[Bug 1509479: infinite loop when parsing modified unclosed phrase search query]
* https://bugs.launchpad.net/bugs/1510641[Bug 1510641: Cannot print PO without lineitems]
* https://bugs.launchpad.net/bugs/1513554[Bug 1513554: It is possible to delete acq.cancel_reasons that are used by the system]
* https://bugs.launchpad.net/bugs/1516022[Bug 1516022: reporting source for copy/hold ratio at pickup library and descendants]
* https://bugs.launchpad.net/bugs/1516104[Bug 1516104: Wishlist: Additional Acq Toolbar Options]
* https://bugs.launchpad.net/bugs/1516707[Bug 1516707: Relevance ranking deteriorates when phrases are added to search]
* https://bugs.launchpad.net/bugs/1516757[Bug 1516757: SIP Date of Birth off by one day / parsed as UTC]
* https://bugs.launchpad.net/bugs/1516867[Bug 1516867: HTML reports should be dynamically sortable]
* https://bugs.launchpad.net/bugs/1519055[Bug 1519055: Simple checkbox to exclude electronic resources from search results]
* https://bugs.launchpad.net/bugs/1519465[Bug 1519465: Purchase Orders with spaces in the name cause problems with EDI processing]
* https://bugs.launchpad.net/bugs/1519911[Bug 1519911: Typo in seed data for hold cancel notification action triggers]
* https://bugs.launchpad.net/bugs/1519925[Bug 1519925: Add UPC search to MARC Federated Search -  Native Evergreen option]
* https://bugs.launchpad.net/bugs/1522538[Bug 1522538: Unexpected Journal Title Search Results when using second or third Search Input in Advanced Search]
* https://bugs.launchpad.net/bugs/1522604[Bug 1522604: webclient: Red font to highlight Lost items in patron summary extends to Non-Cataloged label]
* https://bugs.launchpad.net/bugs/1526543[Bug 1526543: Cannot disable password reset in TPAC]
* https://bugs.launchpad.net/bugs/1526546[Bug 1526546: Parts do not sort correctly on Holdings Maintenance screen]
* https://bugs.launchpad.net/bugs/1526547[Bug 1526547: Overdues adjusted via lost (or long overdue) processing get an incorrect note ("VOIDED FOR BACKDATE")]
* https://bugs.launchpad.net/bugs/1527342[Bug 1527342: Maintain patron reading history in a dedicated table.]
* https://bugs.launchpad.net/bugs/1528596[Bug 1528596: Another untrapped marc_export warning]
* https://bugs.launchpad.net/bugs/1531976[Bug 1531976: Triggered Events UI not loading after visiting Message Center UI and vice-versa]
* https://bugs.launchpad.net/bugs/1533329[Bug 1533329: Selectively disallow opt-in based on patron's home library]
* https://bugs.launchpad.net/bugs/1533331[Bug 1533331: evergreen.protect_reserved_rows_from_delete() trigger function returning error]
* https://bugs.launchpad.net/bugs/1538697[Bug 1538697: webclient: copy record does not save when changing stat cat entries]
* https://bugs.launchpad.net/bugs/1539088[Bug 1539088: marc export should only print "Waiting for Input" when running interactively]
* https://bugs.launchpad.net/bugs/1539776[Bug 1539776: webclient: Wrapping improvements for vol / copy editor]
* https://bugs.launchpad.net/bugs/1544723[Bug 1544723: Add webstaff to update_pofiles]
* https://bugs.launchpad.net/bugs/1545178[Bug 1545178: two dead methods for dealing with closed dates should be removed]
* https://bugs.launchpad.net/bugs/1545226[Bug 1545226: MARC Batch Editor summary table html problems]
* https://bugs.launchpad.net/bugs/1546125[Bug 1546125: Print Templates -&gt; Save Locally not working]
* https://bugs.launchpad.net/bugs/1548143[Bug 1548143: Add Parts Support to Vandelay Item Import]
* https://bugs.launchpad.net/bugs/1548147[Bug 1548147: Quick Export Feature for Vandelay Queues]
* https://bugs.launchpad.net/bugs/1548869[Bug 1548869: KPAC - hold results screen not showing title]
* https://bugs.launchpad.net/bugs/1549393[Bug 1549393: AddedContent: Invalid ISBN's are sent to Content Cafe as blank string]
* https://bugs.launchpad.net/bugs/1550495[Bug 1550495: EDI Default Cancel Reason for Baker &amp; Taylor not included: Code 85]
* https://bugs.launchpad.net/bugs/1551447[Bug 1551447: Selfcheck: Printing Fines Prints All Open Transactions]
* https://bugs.launchpad.net/bugs/1552060[Bug 1552060: Persistent login no longer working in OPAC]
* https://bugs.launchpad.net/bugs/1553813[Bug 1553813: Browser patron editor field validation and permission checks]
* https://bugs.launchpad.net/bugs/1556339[Bug 1556339: API attempts to use nonexistent user_visible_circs method]
* https://bugs.launchpad.net/bugs/1557525[Bug 1557525: Release Notes Omission]
* https://bugs.launchpad.net/bugs/1557621[Bug 1557621: Verify password API fails on barcode; returns success on deleted users]
* https://bugs.launchpad.net/bugs/1557683[Bug 1557683: Missing semicolon in 0953.function.unapi-bre.external-includes.sql]

Evergreen 2.10.0 Acknowledgments
--------------------------------
The Evergreen project would like to thank the following 
individuals who contributed code, documentations patches and
tests to this release of Evergreen:

 * Thomas Berezansky
 * Adam Bowling
 * Jason Boyer
 * Kate Butler
 * Steven Callender
 * Steven Chan
 * Galen Charlton
 * Mark Cooper
 * Jeff Davis
 * Martha Driscoll
 * Bill Erickson
 * Jason Etheridge
 * Blake Henderson
 * Pasi Kallinen
 * Jake Litrell
 * Kathy Lussier
 * Terran McCanna
 * Christine Morgan
 * Dan Pearl
 * Michael Peters
 * Jennifer Pringle
 * Mike Rylander
 * Dan Scott
 * Chris Sharp
 * Ben Shum
 * Remington Steed
 * Jason Stephenson
 * Josh Stompro
 * Yamil Suarez
 * Dan Wells
 * Bob Wicksall

We would also like to thank the following individuals who
tested and signed off on patches:

 * Christine Burns
 * Andrea Neiman
 * Erica Rohlfs

We would also like to thank the following organizations who
commissioned developments in this release of Evergreen:

 * Linn Libraries Consortium
 * King County Library System
 * MassLNC

We also thank the following organizations whose employees contributed
to this release:

 * BC Libraries Coooperative
 * Berklee College of Music
 * Bibliomation
 * Calvin College
 * CW/MARS
 * Emerald Data
 * Equinox Software
 * Georgia Public Library Service
 * Indiana State Library
 * Kent County Public Library
 * King County Library System
 * Lake Agassiz Regional Library
 * Laurentian University
 * MassLNC
 * MOBIUS
 * MVLC
 * NOBLE
 * Rodgers Memorial Library
 * Sigio

We regret any omissions.  If a contributor has been inadvertantly
missed, please open a bug at http://bugs.launchpad.net/evergreen/
with a correction.