243.10 - Release Notes - Jumpmind Commerce¶
Announcing¶
Fiscalization | European Union Fiscalization for Point of Sale (POS) Systems¶
Fiscalization in the European Union (EU) refers to government-mandated regulations that ensure POS systems securely record, store, and report transactions to prevent tax fraud. Each EU country has its own fiscalization laws, but they generally require POS systems to meet specific technical and reporting standards.
Point Of Sale¶
243.10.1¶
New + Improved¶
- Orders | Enhance ReserveItemRequest to take in the entire SaleSession and pass it back in the response (JMC-8187)
- Upgrade JMC to symmetric 3.15.18 to fix bug with setting maxFormKeys (JMC-7871)
Fixed¶
- Aurus Payment | Null pointer error when getting card pre-swipe (JMC-8372)
- Aurus Payment | Null response error when Aurus closes socket (JMC-8325)
- Cherry PickLoyalty LookupWhen no matches found, nothing happens (JMC-8462)
- Clicking "Edit" on validate billing address prompt does not re-populate billing address form (JMC-7921)
- Client V1 | Cannot switch out of single app mode (JMC-8220)
- Client v1 | Field validators don't consistently update when different language is selected (JMC-8239)
- Clientelling | Transaction data is not written to ctx_consultation_item table (JMC-7931)
- Close Till | Close till amounts incorrect when comma is present (JMC-7913)
- Customer with cross-border address has state pre-populated in billing address form (JMC-7922)
- Customer | Creating loyalty customer from Clienteling or outside transaction with a customer display linked can cause a transaction to be created when signup is finished (JMC-8182)
- Customer | Order icon is being displayed inappropriately on customer error message (JMC-8322)
- Deposit Work Sheet Report inaccurate with Store Safe enabled on a store with multiple registers (JMC-8267)
- Devices | Wedge scanner stops working (JMC-7979)
- Different customer lookup/signup experience when CXConnect paired (JMC-7886)
- Gift Card | Swiped cards fail to activate/reload (JMC-7968)
- Giftcards fail to load at POS while it is already loaded per Aurus and SVS (JMC-6528)
- How to handle multiple IAfterBuildScreen implementations for a screen (JMC-7918)
- i18n | French Canadian stores can show
.instead of,in money fields (JMC-8326) - Inventory Count is not updated properly in Product Details screen (JMC-7659)
- Loop when attempting to print receipt with enableMobilePrint set to false (JMC-8157)
- Need to add specific routing for the new sls_xxx_from_corp table routers so they route only to the specific business unit (JMC-7954)
- PublisherPublisher is making excessive queries to CTX_LOCK (JMC-8226)
- Reports | Deposit report is failing to print for non-USD currencies (JMC-8264)
- Returns | Cross border returns showing empty transaction selection instead of 'Cannot accept a cross border return' message (JMC-8026)
- Returns | Invalid quantity message is displaying after changing qty during even exchange (JMC-8260)
- Returns | Positive discount calculated when excludeReturnedItemsFromTotalDiscountAmount is true and returning item with price-override (JMC-8170)
- Returns | Return item promotion calculations do not consider identifier items (JMC-8144)
- Returns | Return policies that are "not-allowed for employees" can return as match when employee linked (JMC-8319)
- Shrug guy when removing secondary package in pack stage for Delivery order (JMC-7877)
- Shrug | Entering an unknown user for any Manager Override results in a shrug (JMC-7668)
- Some prompts with required input allow no input and shrug when entered (JMC-8003)
- Tax Exempt Transaction- Null value is getting persisted (JMC-7734)
- Transaction data is not saved correctly on an exchange transaction causing the published JSON to be incorrect (JMC-7884)
- Translation | Fallback locale is no longer working (JMC-8010)
- Usability | Cancel / "X" button overlaps dialog title for dialogs with long titles (JMC-8124)
- Usability | Default configs from base profile get pulled in when customer stops overriding them (JMC-8261)
- Usability | Subtotal, Discount, and Tax on the Customer Display Should Match Associate Display (JMC-8007)
- Usability | Subtotal, Discount, and Tax should match Total and be uniform between Sell Screen and Transaction Details Screen (JMC-7898)
Upgrade Considerations¶
- To utilize this fix a value needs to be set for openpos.pay.aurus.delayBetweenGetCardBinCancelAndFollowingCloseTransMs . (JMC-6528)
- Customers overriding the endpoint /ordersmgmt/reserveItem will need to update how they access the deliveryGroup from the ReserveItemRequest request object. (JMC-8187)
- Custom overrides that may have been applied relating to openpos.sell.sellItemActionHandlers.itemPriceOverride.isDisplayedAsDiscount or the subtotal or discount display in DefaultTransRenderer, TransactionDetailsState, SaleTotalsDisplayHelper, DefaultSaleScreenBuilder, or CustomerDisplaySaleScreenBuilder may need to be re-evaluated or removed. (JMC-8007)
- Custom overrides that may have been applied relating to openpos.sell.sellItemActionHandlers.itemPriceOverride.isDisplayedAsDiscount or the subtotal or discount display in DefaultTransRenderer, TransactionDetailsState, SaleTotalsDisplayHelper, or DefaultSaleScreenBuilder may need to be re-evaluated or removed. (JMC-7898)
243.10.0¶
New + Improved¶
- About | Updates to About to add installed Microcaps information (JMC-7221)
- Deprecate use of itm_item.tax_exempt_code (ItemModel.taxExemptCode) (JMC-7368)
- Discounts | Provide the ability to allow manual $AMT discounts to apply to each QTY of a line item (JMC-7247)
- Fiscalization | Move ops-api to services instead of point-of-sale (JMC-7443)
- Fiscalization | Send EFR Abort trans on Commerce transaction suspend (JMC-7372)
- Fiscalization | VAT tax display on Sale, Return, tender options, transaction search/details, delivery orders screens (JMC-7383)
- Matrix Scanning | Implement MatrixScan with the Zebra DS9308 scanner for a fixed register (JMC-7258)
- Matrix Scanning | Implement MatrixScan Count using native iOS SDK (JMC-7015)
- Receipt Selection | Enhance the Receipt selection on POS (JMC-7127)
- SymmetricDS | Add configuration to sync all sales tables back down to a store if a device is failed over to corp (JMC-7295)
- Technical | Add API for IContextService to enable/disable a button (JMC-7478)
- Technical | Add bootstrap service support for Mac Mini (JMC-6828)
- Technical | Add support for configuring fixed (non mobile) printers in doc_assigned_receipt_printer (JMC-7836)
- Technical | Gift card items are added to transaction with hard-coded itemTaxable = false which bypasses item taxGroup logic (JMC-7364)
- Technical | Move default content images and jumpmind branded ones as well to foundation-data so they are available in the customer layer (JMC-7502)
- Technical | Publisher Performance Improvements (JMC-7750)
- Technical | Upgrade SymmetricDS to 3.15.17 for CVE fixes (JMC-7789)
- Technical | Use spring boot datasource for SymmetricDS to enable the use of AWS credentials (JMC-7582)
- Tender | Streamline the Tender Process by eliminating the need to select Next unless you specify you want Split Payment (JMC-7570)
- Till Reconciliation | Create Configuration to Control Default View (Summary or Detail) for both Open and Close Till (JMC-7756)
- Usability | To enhance the usability and better organize options by use/user, several buttons are being moved to the Manage screen (JMC-7444)
Fixed¶
- Add Penny to Even Exchange Throwing Null Pointer When Tax Authority is Null (JMC-7707)
- Clicking "Add New Customer" during signup when possible match found just rebuilds the screen (JMC-7959)
- Close Reconciliation | Device inaccurately reflecting active status preventing store closing (JMC-7794)
- Customer | When multiple matches found on customer signup phase 1, add-new-customer button causes errant behavior (JMC-7791)
- CX Connect | Add parameter to suppress keyboard popup on customer search (JMC-7730)
- CX Connect | Customer search screen does not allow adding extra buttons (JMC-7710)
- EOD | Fast Close cash tender amounts should be set to last open amount (JMC-7573)
- Gift Card Cash Out | Cash drawer does not pop after GC Cash Out on Split Tender transaction (JMC-6858)
- JMC Helm Charts | Missing Additional Label Flags | New Conditional Checks Enablement (JMC-7561)
- Legacy Wrapper | Service fails to start due to missing dependency (JMC-7597)
- Localization | Date search fields don't match locale on POS e-Journal screen (JMC-7774)
- Manage | Expected versus actual amount differences on open till not recorded correctly in sls_tender_settlement_line_item (JMC-7311)
- Manage | Shrug guy when leaving amount blank during Closing the Till (JMC-7460)
- Order | If you decline (can't fulfill) all items in an order and then hit continue on the pack screen you get a shrug (JMC-7589)
- Order | Order Creation Behavior Clarification (JMC-7554)
- Orders | In the Transaction Search and EJ View of Store Pickup Orders, the Pickup Location is labeled "Shipping Address" (JMC-6965)
- Orders | saving of notes fail because the order id is not set (JMC-7875)
- Orders | Unable to continue when trying to close the Billing Address prompt while creating a pickup order (JMC-7743)
- Performance | Document resources should be cached to improve Receipt Printing performance (JMC-7417)
- Performance | Remote Ops Till calls are made after every item scan (JMC-7721)
- POS| Sell Item | Display order of the fields on Sell Item screen changes after scanning an item (JMC-7793)
- Printing | When a list of documents is printed, and all prints error besides the last one, no prompt to retry print (JMC-7462)
- Promote | discountCodeDetails are not displayed for Category Rewards (JMC-6345)
- Publisher | Publisher is locking eagerly and not releasing if unable to continue processing queued items. (JMC-7646)
- Reduce large startup memory footprint from 1GB to 300MB (JMC-7746)
- Reporting | Calculations for Sales Amount and Return Amount Incorrect for Some Reports (JMC-7726)
- Reporting | Cashier Exception Report is appearing blank on the 'Location Summary Report' (JMC-7819)
- Reporting | Queries used for Some Custom Sales Reporting Returning Incorrectly Calculated Data (JMC-7599)
- Return | Return with special order tender issue (JMC-7553)
- Sales Tax | TAX amounts (State Tax, PIF, RSF) discrepancies on CO store (JMC-6076)
- Shrug| When clicking the x dialog button on the "Required Price Entry" (JMC-7785)
- SymmetricDS throws a java.lang.IllegalStateException: form with too many fields > 1000 when more than 50 batches attempt to sync (JMC-7822)
- Tax | Taxes in certain states (AL, PA) calculate incorrectly for non-receipted returns (JMC-7618)
- Technical | [no response] from server is not treated as error or success during personalization, failure to failover occurs (JMC-7533)
- Technical | BarcodeConfig settings from the yaml file are not being honored. (JMC-7617)
- Technical | Issue instantiating models when generating Deposit Worksheet Report Audit Summary (JMC-7612)
- Technical | Setting of DBSession queryTimeouts by query is broken (JMC-7776)
- Technical | SqlPurgeJob takes up a lot of memory when there are a lot of rows to purge (JMC-7362)
- Technical | The dialog that doesn't allow the point of sale to start because there is an initial load going on sometimes can take several hours to disappear (JMC-7740)
- Tender | Improve card tender flow when pre-swipe is enabled (JMC-7574)
- Transaction Search | Electronic Journal and Transaction Search timestamps are adjusting based on DST vs displaying actual ring time (JMC-6812)
- VAT Tax | VAT tax amount is sometimes rounded incorrectly (JMC-6634)
- Vertex Integration| Vertex Integration job rte2JMC is failing with Binding errors (JMC-7816)
Upgrade Considerations¶
- openpos.promotions.applyManualAmtDiscToQtyEnabled was added to provide the ability to allow manual $AMT discounts to apply to each QTY of a line item. The default behavior will be true when this change goes live. If you need your current functionality for $ AMT to remain, set the parameter to false. (JMC-7247)
- Any gradle dependencies to ops or ops-api in extension code will need to be changed to the services project (JMC-7443)
- additionalPodLabels is also now applied as selector labels for Deployment and Service specs.nullnullAdded new config options for all services:null
.service.annotations - Allows you to specify annotations onto Service resources.null .additionalDeploymentAnnotations - Allows you to specify annotations directly onto the Deployment resources. A version for templated Pod resources already existed. (JMC-7561) - Please make sure that your max_batch_to_send settings on sym_channel are set to 10 to avoid this error. (JMC-7822)
- This change updates AutoPersonalizationStartupTask.personalizeUsingDeviceNameto fail/throw after 5 attempts to either getPersonalizationParameters or personalize with those parameters, where it previously would continue trying indefinitely. This allows personalizationStartupSequence to move to the next prioritized personalization startup task. This affects both EnterpriseConfigPersonalizationStartupTask and QueryParamsPersonalization as they both use AutoPersonalizationStartupTask.personalizeUsingDeviceName. (JMC-7533)
- for pk based purging jobs, addednullopenpos.jobs.config.[jobName].batchSize, to control the fetch size and commit size. default is 1000 (JMC-7362)
- The configuration openpos.ops.till.showReconcileDetailCountScreen previously determined whether the Detail Count view was displayed by default during open store bank, create till, open till, reconcile till, and close store bank operations.That configuration has been removed in favor of individual configurations per operation:These are all flags/booleans, and are false by default.When upgrading, a previous setting of openpos.ops.till.showReconcileDetailCountScreen: true is logically equivalent to setting all the new configurations to true, though openpos.ops.till.showDetailCountScreen.reconcileTill is the equivalent new configuration in name and intent. (JMC-7756)
Security¶
- From null nullnullAny project that parses untrusted Protocol Buffers data containing an arbitrary number of nested groups / series of SGROUP tags can corrupted by exceeding the stack limit i.e. StackOverflow. Parsing nested groups as unknown fields with DiscardUnknownFieldsParser or Java Protobuf Lite parser, or against Protobuf map fields, creates unbounded recursions that can be abused by an attacker. (CVE-2024-7254protobuf: StackOverflow vulnerability in Protocol Buffers)
- (CVE-2025-22235 org.springframework.boot:spring-boot (spring-boot-3.4.4.jar))
- From nullA special BeanIntrospector class was added in version 1.9.2. This can be used to stop attackers from using the declared class property of Java enum objects to get access to the classloader. However this protection was not enabled by default. PropertyUtilsBean (and consequently BeanUtilsBean) now disallows declared class level property access by default.Releases 1.11.0 and 2.0.0-M2 address a potential security issue when accessing enum properties in an uncontrolled way. If an application using Commons BeanUtils passes property paths from an external source directly to the getProperty() method of PropertyUtilsBean, an attacker can access the enum's class loader via the "declaredClass" property available on all Java "enum" objects. Accessing the enum's "declaredClass" allows remote attackers to access the ClassLoader and execute arbitrary code. The same issue exists with PropertyUtilsBean.getNestedProperty(). Starting in versions 1.11.0 and 2.0.0-M2 a special BeanIntrospector suppresses the "declaredClass" property. Note that this new BeanIntrospector is enabled by default, but you can disable it to regain the old behavior; see section 2.5 of the users guide and the unit tests.This issue affects Apache Commons BeanUtils 1.x before 1.11.0, and 2.x before 2.0.0-M2.Users of the artifact commons-beanutils:commons-beanutils1.x are recommended to upgrade to version 1.11.0, which fixes the issue.Users of the artifact org.apache.commons:commons-beanutils22.x are recommended to upgrade to version 2.0.0-M2, which fixes the issue. (CVE-2025-48734 Improper Access Control vulnerability in Apache Commons.)
Retail Core (Shared core by store applications)¶
243.10.0¶
New + Improved¶
- Helm Chart | Change Inventory and Clienteling from a
StatefulSetresource to aDeploymentresource (JMC-7609)
Upgrade Considerations¶
- Inventory and Clienteling were previously regarded as a StatefulSet as a indicator to that the pod handles stateful connections and needs to be managed differently than a typical stateless Deployment. However with the introduction of StateLB, the affinity can managed by an out-the-box proxy. As a result, when managing multiple replicas of Inventory and Clienteling, you should also enable the paired loadBalancer option too (inventory.loadBlaancer.enabled=true and clienteling.loadBalancer.enabled=true). Any ingress rules should be updated to point at the StateLB pods instead. If you let the Helm chart make the Ingress for you, this happens automatically. (JMC-7609)
Security¶
- (CVE-2024-7254StackOverflow vulnerability in Protocol Buffers)
Clientelling¶
243.10.1¶
Fixed¶
- Clientelling | Transaction data is not written to ctx_consultation_item table (JMC-7931)