5 - **[Features](#features)**
6 - **[Bugs resolved](#bugs)**
7 - **[Miscellany](#misc)**
8 - **[Credits](#credits)**
10 ## <a name="features"></a>Features
14 - **[CRM-19815](https://issues.civicrm.org/jira/browse/CRM-19815) Make
15 pseudoconstant code generic in advanced search
16 ([9908](https://github.com/civicrm/civicrm-core/pull/9908),
17 [9885](https://github.com/civicrm/civicrm-core/pull/9885), and
18 [9799](https://github.com/civicrm/civicrm-core/pull/9799))**
20 This modifies handling of pseudoconstants (site-wide lists of options) from
21 specific hard-coded situations to metadata-based fields. This results in
22 removing slow joins and improves speed.
24 - **[CRM-19492](https://issues.civicrm.org/jira/browse/CRM-19492) When merging:
25 require row to be taken across before changing row settings
26 ([9902](https://github.com/civicrm/civicrm-core/pull/9902))**
28 The interface for merging contacts is clarified so that merge options such as
29 location type on a field are not available unless the field is marked to be
30 merged from the contact which is to be deleted.
32 - **[CRM-20175](https://issues.civicrm.org/jira/browse/CRM-20175) Increase pager
34 ([9894](https://github.com/civicrm/civicrm-core/pull/9894))**
36 The page number box on search results now allows four-digit page numbers.
38 - **[CRM-19934](https://issues.civicrm.org/jira/browse/CRM-19934) Performance
39 improvement on civicrm_acl_contact_cache
40 ([9807](https://github.com/civicrm/civicrm-core/pull/9807)) (Partial work)**
42 The query for building an ACL cache is simplified to avoid a taxing `OR`
45 - **[CRM-19816](https://issues.civicrm.org/jira/browse/CRM-19816) Improve
46 activity search filters
47 ([9841](https://github.com/civicrm/civicrm-core/pull/9841))**
49 Using the API to search for activities involving a specific contact is
50 simplified and standardized across the assignee, source, and target, plus the
51 generic `contact_id` parameter.
53 - **[CRM-19883](https://issues.civicrm.org/jira/browse/CRM-19883) Activity
54 Priority Field is Not Included in Advanced Search or Activity Reports
55 ([9816](https://github.com/civicrm/civicrm-core/pull/9816) and
56 [9800](https://github.com/civicrm/civicrm-core/pull/9800))**
58 The Priority field is now available in the Activity Detail and Activity
61 - **[CRM-19938](https://issues.civicrm.org/jira/browse/CRM-19938) Make Civi to
62 CMS email sync optional
63 ([9765](https://github.com/civicrm/civicrm-core/pull/9765))**
65 There is now an option to disable synchronization of a contact's email address
66 with their CMS user account.
68 - **[CRM-19930](https://issues.civicrm.org/jira/browse/CRM-19930) Patch
69 DB_DataObject::toArray() to sprintf only as needed
70 ([9735](https://github.com/civicrm/civicrm-core/pull/9735) and
71 [177](https://github.com/civicrm/civicrm-packages/pull/177))**
73 Database query performance is improved by only running strings through
74 `sprintf()` when actually necessary.
76 - **Extension.download API - Allow downloading without installing
77 ([9898](https://github.com/civicrm/civicrm-core/pull/9898))**
79 The Extension.download API still defaults to downloading and installing an
80 extension, but a new parameter `install` can be set to `FALSE` in order to
81 download without installing.
83 - **[CRM-20034](https://issues.civicrm.org/jira/browse/CRM-20034) Support "OR"
85 ([9844](https://github.com/civicrm/civicrm-core/pull/9844))**
87 Many entities can now be queried with sets of `OR` parameters, returning rows
88 that meet one of several criteria. The API Explorer displays the `AND`/`OR`
89 option when it is available.
91 Separately, the Activity.get API now allows for searching by the ID of
92 attached files and allows for joining on EntityTag.
94 - **[CRM-19943](https://issues.civicrm.org/jira/browse/CRM-19943) Improve tag
95 management UI ([9918](https://github.com/civicrm/civicrm-core/pull/9918) and
96 [9787](https://github.com/civicrm/civicrm-core/pull/9787))**
98 A new drag-and-drop interface allows for editing, nesting, and coloring tags.
100 - **[CRM-20061](https://issues.civicrm.org/jira/browse/CRM-20061) Allow 'tables'
101 as a parameter on the revert api
102 ([9862](https://github.com/civicrm/civicrm-core/pull/9862))**
104 This adds the opportunity to specify which tables to revert for a logged
109 - **[CRM-20158](https://issues.civicrm.org/jira/browse/CRM-20158) Store card
110 type and last 4 digits of credit card
111 ([9876](https://github.com/civicrm/civicrm-core/pull/9876)) (Preliminary
114 The `civicrm_financial_trxn` table now contains fields to store credit card
115 type (e.g. Visa, MasterCard, etc.) and the last four digits of the card
116 number, if available. The fields are not yet used by any functions.
118 - **[CRM-20022](https://issues.civicrm.org/jira/browse/CRM-20022) Add Batch
119 Title to Columns, Grouping tabs on Contribution Summary report
120 ([9838](https://github.com/civicrm/civicrm-core/pull/9838))**
122 The Contribution Summary report now has an option to display the title of the
123 corresponding financial transaction batch.
127 - **[CRM-19999](https://issues.civicrm.org/jira/browse/CRM-19999) Soften error
128 message when registration is closed for an event
129 ([9823](https://github.com/civicrm/civicrm-core/pull/9823))**
131 CiviCRM now says "Sorry" when you attempt to register for an event where
132 registration is closed.
136 - **[CRM-20196](https://issues.civicrm.org/jira/browse/CRM-20196) Add a useful
137 message when the user didn't setup bounce processing properly
138 ([9906](https://github.com/civicrm/civicrm-core/pull/9906))**
140 If you fail to set a domain in the Mail Accounts and send a message through
141 CiviMail, a log message will note the situation.
143 ### Backdrop Integration
145 - **Add a default layout for CiviCRM admin and ability to configure/set to
147 ([15](https://github.com/civicrm/civicrm-backdrop/issues/15) and
148 [20](https://github.com/civicrm/civicrm-backdrop/pull/20))**
150 CiviCRM for Backdrop now has a default layout for administration pages.
152 ## <a name="bugs"></a>Bugs resolved
156 - **[CRM-19929](https://issues.civicrm.org/jira/browse/CRM-19929) Implement pre
158 ([9733](https://github.com/civicrm/civicrm-core/pull/9733))**
160 Updates to `civicrm_entity_tag`--tagging or untagging a contact or
161 activity--now invoke `hook_civicrm_pre()`.
163 - **[CRM-20201](https://issues.civicrm.org/jira/browse/CRM-20201) Manage Tags
164 page does not work if a tag set does not have created by set
165 ([9919](https://github.com/civicrm/civicrm-core/pull/9919) and
166 [9913](https://github.com/civicrm/civicrm-core/pull/9913))**
168 - **(Regression) CRM_Mailing_ActionTokens - Degrade gracefully
169 ([9874](https://github.com/civicrm/civicrm-core/pull/9874))**
171 This fixes an issue where scheduled reminders and other non-CiviMail messages
172 would fail if they inadvertently use CiviMail action tokens.
174 - **[CRM-19453](https://issues.civicrm.org/jira/browse/CRM-19453) In Windows
175 System->Directories fails to display under Joomla
176 ([9890](https://github.com/civicrm/civicrm-core/pull/9890))**
178 This allows Joomla users on Windows to view the Directories settings page
181 - **[CRM-20144](https://issues.civicrm.org/jira/browse/CRM-20144) API
182 contact.get group='x' yields ""DB Error: no such field""
183 ([9884](https://github.com/civicrm/civicrm-core/pull/9884) and
184 [9867](https://github.com/civicrm/civicrm-core/pull/9867))**
186 This reinstates the feature allowing for contacts to be searched by group
187 (including smart group) using the API.
189 - **Display error message for activity processing
190 ([9882](https://github.com/civicrm/civicrm-core/pull/9882))**
192 The activity processor scheduled job now records the actual error message that
193 occurred rather than a generic failure message.
195 - **ApiExplorer - Fix js error
196 ([9883](https://github.com/civicrm/civicrm-core/pull/9883))**
198 - **[CRM-19693](https://issues.civicrm.org/jira/browse/CRM-19693) Don't show
199 options for disabled components
200 ([9459](https://github.com/civicrm/civicrm-core/pull/9459))**
202 - **[CRM-19657](https://issues.civicrm.org/jira/browse/CRM-19657) recurring
203 contribution receipt comes from logged in user
204 ([9856](https://github.com/civicrm/civicrm-core/pull/9856) and
205 [9842](https://github.com/civicrm/civicrm-core/pull/9842))**
207 This fixes a bug where receipts triggered by an administrator's actions or a
208 scheduled job now come from system-wide information or the default email
209 rather than the contact associated with the user who is triggering them.
211 - **[CRM-19972](https://issues.civicrm.org/jira/browse/CRM-19972) Add in Post
212 upgrade message for addition of manage tags permission
213 ([9808](https://github.com/civicrm/civicrm-core/pull/9808))**
215 The "manage tags" permission was added in 4.7.13, but site administrators were
216 not alerted about it when upgrading.
218 - **[CRM-19184](https://issues.civicrm.org/jira/browse/CRM-19184) Activities
219 target contact list does not truncate
220 ([9846](https://github.com/civicrm/civicrm-core/pull/9846))**
222 When viewing activities, the list of contacts the activity is with should be
223 limited to the first several. This fixes a regression that listed all the
226 - **[CRM-18811](https://issues.civicrm.org/jira/browse/CRM-18811) MySQL table
227 and column aliases can contain spaces
228 ([8548](https://github.com/civicrm/civicrm-core/pull/8548))**
230 This fixes a problem displaying profiles that have location details for a
231 location type that contains a space.
233 - **[CRM-20015](https://issues.civicrm.org/jira/browse/CRM-20015) token values
234 with ampersand cause error when generating docx letter
235 ([9834](https://github.com/civicrm/civicrm-core/pull/9834))**
237 - **[CRM-19950](https://issues.civicrm.org/jira/browse/CRM-19950) Wrong param
238 passed to checkPermission function
239 ([9832](https://github.com/civicrm/civicrm-core/pull/9832) and
240 [9810](https://github.com/civicrm/civicrm-core/pull/9810))**
242 - **[CRM-18464](https://issues.civicrm.org/jira/browse/CRM-18464) Database Error
243 upgrading to Civicrm 4.7
244 ([9679](https://github.com/civicrm/civicrm-core/pull/9679))**
246 Some legacy sites had a foreign key from `civicrm_action_schedule` to
247 `mapping_id` set as an index rather than a proper foreign key. Dropping that
248 key as part of the upgrade to 4.7.alpha1 resulted in a failed upgrade. The
249 key is now dropped more safely.
251 - **[CRM-19979](https://issues.civicrm.org/jira/browse/CRM-19979)
252 GroupContact.delete does not work for contacts with status of Pending
253 ([9797](https://github.com/civicrm/civicrm-core/pull/9797))**
255 - **[CRM-19957](https://issues.civicrm.org/jira/browse/CRM-19957) DB Syntax
256 Error on all Search Form submission
257 ([9767](https://github.com/civicrm/civicrm-core/pull/9767))**
259 - **[CRM-19955](https://issues.civicrm.org/jira/browse/CRM-19955) custom field
260 image display in contact record retrieve incorrectly
261 ([9758](https://github.com/civicrm/civicrm-core/pull/9758))**
263 This fixes a problem where files uploaded to custom fields were retrieved
264 according to the ID of the entity they're attached to, not the ID of the files
267 - **[CRM-19926](https://issues.civicrm.org/jira/browse/CRM-19926) Constituent
268 Summary Report Filtered by Groups ignores children groups
269 ([9732](https://github.com/civicrm/civicrm-core/pull/9732))**
271 - **[CRM-18427](https://issues.civicrm.org/jira/browse/CRM-18427) Submitted
272 custom data values not reloaded on form when validation fails
273 ([9752](https://github.com/civicrm/civicrm-core/pull/9752))**
275 - **[CRM-19927](https://issues.civicrm.org/jira/browse/CRM-19927) Error message
276 when "Add to Group" is pressed with no group selected
277 ([9731](https://github.com/civicrm/civicrm-core/pull/9731))**
279 - **[CRM-19864](https://issues.civicrm.org/jira/browse/CRM-19864) Incorrect URL
280 in CiviCRM Resources dashlet on Joomla
281 ([9668](https://github.com/civicrm/civicrm-core/pull/9668))**
283 The Configuration Checklist link in the Resources menu was a frontend link in
284 WordPress and Joomla.
286 - **[CRM-20180](https://issues.civicrm.org/jira/browse/CRM-20180) Several
287 documentation links are malformed
288 ([9897](https://github.com/civicrm/civicrm-core/pull/9897))**
290 - **Handle date formats through metadata (see
291 [CRM-19490](https://issues.civicrm.org/jira/browse/CRM-19490),
292 [CRM-18387](https://issues.civicrm.org/jira/browse/CRM-18387),
293 [CRM-20012](https://issues.civicrm.org/jira/browse/CRM-20012),
294 [CRM-20011](https://issues.civicrm.org/jira/browse/CRM-20011),
295 [CRM-15948](https://issues.civicrm.org/jira/browse/CRM-15948), and
296 [CRM-19911](https://issues.civicrm.org/jira/browse/CRM-19911))
297 (([9888](https://github.com/civicrm/civicrm-core/pull/9888),
298 [9845](https://github.com/civicrm/civicrm-core/pull/9845),
299 [9843](https://github.com/civicrm/civicrm-core/pull/9843), and
300 [9830](https://github.com/civicrm/civicrm-core/pull/9830))) (Preliminary work)**
302 A variety of problems periodically emerge with date fields, mainly due to the
303 practically-unique ways of defining and handling each date field. The goal of
304 this work is to define all date fields through metadata. Changes so far
305 define the metadata for date fields, but the fields are still generated the
308 - **[CRM-19887](https://issues.civicrm.org/jira/browse/CRM-19887) Activity
309 Summary report gives DB error on sort by email
310 ([9690](https://github.com/civicrm/civicrm-core/pull/9690))**
312 - **[CRM-19982](https://issues.civicrm.org/jira/browse/CRM-19982) Can't enter
313 dates in 4.7.16. Can only enter characters in word "birth"
314 ([9831](https://github.com/civicrm/civicrm-core/pull/9831))**
316 - **[CRM-19947](https://issues.civicrm.org/jira/browse/CRM-19947) custom multi
317 profile: file upload display issue
318 ([9754](https://github.com/civicrm/civicrm-core/pull/9754))**
320 On profiles including fields from multi-record custom data sets, files
321 uploaded in one record were appearing in other records on the same contact.
325 - **[CRM-19956](https://issues.civicrm.org/jira/browse/CRM-19956) Moving/Copying
326 activities between Cases
327 ([9766](https://github.com/civicrm/civicrm-core/pull/9766))**
329 This fixes an issue preventing the selection of a destination case when moving
330 or copying activities.
334 - **[CRM-19830](https://issues.civicrm.org/jira/browse/CRM-19830) Cleanup
335 contribution search by making non-exportable fields exportable
336 ([9718](https://github.com/civicrm/civicrm-core/pull/9718))**
338 - **[CRM-19793](https://issues.civicrm.org/jira/browse/CRM-19793) Redirect
339 payment processors that fail result in ugly fatal - be prettier
340 ([9762](https://github.com/civicrm/civicrm-core/pull/9762))**
342 - **[CRM-19949](https://issues.civicrm.org/jira/browse/CRM-19949) Notice appear
343 when setup profiles contain common field with contribution page
344 ([9753](https://github.com/civicrm/civicrm-core/pull/9753))**
346 - **[CRM-19881](https://issues.civicrm.org/jira/browse/CRM-19881): Time
347 clobbered in receive_date and trxn_date for api contribution repeattransaction
348 and completetransaction
349 ([9680](https://github.com/civicrm/civicrm-core/pull/9680))**
351 The API spec for the contribution `gettransaction` and `repeattransaction`
352 actions did not contain time, so the receive date and transaction dates were
355 - **[CRM-20145](https://issues.civicrm.org/jira/browse/CRM-20145) line_item with
356 $0 amount may error when creating civicrm_entity_financial_trxn
357 ([9866](https://github.com/civicrm/civicrm-core/pull/9866))**
359 - **[CRM-20048](https://issues.civicrm.org/jira/browse/CRM-20048) PayPal IPNs
360 not processed if "receiver_email" != "business"
361 ([9858](https://github.com/civicrm/civicrm-core/pull/9858))**
363 This resolves problems if a site's PayPal account has a `receiver_email` that
364 is different from the main email address for their business account. CiviCRM
365 now looks for the `business` email.
367 - **[CRM-19908](https://issues.civicrm.org/jira/browse/CRM-19908) Fundamental
368 Fixes for Tax Math Calculations.
369 ([9711](https://github.com/civicrm/civicrm-core/pull/9711))**
371 This change defers rounding of tax amounts until after being multiplied by an
372 item's quantity and avoids deriving a tax rate from the amount of tax on a
375 - **[CRM-19517](https://issues.civicrm.org/jira/browse/CRM-19517) Show price
376 field Options that use disabled Financial Types so they can be edited.
377 ([9763](https://github.com/civicrm/civicrm-core/pull/9763))**
379 - **[CRM-19802](https://issues.civicrm.org/jira/browse/CRM-19802) Contribution
380 page : missing translation
381 ([9587](https://github.com/civicrm/civicrm-core/pull/9587))**
383 This fixes the wrapping of translatable strings in Javascript within page
386 - **[CRM-19873](https://issues.civicrm.org/jira/browse/CRM-19873)
387 contribute.repeattransaction fails when contribution_recur_id is a test
388 recurring contribtuion
389 ([9674](https://github.com/civicrm/civicrm-core/pull/9674))**
393 - **[CRM-20004](https://issues.civicrm.org/jira/browse/CRM-20004) Event payment
395 ([9933](https://github.com/civicrm/civicrm-core/pull/9933))**
397 - **[CRM-19964](https://issues.civicrm.org/jira/browse/CRM-19964) Event
398 registration creates contribution without line item
399 ([9774](https://github.com/civicrm/civicrm-core/pull/9774))**
401 This situation occurred if a price set was enabled, no price field was
402 required, and a user registered for the event without any of the price fields
405 - **[CRM-19918](https://issues.civicrm.org/jira/browse/CRM-19918) Price field
406 "Active on" date ignored in Edit Event Registration > "Change Selections"
407 ([9764](https://github.com/civicrm/civicrm-core/pull/9764))**
409 - **[CRM-20170](https://issues.civicrm.org/jira/browse/CRM-20170) Fix attendee
410 count on event summary report for free events
411 ([9887](https://github.com/civicrm/civicrm-core/pull/9887))**
413 - **[CRM-20013](https://issues.civicrm.org/jira/browse/CRM-20013) Localization
414 for participant status on Event Income Report (Summary)
415 ([9833](https://github.com/civicrm/civicrm-core/pull/9833))**
417 The participant status was showing the field name rather than the translated
422 - **[CRM-20016](https://issues.civicrm.org/jira/browse/CRM-20016) Fatal error
423 processing bounces when email_id IS NULL
424 ([9837](https://github.com/civicrm/civicrm-core/pull/9837))**
426 - **[CRM-19924](https://issues.civicrm.org/jira/browse/CRM-19924) Unsubscribe
427 from a mailing sent to a parent group silently fails
428 ([9730](https://github.com/civicrm/civicrm-core/pull/9730))**
432 - **[CRM-19871](https://issues.civicrm.org/jira/browse/CRM-19871) Default
433 Membership Type not selected - Contribution Form
434 ([9704](https://github.com/civicrm/civicrm-core/pull/9704))**
436 The membership type on contribution pages was defaulting according to weight
437 rather than the type marked as default.
439 - **[CRM-19936](https://issues.civicrm.org/jira/browse/CRM-19936) Membership
440 line items are duplicated when a membership is created or renewed with
441 priceset containing multiple memberships
442 ([9744](https://github.com/civicrm/civicrm-core/pull/9744)) (Partially
445 Bug was as described. The cause has been repaired, but the issue is still
446 pending an action to repair the duplicate line items.
448 - **[CRM-20010](https://issues.civicrm.org/jira/browse/CRM-20010) Membership
449 period_type is required in frontend but not in API.
450 ([9829](https://github.com/civicrm/civicrm-core/pull/9829))**
452 - **[CRM-19945](https://issues.civicrm.org/jira/browse/CRM-19945)
453 api.contribute.repeattransaction fails to renew membership under certain
454 conditions ([9792](https://github.com/civicrm/civicrm-core/pull/9792))**
456 ### Drupal Integration Modules
458 - **[CRM-19910](https://issues.civicrm.org/jira/browse/CRM-19910) Drupal view
459 contact sub type IN query
460 ([424](https://github.com/civicrm/civicrm-drupal/pull/424))**
462 Views was attempting to filter contact subtype as a single-value field rather
463 than a delimited multi-value field.
465 - **[CRM-20051](https://issues.civicrm.org/jira/browse/CRM-20051) Drupal 8 user
466 view page, Profile information not displaying
467 ([428](https://github.com/civicrm/civicrm-drupal/pull/428))**
469 CiviCRM's implementation of `hook_user_view()` needed to reflect a change to
470 the hook function signature.
472 - **[CRM-19960](https://issues.civicrm.org/jira/browse/CRM-19960) Drupal 8
473 Standard Page title does not immediately disappear on contact record screen
474 ([9770](https://github.com/civicrm/civicrm-core/pull/9770))**
476 - **[CRM-19545](https://issues.civicrm.org/jira/browse/CRM-19545) Custom field
477 groups which do not directly extend the base 'Contact' disappear from Drupal
478 view after applying patch CRM-18776
479 ([417](https://github.com/civicrm/civicrm-drupal/pull/417))**
481 This reverts a change for
482 [CRM-18776](https://issues.civicrm.org/jira/browse/CRM-18776), which in turn
483 was attempting to fix a bug with custom fields that apply to only certain
484 types of an entity (e.g. activity types or financial types). That original
485 issue is still outstanding.
487 ## <a name="misc"></a>Miscellany
489 - **[CRM-20154](https://issues.civicrm.org/jira/browse/CRM-20154) dedupe code
490 improvement, remove unused autoflip parameter
491 ([9893](https://github.com/civicrm/civicrm-core/pull/9893) and
492 [9873](https://github.com/civicrm/civicrm-core/pull/9873))**
494 This cleans up code and removes a parameter called `autoFlip` that was never
495 fully implemented in the merging of duplicate contacts.
497 - **[CRM-20181](https://issues.civicrm.org/jira/browse/CRM-20181) Deprecate
498 CRM_Core_Error::fatal()
499 ([9900](https://github.com/civicrm/civicrm-core/pull/9900))**
501 - **MailingGroup API - Tighten up deprecations
502 ([9892](https://github.com/civicrm/civicrm-core/pull/9892))**
504 - **More test output on intermittant error
505 ([9871](https://github.com/civicrm/civicrm-core/pull/9871))**
507 A test of reverting tables now sleeps for a second.
509 - **Remove mispelt param.
510 ([9853](https://github.com/civicrm/civicrm-core/pull/9853))**
512 - **remove markdown files in /docs
513 ([9771](https://github.com/civicrm/civicrm-core/pull/9771))**
515 - **civicrm_webtest.install - Restore access to edit message templates and tags
516 ([9785](https://github.com/civicrm/civicrm-core/pull/9785))**
518 - **Update Test generated examples
519 ([9798](https://github.com/civicrm/civicrm-core/pull/9798))**
521 - **[CRM-20007](https://issues.civicrm.org/jira/browse/CRM-20007)
522 RepeatTransaction API does not use the Payment Processor's payment Instrument
523 to determine Payment Instrument
524 ([9826](https://github.com/civicrm/civicrm-core/pull/9826))**
526 ## <a name="credits"></a>Credits
528 This release was developed by the following code authors:
530 AGH Strategies - Andie Hunt; Australian Greens - Seamus Lee; Chanun
531 Chirattikanon; CiviCRM - Coleman Watts, Kurund Jalmi, Monish Deb, Tim Otten;
532 Francesc Bassas i Bullich; Freeform Solutions - Herb van den Dool; Fuzion -
533 Chris Burgess, Eileen McNaughton; Hartmann Computer Consulting - Peter Hartmann;
534 JMA Consulting - Edsel Lopez, Pradeep Nayak; John Kingsnorth; Lighthouse Design
535 and Consulting - Brian Shaughnessy; Matthew Wire; MongoDB - A. Jesse Jiryu
536 Davis; Sean Madsen; Semper IT - Karin Gerritsen; Skvare - Mark Hanna; Stephen
537 Palmstrom; Wikimedia Foundation - Eileen McNaughton
539 Most authors also reviewed code for this release; in addition, the following
540 reviewers contributed their comments:
542 Agileware - Agileware Team; Andrew Cormick-Dockery; Andrew McNaughton; Andrew
543 Thompson; Blackfly Solutions - Alan Dixon; Borislav Zlatanov; Circle Interactive -
544 Dave Jenkins; City of Winnipeg, Manitoba - Matt Allard; CiviCoop - Jaap Jansma;
545 CiviCRM - Jitendra Purohit, Yashodha Chaku; CiviDesk - Nicolas Ganivet, Steve
546 Kessler, Sunil Pawar; CompuCorp - Alessandro Verdura, Guanhuan Chen; Coop
547 SymbioTIC - Mathieu Lutfy, Stéphane Lussier; Davi Alexandre; Erich Schulz;
548 Jesper Angelo; JMA Consulting - Joe Murray, Jon Goldberg; Joinery - Allen Shaw;
549 Klangsoft - David Reedy Jr; Korlon - Stuart Gaston; MC3 - Graham Mitchell;
550 Monadnock Developmental Services - Charlie Wilder; Oxfam Germany - Thomas
551 Schüttler; Palante Technology Cooperative - Joseph Lacey; Progressive Technology
552 Project - Jamie McClelland; Skylark Technology - Owen Pearson; Spry Digital -
553 Ellen Hendricks; Squiffle Consulting - Aidan Saunders; Systopia - Björn Endres;
554 Tadpole Collective - Kevin Cristiano; Third Sector Design - Michael McAndrew;
555 Upleaf - Osvaldo Gomez; Vakees K; Valéry Gouleau; Veda Consulting - Kajakaran