Constraint with current() results in JavaRosa parsing error in Aggregate v1.5.0

1. What is the problem? Be very detailed.
The following constraint is not working now (v1.5.0) which is working before (v1.4.0).
not(selected(join(' ',/Custom_Hiring_Center_Checklist_05022018_V1/plot[./plot_info/plot_code=current()/../plot_code and position(.) != position(current()/../..)]/plot_info/plot_code),.))

2. What app or server are you using and on what device and operating system? Include version numbers.

Using ODK Aggregate v.1.4.7 server

3. What you have you tried to fix the problem?

We tried to upload the XML file in a different instance where old XML was uploaded.

4. What steps can we take to reproduce the problem?

Please find attached XLSX file, convert it, and publish it in aggregate server of v1.4.7.

5. Anything else we should know or have? If you have a test form or screenshots or logs, attach below.

Please find attached.

Custom_Hiring_Center_Checklist_05022018_V1.xlsx (373.8 KB)

Thanks for providing lots of details in your post. This was a tricky one to think through.

This form is based off of the beautiful sample form at Validate against duplicate entries within nested repeats - #2 by Mitch_S which demonstrates fantastic use of advanced XPath. :star_struck:(@Xiphware, if you haven't admired it yet, I think you'll enjoy it)

I'm very surprised to learn that it worked in Aggregate 1.4.7 which was released in 2015. This strongly suggests that the bug with current() that was described in Collect: Use of current() in a choice filter was introduced some time between then and late 2018 when we fixed it. Either way, it looks like Aggregate v1.5.0 was affected by that bug and so it won't work with current() expressions.

You will need to update to a newer version of Aggregate. If you can, I encourage you to upgrade to Aggregate 2.0.3. However, note that it no longer supports App Engine (read more at Upcoming changes to Aggregate). If you need App Engine support, you can use Aggregate v1.7.3.