VPE Management and Configuration Enhancements
aPriori 2019 R2 SP1 provides some new functionality to help VPE Managers update a VPE to use the new labor Wage Grades functionality which was introduced in aPriori 2019 R2. To update a VPE to use Wage Grades instead of individual Labor Rate values for each machine, a VPE Manager must clear the Labor Rate values from each individual machine; otherwise these will take precedence over the labor rate value associated with the Wage Grade. A VPE Manager now easily can clear labor rates for individual machines, or even for all machines in a VPE, as well as for all machines in a given process as was supported previously. Simply open the VPE in the VPE Manager tool, right-click at the desired level (VPE, process, or machine), and select Clear Labor Rate Overrides from the right-mouse popup menu, as shown below. Prior to clearing the labor rates, VPE Managers will be presented with a dialog showing how many machines will be impacted.
o To clear all Labor Rate overrides for all machines in a VPE:
 
o To clear all Labor Rate overrides for all machines in a given process:
 
o To clear Labor Rate overrides for a specific machine:
 
The Formula Dependencies dialog now displays the name of the skill level which is associated with the labor rate used for a given process, as shown below. This enables end users to more easily explore and understand labor-rate assumptions contributing to a cost estimate.
 
aPriori 2019 R2 SP1 introduces several enhancements to CSL select expressions, commonly used when writing cost models.
o aPriori has introduced new variants of select expressions, “select all” and “select only(…)”, and has deprecated the expression form that uses just “select” without including “all”, “distinct”, or an aggregation function such as only(…) or sum(…).  aPriori recommends that you use the new variants instead of the deprecated form. The deprecated form may still be present in older code in the existing cost models and it will continue to function as designed for now; however, these instances will be updated over time and new cost model development will use only the new variants.  Customers who configure their own cost model logic are advised to discontinue use of the deprecated form and use the recommend form of the select expression and aggregation functions instead. 
o A new isEmpty() function provides a concise means of testing whether a given collection (especially a select all result) is empty. It takes a collection parameter and returns true if this parameter is either null or a collection with no elements.
For more information and examples of how to use the new variants, refer to the section refer to the section CSL Language Overview > Expressions > Query in the chapter Working with Cost Model Logic in the 2019 R2 SP1 version of the Cost Model Workbench Guide.