]> git.evergreen-ils.org Git - Evergreen.git/blob - docs/RELEASE_NOTES_2_10.adoc
release notes for 2.10.3
[Evergreen.git] / docs / RELEASE_NOTES_2_10.adoc
1 Evergreen 2.10.1 Release Notes
2 ==============================
3 :toc:
4 :numbered:
5
6 Evergreen 2.10.3
7 ----------------
8 This release contains bugfixes improving on Evergreen 2.10.2:
9
10 * Fixes a critical bug where a newly-registered patron record could
11   not be used to log in to Evergreen using the password supplied during
12   registration. Under some circumstances, the same bug could also
13   prevent patron records that were modified via the patron registration
14   form from being used to log in.
15 * Emails sent using the Action Trigger SendEmail reactor now always
16   MIME-encode the From, To, Subject, Bcc, Cc, Reply-To, and Sender
17   headers. As a consequence, non-ASCII character in those fields are
18   more likely to be displayed correctly in email clients.
19
20 Acknowledgements
21 ~~~~~~~~~~~~~~
22 We would like to thank the following individuals who contributed
23 code, testing, and documentation patches to the 2.10.3 point release
24 of Evergreen:
25
26 * Galen Charlton
27 * Pasi Kallinen
28 * Kathy Lussier
29 * Mike Rylander
30 * Dan Scott
31 * Remington Steed
32 * Dan Wells
33
34 Evergreen 2.10.2
35 ----------------
36 This release contains several bugfixes improving on Evergreen 2.10.1
37
38 * Fixes a bug where phrase searching in the catalog failed when the phrase
39 started or ended with punctuation.
40 * Fixes a bug where changing the sort order in the public catalog to
41 "relevance" could fail.
42 * Fixes a bug that prevented users from recreating a monograph part that
43 had previously been deleted.
44 * Fixes a bug where serials checkouts failed for users that track circulation
45 history.
46 * Fixes a bug that prevented the Library Settings Editor from
47 consistently retrieving the values of library settings.
48 * Fixes several issues with the new web-based Angular patron editor, including:
49 ** Allows barcodes to be used as user name even if it doesn't match the user
50 name regex.
51 ** Presents an alert when trying to save a form with invalid values.
52 ** Allows staff to delete all patron addresses if the corresponding Library 
53 Setting allows them to do so.
54 ** Honors Library Settings to require the county and state fields at patron
55 registration time.
56 ** Resizes checkboxes that had become huge in some browsers.
57 ** Displays the New Address button at all times.
58 ** Prevents staff from editing linked addresses for cloned users.
59 ** Fixes a bug where out-of-scope stat cats would be incorrectly bundled in the 
60 patron save operation, resulting in a server-side error on save.
61 * Silences unnecessary warnings emitted for libraries using extending grace
62 periods.
63 * Removes support for Debian Squeeze now that its long-term support period
64 has ended.
65 * Fixes a bug that had prevented the dependency libpcre3 from being
66 intalled on Debian Jessie.
67 * Fixes some QA tests that had been failing.
68 * Renumbers the Perl unit test files.
69
70 Acknowledgements
71 ~~~~~~~~~~~~~~~~
72 We would like to thank the following individuals who contributed
73 code and documentation patches to the 2.10.2 point release of Evergreen:
74
75 * Jason Boyer
76 * Steve Callender
77 * Galen Charlton
78 * Bill Erickson
79 * Anna Goben
80 * Angela Kilsdonk
81 * Debbie Luchenbill
82 * Jennifer Pringle
83 * Mike Rylander
84 * Jane Sandberg
85 * Jason Stephenson
86 * Yamil Suarez
87
88 We also thank the following organizations whose employees contributed
89 patches:
90
91 * BC Libraries Cooperative
92 * Berklee College of Music
93 * Equinox Software, Inc.
94 * Evergreen Indiana
95 * King County Library System
96 * Linn Libraries Consortium
97 * Merrimack Valley Library Consortium
98 * MOBIUS
99
100
101 Evergreen 2.10.1
102 ----------------
103
104 Evergreen 2.10.1 is a bugfix release that fixes one significant
105 bug in 2.10.0:
106
107 * https://bugs.launchpad.net/bugs/1560174[Bug 1560174: Importing MARC records can fail in database upgraded to 2.10.0]
108
109 This bug affected only databases that were upgraded to 2.10.0 from a
110 previous version; fresh installations of 2.10.0 are not affected.
111
112 Evergreen users who prefer not to perform a full upgrade from 2.10.0
113 to 2.10.1 can fix the bug by applying the database update script
114 `2.10.0-2.10.1-upgrade-db.sql` (found in the source directory
115 `Open-ILS/src/sql/Pg/version-upgrade`).
116
117 Evergreen 2.10.1 Acknowledgments
118 --------------------------------
119 The Evergreen project would like to thank the following 
120 individuals who contributed code and testing to this release
121 of Evergreen:
122
123  * Galen Charlton
124  * Dan Wells
125
126 Evergreen 2.10.0 Upgrade notes
127 ------------------------------
128
129 * Support for PostgreSQL 9.1 is deprecated as of
130   the release of Evergreen 2.10.0. Users are recommended
131   to install Evergreen on PostgreSQL 9.2 or later.
132 * In the next major release following 2.10.0, Evergreen will no
133   longer officially support PostgreSQL 9.1.
134 * Please read the release notes thoroughly for information
135   about changes that Evergreen administrators may need
136   to make manually when upgrading to 2.10.0.  In particular,
137   the enhancement to user password storage introduces a
138   new service, `open-ils.auth_internal`, and requires
139   changes to `opensrf.xml` in order for users to be able
140   log in.
141
142 Evergreen 2.10.0 New Features
143 -----------------------------
144
145
146
147 Acquisitions
148 ~~~~~~~~~~~~
149
150
151
152 PO Line item "paid" label
153 ^^^^^^^^^^^^^^^^^^^^^^^^^
154 A new "paid" label appears along the bottom of each line item in the PO 
155 display when every non-canceled copy on the line item has been invoiced.
156
157
158
159
160 Disencumber funds on invoice close
161 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
162
163 Fund debits linked to an invoice are now marked as paid (encumbrance=false)
164 when the invoice is marked as closed/complete instead of at invoice create
165 time.  This is particularly useful for EDI invoices which may be 
166 created well in advance of receipt and payment.
167
168
169
170
171
172 PO actions selector always visible
173 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
174
175 The actions selector is now always visible in the purchase order view,
176 even when no line items exist.  With this, users can print PO's that
177 only contain direct charges.
178
179 The custom "Add Brief Record" button is no longer present, since the
180 same action is accessible via the now-visible selector.
181
182
183
184
185 Administration
186 ~~~~~~~~~~~~~~
187
188
189
190 Set application name when connecting to database
191 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
192 The services that connect directly to the PostgreSQL database
193 (and Clark Kent) now look for an application_name parameter
194 as part of the database login credentials specified in
195 `opensrf.xml`.  If present, the value is used to set the
196 application name Pg connection value; this in turn shows up in
197 the Postgres `pg_stat_activity` table and Pg's logs.
198
199
200
201
202 Credit card receipts and privacy
203 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
204
205 To improve privacy and security, Evergreen now stores less data 
206 about credit card transactions.  The following fields are no 
207 longer stored:
208
209  * `cc_type`
210  * `cc_first_name`
211  * `cc_last_name`
212  * `expire_month`
213  * `expire_year`
214
215 NOTE: All existing data within these fields will be deleted during
216 the upgrade.  Reports using this data will no longer function.
217
218 Additionally, a tool has been added to Evergreen for clearing the 
219 last 4 digits of the credit payment from the database after payments
220 reach a certain age.
221
222 Print/email templates
223 +++++++++++++++++++++
224
225 The stock print and email payment templates have been modified to no 
226 longer use these fields, but only when the existing templates matched
227 the stock templates.  If local changes have been applied, it will
228 be necessary to modify local templates to avoid referencing these
229 fields which no longer exist.
230
231 Any templates whose hook is "money.format.payment_receipt.print" or 
232 "money.format.payment_receipt.email" may need modification.  In stock
233 Evergreen, these are templates:
234
235 1. "money.payment_receipt.email" (stock id 29)
236 2. "money.payment_receipt.print" (stock id 30)
237
238 Example diff:
239
240 [source,diff]
241 ---------------------------------------------
242 -  [% CASE "credit_card_payment" %]credit card (
243 -      [%- SET cc_chunks = mp.credit_card_payment.cc_number.replace(' ','').chunk(4); -%]
244 -      [%- cc_chunks.slice(0, -1+cc_chunks.max).join.replace('\S','X') -%] 
245 -      [% cc_chunks.last -%]
246 -      exp [% mp.credit_card_payment.expire_month %]/[% mp.credit_card_payment.expire_year -%]
247 -  )
248 +  [% CASE "credit_card_payment" %]credit card
249 +  [%- IF mp.credit_card_payment.cc_number %] ([% mp.credit_card_payment.cc_number %])[% END %]
250 ---------------------------------------------
251
252 Clearing the last 4 of the CC number
253 ++++++++++++++++++++++++++++++++++++
254
255 To activate automatic CC number clearing, add the following to opensrf's
256 crontab.  Change timing to suit.
257
258 [source,sh]
259 ---------------------------------------------
260 5  4  * * *   . ~/.bashrc && $EG_BIN_DIR/clear_cc_number.srfsh
261 ---------------------------------------------
262
263 The default retention age is 1 year, but this can be changed by modifying
264 `clear_cc_number.srfsh` (typically found in `/openils/bin/`).  Replace "1 year"
265 with the age of your choice.
266
267
268
269
270
271
272 Configure multiple telephony servers via action/trigger
273 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
274 If you are using the AstCall action/trigger reactor
275 to generate callfiles to send to an Asterisk server, until
276 now the only place to specify the relevant configuration
277 was in `opensrf.xml`. However, this restricted an Evergreen
278 consortium to using only one Asterisk instance.
279
280 Now, the telephony parameters can also be specified as 
281 A/T event parameters, allowing per-library configuration.
282
283 .Telephony parameters
284 |===
285 | Name | Example value
286
287 | enabled
288 | 0
289
290 | driver
291 | "SIP"
292
293 | channels
294 | ["Zap/1", "Zap/2", "IAX/user:secret@widgets.biz"]
295
296 | host
297 | "localhost"
298
299 | port
300 | "10080"
301
302 | user
303 | "evergreen"
304
305 | pw
306 | "evergreen"
307
308 | callfile_lines
309 | ["MaxRetries: 3", "RetryTime: 60", "WaitTime: 30", "Archive: 1", "Extension: 10"]
310 |===
311
312
313
314
315 Juvenile-to-adult batch script honors library setting
316 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
317
318 The batch `juv_to_adult.srfsh` script that, when set up as a cronjob,
319 is responsible for toggling a patron from juvenile to adult now
320 honors the age value set in the library setting named "Juvenile Age
321 Threshold" (`global.juvenile_age_threshold`).  When no library setting value
322 is present at a given patron's home library, the value passed in to the
323 script will be used as a default.
324
325
326
327
328 New reporting source for hold/copy ratios
329 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
330 A new reporting source is added, "Hold/Copy Ratio per Bib
331 and Pickup Library (and Descendants)", that, for each bib
332 that has a hold request on it or any of its components,
333 calculates the following:
334
335  * active holds at each OU (including the OU's descendants)
336  * holdable copies at each OU (and its descendants)
337  * the ratio of the above two counts
338  * counts and ratio across the entire consortium
339
340 This source differs from the "Hold/Copy Ratio per Bib
341 and Pickup Library" source by including all descendants
342 of the organization unit one is filtering on.
343
344 One use case is allowing a multi-branch system within an
345 Evergreen consortium that doesn't do full resource sharing
346 to readily calculate whether additional copies should be
347 purchased for that system.
348
349
350
351
352 New patron action/trigger notice
353 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
354
355 A new action/trigger event definition ("New User Created Welcome Notice") 
356 has been added that will allow you to send a notice after a new patron has 
357 been created, based on the actor.usr create-date field.
358
359 This notice can be used for various tasks.
360
361   * Sending a welcome email to new patrons to market library services.
362   * Confirm that a new patron email address is correct.
363   * Generate postal notices to send a welcome packet to new patrons.
364
365 Enable this event in the staff client at *Admin* -> *Local Administration* 
366 -> *Notifications / Action Triggers*.
367
368
369
370
371 Improved password management and authentication
372 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
373 Evergreen user passwords are now stored with additional layers of 
374 encryption and may only be accessed directly by the database, not
375 the application layer.
376
377 All API changes are backwards compatible with existing 3rd-party
378 clients.
379
380 Migrating passwords
381 +++++++++++++++++++
382
383 Passwords are migrated for each user automatically the first time a user
384 logs in under the new setup.  However, it is also possible to force
385 password migration for a given user via a database function:
386
387 [source,sql]
388 ------------------------------------------------------------
389 -- actor.migrate_passwd() will only migrate un-migrated 
390 -- accounts, but it's faster to avoid any re-migration attempts.
391 SELECT actor.migrate_passwd(au.id)
392 FROM actor.usr au
393     LEFT JOIN actor.passwd pw ON (pw.usr = au.id)
394 WHERE pw.usr IS NULL; 
395 ------------------------------------------------------------
396
397 Using this, admins could perform manual batch updates to force all
398 users to use the new, more secure passwords, regardless of when or
399 whether a patron logs back into the system.  
400
401 Beware that doing this for all users in a large database will 
402 take some time and should probably be performed in batches.
403
404 Changing Encryption Work Factor
405 +++++++++++++++++++++++++++++++
406
407 Roughly speaking, the 'work factor' determines the amount of time/effort
408 required to crack passwords.  The higher the value, the more secure the
409 password.  Higher values also mean that it takes longer for password
410 verification (e.g. during login) to work.
411
412 At time of release, Evergreen uses a work factor value of 10.  The value
413 is set in the database table/column actor.passwd_type.iter_count (hash
414 iteration count).  When this value is modified, any passwords created or
415 modified after the change will use the new work factor.  Other passwords
416 will continue using the work factor in place when they were
417 created/modified, until they are changed once again.
418
419 Beware that raising the work factor can have a significant impact on
420 login speeds.  A work factor of 10 requires ~0.1 seconds to verify a
421 password.  A work factor of 15 takes almost 2 full seconds!  Also beware
422 that once a password is encoded with a higher work factor, it cannot be
423 lowered again through any automatic means.  The owner of the password
424 would have to log in and modify the password after the work factor is
425 re-lowered.
426
427 Because of this, it's recommended that admins thoroughly test work
428 factor modifications before deploying to production.
429
430 To check encryption timing:
431
432 [source,sql]
433 --------------------------------------------------------------------------
434 -- enable psql timing
435 evergreen=# \timing
436
437 -- encode password "HELLOWORLD" with a work factor of 10.
438 evergreen=# select crypt('HELLOWORLD', gen_salt('bf', 10));
439 (1 row)
440
441 Time: 95.082 ms
442 --------------------------------------------------------------------------
443
444 open-ils.auth_internal
445 ++++++++++++++++++++++
446 To support the new storage mechanism, a new Evergreen service has
447 been added called `open-ils.auth_internal`.  This service runs on
448 the private OpenSRF/XMPP domain and is used to store authenticated 
449 user data in the authentication cache.  
450
451 This is a required service and changes to `opensrf.xml` (typically 
452 `/openils/conf/opensrf.xml`) are needed to run the new service.
453
454 .Modifying opensrf.xml
455 * A new `<open-ils.auth_internal>` app stanza is added to define the 
456   new service
457 * Cache timeout settings are moved from the app stanza for `open-ils.auth`
458   into `open-ils.auth_internal`
459 * `open-ils.auth_internal` is added to the set of running services for the 
460   domain.
461
462 Example diff:
463
464 [source,diff]
465 ---------------------------------------------------------------------
466 diff --git a/Open-ILS/examples/opensrf.xml.example b/Open-ILS/examples/opensrf.xml.example
467 index 3b47481..59f737a 100644
468 --- a/Open-ILS/examples/opensrf.xml.example
469 +++ b/Open-ILS/examples/opensrf.xml.example
470 @@ -424,6 +424,29 @@ vim:et:ts=4:sw=4:
471                  </unix_config>
472                  <app_settings>
473                      <!-- defined app-specific settings here -->
474 +                    <auth_limits>
475 +                        <seed>30</seed> <!-- amount of time a seed request is valid for -->
476 +                        <block_time>90</block_time> <!-- amount of time since last auth or seed request to save failure counts -->
477 +                        <block_count>10</block_count> <!-- number of failures before blocking access -->
478 +                    </auth_limits>
479 +                </app_settings>
480 +            </open-ils.auth>
481 +
482 +            <!-- Internal authentication server -->
483 +            <open-ils.auth_internal>
484 +                <keepalive>5</keepalive>
485 +                <stateless>1</stateless>
486 +                <language>c</language>
487 +                <implementation>oils_auth_internal.so</implementation>
488 +                <unix_config>
489 +                    <max_requests>1000</max_requests>
490 +                    <min_children>1</min_children>
491 +                    <max_children>15</max_children>
492 +                    <min_spare_children>1</min_spare_children>
493 +                    <max_spare_children>5</max_spare_children>
494 +                </unix_config>
495 +                <app_settings>
496 +                    <!-- defined app-specific settings here -->
497                      <default_timeout>
498                          <!-- default login timeouts based on login type -->
499                          <opac>420</opac>
500 @@ -431,13 +454,10 @@ vim:et:ts=4:sw=4:
501                          <temp>300</temp>
502                          <persist>2 weeks</persist>
503                      </default_timeout>
504 -                    <auth_limits>
505 -                        <seed>30</seed> <!-- amount of time a seed request is valid for -->
506 -                        <block_time>90</block_time> <!-- amount of time since last auth or seed request to save failure counts -->
507 -                        <block_count>10</block_count> <!-- number of failures before blocking access -->
508 -                    </auth_limits>
509                  </app_settings>
510 -            </open-ils.auth>
511 +            </open-ils.auth_internal>
512 +
513 +
514  
515              <!-- Authentication proxy server -->
516              <open-ils.auth_proxy>
517 @@ -1177,6 +1197,7 @@ vim:et:ts=4:sw=4:
518                  <appname>open-ils.circ</appname> 
519                  <appname>open-ils.actor</appname> 
520                  <appname>open-ils.auth</appname> 
521 +                <appname>open-ils.auth_internal</appname>
522                  <appname>open-ils.auth_proxy</appname> 
523                  <appname>open-ils.storage</appname>  
524                  <appname>open-ils.justintime</appname>  
525 ---------------------------------------------------------------------
526
527
528
529
530
531
532
533
534 Sortable HTML reports
535 ^^^^^^^^^^^^^^^^^^^^^
536 HTML reports can now be sorted by clicking on the header for a given column.
537 Clicking on the header toggles between sorting the column in ascending and
538 descending order. Note that sorting is available only when there are
539 at most 10,000 rows of output.
540
541
542
543
544 Cataloging
545 ~~~~~~~~~~
546
547
548
549 Additional fixed fields
550 ^^^^^^^^^^^^^^^^^^^^^^^
551 The AccM, Comp, CrTp, EntW, Cont, FMus, LTxt, Orig, Part, Proj, Relf, SpFm,
552 SrTp, Tech, and TrAr fixed fields have been defined and coded value maps added
553 so they can also be used for Advanced Searches or inclusion in Composite Value Maps.
554
555 Note that AccM, Cont, LTxt, Relf, and SpFm are  compositite values based on
556 the values of "helper" fields like AccM(1), AccM(2), and so on. These positional
557 fields can be ignored.
558
559 Coded value maps have also been added for Cont, Ctry, and DtSt, and the Time field
560 has been defined. All of these fields are now available in the Fixed Field Editor
561 when editing the appropriate records.
562
563
564
565
566 Quickly export non-imported records
567 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
568 When inspecting a queue in MARC Batch Import/Export, there is now
569 a link to download to MARC file any records in the queue that were
570 not imported into the catalog.  This allows catalogers to quickly
571 manipulate the records that failed to import using an external
572 tool, then attempt to import them again.
573
574
575
576
577 Link personal name/title series added entries
578 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
579 The authority linker script now supports linking the MARC21
580 field 800 (series added entry - personal name) to authority
581 records.
582
583
584
585
586 MARC stream importer authority records and repairs
587 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
588
589 The MARC stream importer script, commonly used with external 
590 services like OCLC Connexion, is now capable of importing authority
591 records in addition to bib records.  A single running instance of
592 the script can import either type of record, based on the record
593 leader.
594
595 New Options
596 +++++++++++
597
598  * --auth-merge-profile
599  * --auth-queue
600  * --bib-import-no-match
601  * --bib-auto-overlay-exact
602  * --bib-auto-overlay-1match
603  * --bib-auto-overlay-best-match
604  * --auth-import-no-match
605  * --auth-auto-overlay-exact
606  * --auth-auto-overlay-1match
607  * --auth-auto-overlay-best-match
608
609 Deprecated options
610 ++++++++++++++++++
611
612 The following options still work and map to the "bib" equivalent
613 of the option, however a deprecation warning message is generated 
614 when the script is started.
615
616  * --import-no-match
617  * --auto-overlay-exact
618  * --auto-overlay-1match
619  * --auto-overlay-best-match
620
621 No longer supported options
622 +++++++++++++++++++++++++++
623
624 --import-by-queue is no longer supported.  This option serves no
625 particular purpose and is a bad idea when re-using the same queue over
626 and over as most people do, because queue bloat will increase run times.
627
628 --noqueue (AKA "direct import") is no longer supported.  All imports go
629 through Vandelay now.
630
631
632
633
634 Support for monograph parts import in MARC Batch Import/Export
635 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
636 When adding or overlaying copies in MARC Batch Import/Export
637 (Vandelay), monograph part labels can now be assigned during the import
638 process.  This feature is modeled after the existing support for
639 statistical category import.  As such, it:
640
641  * Uses '|' characters to separate labels to allow for multiple part
642    assignment
643  * Adds to (rather than replaces) any existing parts assigned to overlay
644    copies
645
646
647
648
649 Circulation
650 ~~~~~~~~~~~
651
652
653
654 Alternate parts selection display when placing holds
655 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
656 Users often miss the list of parts on the Place Holds screen, leading to many
657 title-level holds on records where only one or two libraries may have
658 'unparted' copies.
659
660 A new option is available to change this display so that a part is selected
661 via radio buttons instead of the traditional dropdown menu. This display
662 increases the visibility of parts on the Place Holds screen and also
663 forces users to make an explicit choice.
664
665 To enable the alternate display, set the enable.radio.parts option to 'true'
666 in config.tt2.
667
668 New config.tt2 setting
669 ++++++++++++++++++++++
670 enable.radio.parts
671
672
673 Web staff client patron editor
674 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
675 The web staff interface now includes a patron editor/registration form
676 that is written using AngularJS, leading to faster and more responsive
677 patron editing.  This feature is currently available in preview mode, but
678 supports the following actions:
679
680   * adding and editing base patron records and addresses
681   * setting statistical categories
682   * editing secondary groups
683   * cloning patron records
684   * duplicate detection
685   * surveys
686
687
688
689
690 ==== Non-active status copy transit message ====
691
692 After copy checkin, if the copy is in transit, display a special
693 message in the transit alert dialog and in the printed transit receipt
694 (optionally, via macro) if the copy is in (or, rather, will be once it
695 arrives at its destination) a non-active copy status.
696
697 ===== Upgrade notes =====
698
699  * To add the new message to the transit slip, add the
700    'transit_copy_status_msg' MACRO.
701  * To remove the new message from the alert dialog, remove the 
702    'staff.circ.utils.transit.copy_status_message' string property
703    from 'Open-ILS/xul/staff_client/server/locale/LOCALE/circ.properties'
704  * For a list of non-active copy statuses, see in the staff client
705    under Admin -> Server Administration -> Copy Statuses.
706
707
708
709
710
711 Selectively disallow opt-in based on patron's home library
712 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
713 A new library setting has been added which enables a library to prevent their
714 patrons from being opted in at other libraries.
715
716 For example, consider the following org unit hierarchy:
717
718        Org Units          Depth
719
720           CONS              0
721            |
722       +-----+-----+
723       |           |
724      SYS1        SYS2       1
725       |           |
726    +--+--+     +--+--+
727    |     |     |     |
728   BR1   BR2   BR3   BR4     2
729
730 Suppose that SYS1 wishes to prevent its patrons from being opted in at SYS2.
731 To accomplish this, it sets the value of the "Restrict patron opt-in to home
732 library and related orgs at specified depth" setting to 1, meaning that patrons
733 at SYS1 libraries at or below that depth in the org tree cannot be opted in by
734 libraries outside that part of the org tree.  Thus, BR1 patrons can be opted in
735 at BR2, but not at BR3 or BR4.
736
737 (This setting is distinct from the "Patron Opt-In Boundary" setting, which
738 merely determines the depth at which Evergreen prompts for the patron to opt
739 in.)
740
741 New library setting
742 +++++++++++++++++++
743   * Restrict patron opt-in to home library and related orgs at specified depth (`org.restrict_opt_to_depth`)
744
745
746
747
748 Standing penalty ignore proximity
749 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
750
751 Standing penalties now have an `ignore_proximity` field that takes an
752 integer value.  When set, the value of this field represents the
753 proximity from the user's home organizational unit where this penalty
754 will be ignored for purposes of circulation and holds.  Typical values
755 for this field would be 0, 1, or 2 when using a standard hierarchy of
756 Consortium -> System -> Branch -> Sublibrary/Bookmobile.  A value of 1
757 would cause the penalty to be ignored at the user's home organization
758 unit, its parent and/or immediate child.  A value of 2 should cause
759 it to be ignored at the above as well as all sibling organizational
760 units to the user's home.  In all cases, a value of zero causes the
761 penalty to be ignored at the user's home and to apply at all other
762 organizational units.  If the value of this field is left unset (or
763 set to a negative value), the penalty will still take effect
764 everywhere using the normal organizational unit and depth values.  If
765 you use a custom hierarchy, you will need to figure out any values
766 greater than 0 on your own.
767
768 The `ignore_proximity` does not affect where penalties are applied. It
769 is used when determining whether or not a penalty blocks an activity
770 at the current organizational unit or the organizational unit that
771 owns the copy involved in the current transaction.  For instance, if
772 you set the `ignore_proximity` to 0 on patron exceeds overdue fines,
773 then the patron will still be able to place holds on and checkout
774 copies owned by their home organizational unit at their home
775 organizational unit.  They will not, however, be able to receive
776 copies from other organizational units, nor use other organizational
777 units as a patron.
778
779
780
781 Patron checkout history stored in a dedicated table
782 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
783
784 Patron checkout history is now stored in separate, dedicated database 
785 table instead of being derived from the main circulation data.  This
786 allows us to age/anonymize circulations more aggressively, since they 
787 no longer need to stick around in cases where they represent a patron's
788 opt-in checkout history.
789
790 This has a number of patron privacy implications.
791
792  * Minimal metadata is stored in the new patron checkout history table, 
793    so once the corresponding circulation is aged, the full set of 
794    circulation metadata is no longer linked to a patron's reading history.
795    ** It is limited to checkout date, due date, checkin date, and copy data.
796  * Staff can no longer report on a patron's reading history.  
797    ** While it is possible to build aggregate reports on reading history 
798       data, it is not possible to report on which user an entry in the
799       history table belongs to.  (The 'usr' column is hidden from the 
800       reporter).
801  * Staff can no longer retrieve a patron's reading history via API.  Only
802    the user that owns the history data can access it.
803
804 Upgrade notes
805 +++++++++++++
806
807 Administrators should verify the CSV export of checkout history works after
808 deploying this change.  If local changes were made to the CSV template,
809 the template will not be updated as part of this deployment.  The stock
810 template was modified to handle gracefully NULL values for checkin_time.
811
812 For example:
813
814 [source,diff]
815 ------------------------------------------------------------------------
816 -    Returned: [% date.format(helpers.format_date(circ.checkin_time), '%Y-%m-%d') %]
817 +    Returned: [%
818 +        date.format(
819 +            helpers.format_date(circ.checkin_time), '%Y-%m-%d')
820 +            IF circ.checkin_time;
821 +    %]
822 ------------------------------------------------------------------------
823
824
825
826 Client
827 ~~~~~~
828
829
830
831 Holds count column picker option
832 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
833 A new column picker option showing the number of holds for a given item will
834 now be available in various interfaces displaying item information, including
835 the patron's Items Out tab and the Item Status, Check Out, Check In, Renew
836 Item and Record In-House Use screens.
837
838 Note: Because the holds count is generated from the hold_copy_map, newly-added
839 items and items in a non-holdable status will not display accurate hold counts
840 until 24 hours after they have been added to the system or moved to a holdable
841 copy status.
842
843
844 Distinct images for pop-ups and slips
845 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
846 The client now supports using distinct images for hold, transit, and booking
847 reservation popup windows and slips. In addition, three new images have been
848 provided, replacing the turtle that previously displayed. The turtle file
849 is still available in the images directory for those sites that still wish
850 to use it.
851
852
853 Development
854 ~~~~~~~~~~~
855
856
857
858 Removal of unused methods
859 ^^^^^^^^^^^^^^^^^^^^^^^^^
860 The following public methods, which were both broken and not in use,
861 are removed:
862
863  * `open-ils.actor.org_unit.closed_date.create`
864  * `open-ils.actor.org_unit.closed_date.delete`
865
866
867
868
869
870 Public catalog
871 ~~~~~~~~~~~~~~
872
873 Editable borrowing history
874 ^^^^^^^^^^^^^^^^^^^^^^^^^^
875 Patrons can now delete titles that they do not wish to appear in their
876 Check Out History.
877
878  * In "My Account", click on the "Items Checked Out" tab, then
879    the "Check Out History" sub-tab.
880  * Check off the items to conceal.
881  * Click the Go button next to the "Delete Selected Titles" drop-down box.
882  * Click OK in the pop-up to confirm the deletion.  Note that deletions
883    cannot be undone.
884
885 Deleted titles will also not appear in the downloaded CSV file.
886
887 Patron history disable warning
888 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
889
890 When disabling checkout and/or holds history in the public catalog's
891 Search and History Preferences tab, patrons will be warned that the
892 operation is irreversible when history data exists that will be
893 deleted as part of the update.
894
895
896
897 Include parts label when sorting copies on the record details page
898 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
899 The list of copies on the catalog's record details page now includes
900 the part label in the default sort order.
901
902 Specifically, copies are now sorted by (in order), org unit, then
903 call number, then part label sortkey, then copy number, and
904 finally barcode.
905
906 Previously, the hierarchy was org unit, then call number,
907 then copy number, and finally barcode
908
909
910
911 Quick option to change search scope to all libraries
912 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
913 A common usage of the catalog is to do a search in a restricted scope,
914 like a local library. When the results are lacking, the search is repeated in a
915 consortium-wide scope.  This feature provides an optional button and checkbox
916 to alter the depth of the search to a defined level.
917
918 This feature is enabled by default and can be configured in the Depth Button/
919 Checkbox section of config.tt2.
920
921 New config.tt2 settings
922 +++++++++++++++++++++++
923   * ctx.depth_sel_checkbox
924   * ctx.depth_sel_button
925   * ctx.depth_sel_depth
926   * ctx.sel_button_label
927   * ctx.depth_sel_button_class
928   * ctx.depth_sel_checkbox_label
929   * ctx.depth_sel_tooltip
930   * ctx.depth_sel_resultshint
931
932 Limiter to exclude electronic resources
933 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
934 A limiter to exclude electronic resources from search results is now available
935 on the advanced search screen and from the search results page. This limiter
936 will exclude any search results with an item form of o or s. This limiter
937 will be applied on top of any other format limiters used in the search.
938
939 The checkboxes are disabled by default. To display them in both places, set
940 the 'ctx.exclude_electronic_checkbox' setting in config.tt2 to 1.
941
942 New config.tt2 setting
943 ++++++++++++++++++++++
944 ctx.exclude_electronic_checkbox
945
946
947 Expand unAPI API
948 ^^^^^^^^^^^^^^^^
949 Evergreen's unAPI support now includes access to many more
950 record types. For example, the following URL would fetch
951 bib 267 in MODS32 along with holdings, volume, copy,
952 and record attribute information:
953
954 https://example.org/opac/extras/unapi?id=tag::U2@bre/267{holdings_xml,acn,acp,mra}&format=mods32
955
956 To access the new unAPI features, the unAPI ID should have the
957 following form:
958
959   * +tag::U2@+
960   * followed by class name, which may be
961     * +bre+ (bibs)
962     * +biblio_record_entry_feed+ (multiple bibs)
963     * +acl+ (copy locations)
964     * +acn+ (volumes)
965     * +acnp+ (call number prefixes)
966     * +acns+ (call number suffixes)
967     * +acp+ (copies)
968     * +acpn+ (copy notes)
969     * +aou+ (org units)
970     * +ascecm+ (copy stat cat entries)
971     * +auri+ (located URIs)
972     * +bmp+ (monographic parts)
973     * +cbs+ (bib sources)
974     * +ccs+ (copy statuses)
975     * +circ+ (loan checkout and due dates)
976     * +holdings_xml+ (holdings)
977     * +mmr+ (metarecords)
978     * +mmr_holdings_xml+ (metarecords with holdings)
979     * +mmr_mra+ (metarecords with record attributes)
980     * +mra+ (record attributes)
981     * +sbsum+ (serial basic summaries)
982     * +sdist+ (serial distributions)
983     * +siss+ (serial issues)
984     * +sisum+ (serial index summaries)
985     * +sitem+ (serial items)
986     * +sssum+ (serial supplement summaries)
987     * +sstr+ (serial streams)
988     * +ssub+ (serial subscriptions)
989     * +sunit+ (serial units)
990   * followed by +/+
991   * followed by a record identifier (or in the case of
992     the +biblio_record_entry_feed+ class, multiple IDs separated
993     by commas)
994   * followed, optionally, by limit and offset in square brackets
995   * followed, optionally, by a comma-separated list of "includes"
996     enclosed in curly brackets.  The list of includes is
997     the same as the list of classes with the following addition:
998     * +bre.extern+ (information from the non-MARC parts of a bib
999       record)
1000    * followed, optionally, by +/+ and org unit; "-" signifies
1001      the top of the org unit tree
1002    * followed, optionally, by +/+ and org unit depth
1003    * followed, optionally, by +/+ and a path. If the path
1004      is +barcode+ and the class is +acp+, the record ID is taken
1005      to be a copy barcode rather than a copy ID; for example, in
1006      +tag::U2@acp/ACQ140{acn,bre,mra}/-/0/barcode+, +ACQ140+ is
1007      meant to be a copy barcode.
1008    * followed, optionally, by +&format=+ and the format in which the record
1009      should be retrieved. If this part is omitted, the list of available 
1010      formats will be retrieved. 
1011
1012
1013
1014
1015 New form/genre search and facet index
1016 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1017 The stock indexing definitions now include a search and facet index on the
1018 form/genre field (tag 655). This allows genre links in the public catalog
1019 record display to retrieve works in the same genre. The public catalog genre
1020 links will no longer display content from the 659 MARC fields. 
1021
1022 The genre facet will also display by default in the public catalog.  A partial
1023 reingest during upgrade is required to use this index.
1024
1025
1026
1027
1028 Limit number of facets retrieved during search
1029 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1030 Catalog search now limits the number of facets retrieved
1031 per defined facet field. Setting a limit is useful so that
1032 `open-ils.cstore backends don't end up needlessly consuming
1033 memory when fetching facets for a large result set; if a broad
1034 search retrieves over 10,000 author facets (say), even the most
1035 persistant user is not going to actually look at all of them. Fetching
1036 fewer facets can also slightly speed up generation of search results.
1037
1038 The limit is controlled by a new global flag, `search.max_facets_per_field`,
1039 whose label is "Search: maximum number of facet values to retrieve for
1040 each facet field".  The default limit value is 1,000, but lower values
1041 (e.g., 100) are perhaps even better for most catalogs.
1042
1043 Significant bugfixes
1044 ~~~~~~~~~~~~~~~~~~~~
1045
1046 Add acquisitions cancel reason 85 for Baker & Taylor EDI
1047 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1048 Baker & Taylor send backs a quantity status code of 85
1049 when a line item is canceled when using EDI.  That code
1050 is now included in the system so those cancelations get 
1051 properly registered. 
1052
1053 Self-check printing
1054 ^^^^^^^^^^^^^^^^^^^
1055 Corrections were made to the self-check holds and fines printing
1056 functionality to so that the proper transactions can be printed.
1057 The change requires that the Self-Checkout Fines Receipt and
1058 Self-Checkout Holds Receipt action/trigger templates be updated
1059 in order to work properly. 
1060
1061 Miscellaneous
1062 ~~~~~~~~~~~~~
1063
1064 * Copy records in the "Concerto" test data set now have prices.
1065 * The web-based self-check interface now displays the patron
1066   information area only when a patron is logged in.
1067 * The progress page displayed by MARC Batch Edit is improved.
1068 * The public catalog now better handles the situation where
1069   a patron who does not have an email address registered in
1070   Evergreen tries to email a record.
1071
1072 Evergreen 2.10.0 bugs closed
1073 ----------------------------
1074
1075 * https://bugs.launchpad.net/bugs/838525[Bug 838525: Timestamp on dob can make date appear off by a day]
1076 * https://bugs.launchpad.net/bugs/963341[Bug 963341: Allow the JSPac and TPac to display both MFHD records and Serial Control/Alternate records,]
1077 * https://bugs.launchpad.net/bugs/1067823[Bug 1067823: tpac: genre links in record details page launch subject search]
1078 * https://bugs.launchpad.net/bugs/1164174[Bug 1164174: Add support for author/title series added entry]
1079 * https://bugs.launchpad.net/bugs/1175711[Bug 1175711: can't renew items on OPAC due to items being on Booking resource list]
1080 * https://bugs.launchpad.net/bugs/1197636[Bug 1197636: Email record detail does not check for email]
1081 * https://bugs.launchpad.net/bugs/1202742[Bug 1202742: Support alert/print message for transiting, non-active copies]
1082 * 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]
1083 * https://bugs.launchpad.net/bugs/1208613[Bug 1208613: Expand All button does not work past the 1st page when viewing a large picklist.]
1084 * https://bugs.launchpad.net/bugs/1229757[Bug 1229757: support distinct pop-up images for holds, transits, and hold transits]
1085 * https://bugs.launchpad.net/bugs/1240657[Bug 1240657: OpenILS::Application::Actor should check_perms for CREATE_CLOSED_DATE, not CREATE_CLOSEING]
1086 * https://bugs.launchpad.net/bugs/1251415[Bug 1251415: Use the juvenile setting when auto-removing juvenile flag.]
1087 * https://bugs.launchpad.net/bugs/1275118[Bug 1275118: Holds history displays canceled holds as active]
1088 * https://bugs.launchpad.net/bugs/1312699[Bug 1312699: Editable Checkout History]
1089 * https://bugs.launchpad.net/bugs/1319998[Bug 1319998: money.materialized_summary_billing_del() ADDS to balance_owed]
1090 * https://bugs.launchpad.net/bugs/1333254[Bug 1333254: EDI invoices automatically expend debits]
1091 * https://bugs.launchpad.net/bugs/1367926[Bug 1367926: Add support for (nearly) direct access to the full unapi backend]
1092 * https://bugs.launchpad.net/bugs/1370694[Bug 1370694: Selfcheck "Print List" for Holds view does not work]
1093 * https://bugs.launchpad.net/bugs/1371647[Bug 1371647: config.marc21_ff_pos_map needs an audit]
1094 * https://bugs.launchpad.net/bugs/1375043[Bug 1375043: Support for in-A/T telephony configuration]
1095 * https://bugs.launchpad.net/bugs/1380709[Bug 1380709: invoice print amounts-per-fund uses wrong value when item price varies]
1096 * https://bugs.launchpad.net/bugs/1384740[Bug 1384740: Add authority records support to marc stream importer (Connexion)]
1097 * https://bugs.launchpad.net/bugs/1391282[Bug 1391282: Default Action Trigger Templates  Updates]
1098 * https://bugs.launchpad.net/bugs/1392396[Bug 1392396: Wishlist: Action Trigger for new user creation]
1099 * https://bugs.launchpad.net/bugs/1402018[Bug 1402018: Acq Copy location UI scoped to registered workstation]
1100 * https://bugs.launchpad.net/bugs/1402770[Bug 1402770: Add column picker option for number of holds in item context]
1101 * https://bugs.launchpad.net/bugs/1406786[Bug 1406786: Merge parts functionality fails to preserve copy_part mapping]
1102 * https://bugs.launchpad.net/bugs/1422802[Bug 1422802: Parts need to be more visible on the place holds screen]
1103 * https://bugs.launchpad.net/bugs/1422932[Bug 1422932: TPAC: Holds history pager typo]
1104 * https://bugs.launchpad.net/bugs/1429268[Bug 1429268: Credit card payment fails on NULL mailing address]
1105 * https://bugs.launchpad.net/bugs/1452950[Bug 1452950: Angularize the patron editor]
1106 * https://bugs.launchpad.net/bugs/1454871[Bug 1454871: KPAC Hold Notifications - SMS]
1107 * https://bugs.launchpad.net/bugs/1454884[Bug 1454884: Hold placed on grouped metabib result displays wrong title]
1108 * https://bugs.launchpad.net/bugs/1464765[Bug 1464765: evergreen.lpad_number_substrings doesn't handle internal substring matches properly]
1109 * https://bugs.launchpad.net/bugs/1466173[Bug 1466173: Wishlist: Selfcheck Hide UI Elements until patron auth]
1110 * https://bugs.launchpad.net/bugs/1466990[Bug 1466990: Detailed search results shows parts for items that dont have parts]
1111 * https://bugs.launchpad.net/bugs/1468422[Bug 1468422: Improve Password Management and Authentication]
1112 * https://bugs.launchpad.net/bugs/1470957[Bug 1470957: Items are incorrectly sorting when using the Sort By Publication date feature]
1113 * https://bugs.launchpad.net/bugs/1474051[Bug 1474051: Avoid storing partial credit card payment info]
1114 * https://bugs.launchpad.net/bugs/1474455[Bug 1474455: Fixed navigation menu for the web client]
1115 * https://bugs.launchpad.net/bugs/1474566[Bug 1474566: Credit card API amount paid rounding error.]
1116 * https://bugs.launchpad.net/bugs/1482336[Bug 1482336: create_release_notes.sh include .adoc files]
1117 * https://bugs.launchpad.net/bugs/1483500[Bug 1483500: evergreen.lowercase needs test]
1118 * https://bugs.launchpad.net/bugs/1483506[Bug 1483506: public.first_agg needs test]
1119 * https://bugs.launchpad.net/bugs/1483508[Bug 1483508: public.text_concat needs tests]
1120 * 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]
1121 * https://bugs.launchpad.net/bugs/1486294[Bug 1486294: Add acquisitions data to the Concerto dataset]
1122 * https://bugs.launchpad.net/bugs/1486592[Bug 1486592: Copies in concerto data should have prices]
1123 * https://bugs.launchpad.net/bugs/1487527[Bug 1487527: TPAC: Provide shortcut for changing search scope]
1124 * 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]
1125 * https://bugs.launchpad.net/bugs/1492793[Bug 1492793: Support for PostgreSQL Application Name Connection Options]
1126 * https://bugs.launchpad.net/bugs/1496837[Bug 1496837: xml-related test is invalid]
1127 * https://bugs.launchpad.net/bugs/1499123[Bug 1499123: Ability to Ignore Certain Standing Penalties Within a Proximity to the Patron's Home Library]
1128 * https://bugs.launchpad.net/bugs/1501471[Bug 1501471: fetching OU settings in batch can be made faster]
1129 * https://bugs.launchpad.net/bugs/1501516[Bug 1501516: Indicate whether a lineitem is fully paid/invoiced in PO list]
1130 * https://bugs.launchpad.net/bugs/1502152[Bug 1502152: Trap Warnings in marc_export for better error reporting]
1131 * https://bugs.launchpad.net/bugs/1504615[Bug 1504615: OPAC: Suggest record detail more useful when sorted by parts]
1132 * https://bugs.launchpad.net/bugs/1505286[Bug 1505286: set limit on facets retrieved during search]
1133 * https://bugs.launchpad.net/bugs/1506534[Bug 1506534: valid_z3950_attr_type check constraint can cause errors during pg_restore]
1134 * https://bugs.launchpad.net/bugs/1507845[Bug 1507845: Correct search engine optimization -- allow robots to crawl, but not index, results]
1135 * https://bugs.launchpad.net/bugs/1508477[Bug 1508477: browser client: hotkeys don't work if an input element has focus]
1136 * https://bugs.launchpad.net/bugs/1509479[Bug 1509479: infinite loop when parsing modified unclosed phrase search query]
1137 * https://bugs.launchpad.net/bugs/1510641[Bug 1510641: Cannot print PO without lineitems]
1138 * https://bugs.launchpad.net/bugs/1513554[Bug 1513554: It is possible to delete acq.cancel_reasons that are used by the system]
1139 * https://bugs.launchpad.net/bugs/1516022[Bug 1516022: reporting source for copy/hold ratio at pickup library and descendants]
1140 * https://bugs.launchpad.net/bugs/1516104[Bug 1516104: Wishlist: Additional Acq Toolbar Options]
1141 * https://bugs.launchpad.net/bugs/1516707[Bug 1516707: Relevance ranking deteriorates when phrases are added to search]
1142 * https://bugs.launchpad.net/bugs/1516757[Bug 1516757: SIP Date of Birth off by one day / parsed as UTC]
1143 * https://bugs.launchpad.net/bugs/1516867[Bug 1516867: HTML reports should be dynamically sortable]
1144 * https://bugs.launchpad.net/bugs/1519055[Bug 1519055: Simple checkbox to exclude electronic resources from search results]
1145 * https://bugs.launchpad.net/bugs/1519465[Bug 1519465: Purchase Orders with spaces in the name cause problems with EDI processing]
1146 * https://bugs.launchpad.net/bugs/1519911[Bug 1519911: Typo in seed data for hold cancel notification action triggers]
1147 * https://bugs.launchpad.net/bugs/1519925[Bug 1519925: Add UPC search to MARC Federated Search -  Native Evergreen option]
1148 * https://bugs.launchpad.net/bugs/1522538[Bug 1522538: Unexpected Journal Title Search Results when using second or third Search Input in Advanced Search]
1149 * https://bugs.launchpad.net/bugs/1522604[Bug 1522604: webclient: Red font to highlight Lost items in patron summary extends to Non-Cataloged label]
1150 * https://bugs.launchpad.net/bugs/1526543[Bug 1526543: Cannot disable password reset in TPAC]
1151 * https://bugs.launchpad.net/bugs/1526546[Bug 1526546: Parts do not sort correctly on Holdings Maintenance screen]
1152 * https://bugs.launchpad.net/bugs/1526547[Bug 1526547: Overdues adjusted via lost (or long overdue) processing get an incorrect note ("VOIDED FOR BACKDATE")]
1153 * https://bugs.launchpad.net/bugs/1527342[Bug 1527342: Maintain patron reading history in a dedicated table.]
1154 * https://bugs.launchpad.net/bugs/1528596[Bug 1528596: Another untrapped marc_export warning]
1155 * https://bugs.launchpad.net/bugs/1531976[Bug 1531976: Triggered Events UI not loading after visiting Message Center UI and vice-versa]
1156 * https://bugs.launchpad.net/bugs/1533329[Bug 1533329: Selectively disallow opt-in based on patron's home library]
1157 * https://bugs.launchpad.net/bugs/1533331[Bug 1533331: evergreen.protect_reserved_rows_from_delete() trigger function returning error]
1158 * https://bugs.launchpad.net/bugs/1538697[Bug 1538697: webclient: copy record does not save when changing stat cat entries]
1159 * https://bugs.launchpad.net/bugs/1539088[Bug 1539088: marc export should only print "Waiting for Input" when running interactively]
1160 * https://bugs.launchpad.net/bugs/1539776[Bug 1539776: webclient: Wrapping improvements for vol / copy editor]
1161 * https://bugs.launchpad.net/bugs/1544723[Bug 1544723: Add webstaff to update_pofiles]
1162 * https://bugs.launchpad.net/bugs/1545178[Bug 1545178: two dead methods for dealing with closed dates should be removed]
1163 * https://bugs.launchpad.net/bugs/1545226[Bug 1545226: MARC Batch Editor summary table html problems]
1164 * https://bugs.launchpad.net/bugs/1546125[Bug 1546125: Print Templates -&gt; Save Locally not working]
1165 * https://bugs.launchpad.net/bugs/1548143[Bug 1548143: Add Parts Support to Vandelay Item Import]
1166 * https://bugs.launchpad.net/bugs/1548147[Bug 1548147: Quick Export Feature for Vandelay Queues]
1167 * https://bugs.launchpad.net/bugs/1548869[Bug 1548869: KPAC - hold results screen not showing title]
1168 * https://bugs.launchpad.net/bugs/1549393[Bug 1549393: AddedContent: Invalid ISBN's are sent to Content Cafe as blank string]
1169 * https://bugs.launchpad.net/bugs/1550495[Bug 1550495: EDI Default Cancel Reason for Baker &amp; Taylor not included: Code 85]
1170 * https://bugs.launchpad.net/bugs/1551447[Bug 1551447: Selfcheck: Printing Fines Prints All Open Transactions]
1171 * https://bugs.launchpad.net/bugs/1552060[Bug 1552060: Persistent login no longer working in OPAC]
1172 * https://bugs.launchpad.net/bugs/1553813[Bug 1553813: Browser patron editor field validation and permission checks]
1173 * https://bugs.launchpad.net/bugs/1556339[Bug 1556339: API attempts to use nonexistent user_visible_circs method]
1174 * https://bugs.launchpad.net/bugs/1557525[Bug 1557525: Release Notes Omission]
1175 * https://bugs.launchpad.net/bugs/1557621[Bug 1557621: Verify password API fails on barcode; returns success on deleted users]
1176 * https://bugs.launchpad.net/bugs/1557683[Bug 1557683: Missing semicolon in 0953.function.unapi-bre.external-includes.sql]
1177
1178 Evergreen 2.10.0 Acknowledgments
1179 --------------------------------
1180 The Evergreen project would like to thank the following 
1181 individuals who contributed code, documentations patches and
1182 tests to this release of Evergreen:
1183
1184  * Thomas Berezansky
1185  * Adam Bowling
1186  * Jason Boyer
1187  * Kate Butler
1188  * Steven Callender
1189  * Steven Chan
1190  * Galen Charlton
1191  * Mark Cooper
1192  * Jeff Davis
1193  * Martha Driscoll
1194  * Bill Erickson
1195  * Jason Etheridge
1196  * Blake Henderson
1197  * Pasi Kallinen
1198  * Jake Litrell
1199  * Kathy Lussier
1200  * Terran McCanna
1201  * Christine Morgan
1202  * Dan Pearl
1203  * Michael Peters
1204  * Jennifer Pringle
1205  * Mike Rylander
1206  * Dan Scott
1207  * Chris Sharp
1208  * Ben Shum
1209  * Remington Steed
1210  * Jason Stephenson
1211  * Josh Stompro
1212  * Yamil Suarez
1213  * Dan Wells
1214  * Bob Wicksall
1215
1216 We would also like to thank the following individuals who
1217 tested and signed off on patches:
1218
1219  * Christine Burns
1220  * Andrea Neiman
1221  * Erica Rohlfs
1222
1223 We would also like to thank the following organizations who
1224 commissioned developments in this release of Evergreen:
1225
1226  * Linn Libraries Consortium
1227  * King County Library System
1228  * MassLNC
1229
1230 We also thank the following organizations whose employees contributed
1231 to this release:
1232
1233  * BC Libraries Coooperative
1234  * Berklee College of Music
1235  * Bibliomation
1236  * Calvin College
1237  * CW/MARS
1238  * Emerald Data
1239  * Equinox Software
1240  * Georgia Public Library Service
1241  * Indiana State Library
1242  * Kent County Public Library
1243  * King County Library System
1244  * Lake Agassiz Regional Library
1245  * Laurentian University
1246  * MassLNC
1247  * MOBIUS
1248  * MVLC
1249  * NOBLE
1250  * Rodgers Memorial Library
1251  * Sigio
1252
1253 We regret any omissions.  If a contributor has been inadvertantly
1254 missed, please open a bug at http://bugs.launchpad.net/evergreen/
1255 with a correction.
1256