What’s New in Artisan POS 4.4

Change Log
Updated 8/12/2019

Click here for New major 4.4 Features.

(In descending order from the most recent, not all version numbers are released.)

(POS- numbers are for internal tracking reference, possibly associated with a support ticket.)
Version numbers in brackets [ ] is the version that a bug was introduced.



  • Added new image for DEBIT card Payment Type.
  • Fix null pointer during report printing when no printer configured. (POS-13438)
  • Fix upgrade step 4.4.123 to handle missing Void Clerks, and to display an explicit list of transactions that would violate the new transact_check constraints.
  • Shopify: Fix for UnsupporteOperationException when replacing existing images.



  • Exclude deleted items from Receive w/o PO.
  • Fix Payment Log “Missing Sales” filter to exclude cases where the tender is on a different slip than the slip number would suggest.
  • Fixed Sales Summary (SAL-051) to not include Non-Sales costs from inventory adjustments when adjustment were made from a “Internal Use” sale or other special adjustment types.
  • Add an option to Discard Changes when voiding a sale with processed payments.
  • Fixed INV-056 – Inventory Adjustment Detail to report to include adjustments when they are made from the sales screen.
  • Fix configuration of CC Log toolbar button to persist correctly.
  • Refinements to new detached payments processing, including excluding voided payments.
  • Don’t allow Artisan Tasks to run with less then version 9.6 of PostgreSQL.
  • Give an error when trying to do integrated payment processing on a non-integrated station (none or standalone).



  • Fix QB Export for sales of kit items.(POS-13430)
  • Disallow zero-qty sale lines (except for Rental Check-Ins). (POS-13431)
  • 4.4.216: Major improvements to handling of incomplete/detached payments: Choose any payment type to refund deposits for a voided layaway/order, not just store credit; if CC is chosen, do smart refunds if possible (with balance to store credit). Allow incomplete new sale w/processed payments to be discarded/voided (for example, after an exception) with an option to move the payment(s) to a (new) store credit instead of voiding them. Automatically detect detached payments when starting a new sale on the same station, and offer choice to attach them to the sale. Disallow Day-End with any outstanding detached payments. Add power search to CC Log with, among other things, option to show detached payments only. When attaching payments to a new sale, give a dialog with the details. Misc related fixes. (Fix incomplete detection of modified power search for POs.) (POS-12319)
  • Fix “STKUNIT cannot accept a NULL value” receiving partial qty. (POS-13429)
  • Remote Operation: Fix to delete merge_pending references before deleting datascopes (avoids error after removing a node).
  • Fix so receipt printer margins are used when printed from preview.
  • WooCommerce: Round fractional inventory quantities down, instead of getting an error.
  • Fix 4.4.214 upgrade step for sample data.
  • Fix bar code printing in receipts and sheets on Mac.
  • Fix null pointer during migration of site records with no default inventory location.
  • Fix assertion failure during migration with multiple sites.



  • External Accounting: QuickBooks: Fixed the order of the processing of the sections to put undeposited funds into the main transaction not an A/R transaction.
  • Fix improperly migrated tranline data for percentage coupons (missing SPECTAG_COUPON and serial number) and no-discount items (DISCTYPE was null instead of ‘DT_NO_DISC’). (POS-13426)
  • Shopify order import: Include applied discount codes along with direct product discounts. Fix discount import in general to handle dollar discounts as well as percents.
  • Updated INV-124 Item QOH 6-Sites In Columns report to have a Sort By option.



  • WooCommerce: When uploading images, handle titles with spaces and special characters.
  • WooCommerce: Fix backwards check for inclusion of details in error messages, so it shows the request when data is NOT an image file.
  • Remote Operation: Fix so number reservation background task (at site 001) only runs every 10 minutes (as intended), instead of every 30 seconds.
  • Make sure *all* sites have a corresponding Site Configuration record, not just those with station records. This prevents a null pointer exception exporting to QuickBooks with sales from a station-less site such as an Internet Store. Add special configuration for station-less sites in External Accounting Configuration. (POS-13420)
  • Remote Operation fix for 3+ node setups when incoming changes from multiple nodes have overlapping sequence numbers.



  • Major fix for Repair Qty tool to not make incorrect adjustments to siteprod & item QOH when inventory-location-tracking and processing All Sites.
  • Critical fix for migrations with split stock unit lines. (Since November 2017)
  • Rework CONS-104 Consign Payout with Slip # and Date to fix the sort order.
  • Fix so kit main lines on sales are not marked as consigment, even if the item is. (This was happening with variant kits with qty multipliers.)
  • Major performance improvement for looking up transactions by customer, including upgrade step 4.4.200, A/R statements, and Sale Screen Reference Table loading. (Added indexes for TRANSACT.CUSTOMER and TRANSACT.BILLTOCUST.)
  • Fix for 4.4.206 upgrade step when STOREMAP contains duplicate entries. (Delete the duplicates.)
  • Updated Payment Processing Batch Reconcile Report PPL-402 to allow for multi-store.
  • Updated Payment Processing Batch Report PPL-401 to allow for multi-store, fixed the filtering with errors, split the errors and voids out of the deposit total, improved the deposit totals and formatting, and fixed the font color of the voids, etc.
  • Fix for report MCH-140 Slow Moving Inventory which needed an additional Group By field to sum up by Item and display sales total on that same line.



  • Magento/Zoey: Fix duplication of extension in uploaded image filenames.
  • Fine-tune message handling for newly-created nodes, including forwarding, to accommodate the consequences of “send chunking”.
  • Remote Operation: Don’t log merges of MERGE_PENDING itself.
  • Remote Operation: (Final?) fix for ongoing problems with missed advances of last incoming sequence number causing bogus apparent gaps; caused by the changes to change processing order.
  • Paygistix Client: Fix so “ABORTED” is recognized as a user cancellation response.
  • Payment Processing: Fix missing message after a partial authorization (when not AVS checking).
  • Fix hang (or assert failure) typing “.” (for an under-dollar number) in a discount or other adaptive-percent field. (“0.nn” worked OK.) [Broken in 4.4.170.]
  • Add a “Partial” (Approval) button to Test (Fake) Payment Processing.
  • Magento: Fix (new) error uploading alt images.
  • Remote Operation: Silently clip out of range values for additional inventory qty fields: QTYREQUEST, QTYREQRESV, QTYONORDER, QTYORDRESV, QTYOUT.
  • Remote Operation: Fix for SKIPPED changes due to overzealous check for overlapped retransmits from the send “chunking” changes. Don’t rename duplicate license key records.
  • Magento: Fix null pointer in new image upload code.
  • WooCommerce: Don’t try to log binary (image file) contents in error message.
  • Remote Operation: Fix to check all fields for merges, including those with Dependent policy like CHANGEDBY.
  • Remote Operation: Fix record merges when referencing records have multiple columns referencing the same target table. More fine-tuning of exception error message (include sequence number).
  • ISI: Preserve filenames from original import into Artisan, but append item/category code and (if not Full Image) the image index, in order to make it unique. Set alt text and/or title attribute to the item/category name/description on new image uploads. Upload images for WooCommerce directly to WordPress Media Library (rather than using FTP to certek.com and then side-loading); this eliminates the prepended millisecond time. Kurt 6/29/2019 8:27 AM
    Shopify: Continued image work… (POS-13417)



  • WooCommerce: restore use of (undocumented) position field for images.
  • When uploading Internet Store pictures preserve existing pictures on the site if possible (unless explicitly deleted from Artisan).



  • (4.4.204b) Remote Operation: re-work send chunking to handle interleaved transactions and prevent infinite loop reporting no changes to send.



  • Fine-tune check for merging permanent records.
  • Remote Operation: Fine-tune logging of received messages, esp. discarded duplicates.
  • Fix stock unit constraint violation saving a PO after increasing a qty from a request.
  • Remote Operation: Use database lock to prevent multiple task threads from running at the same time; log when waiting. Avoid task scheduling “traffic jam” by skipping any task run that starts past the *next* scheduling time. Fix memory problems by using “send chunking”, but be sure to preserve transaction boundaries. Only report the first 25 upgraded change messages (to prevent swamping the log).
  • Remote Operation: Fix check for incoming messages to skip to those that are subsets of existing messages, not the other way around. [from 4.201 change]



  • Fix to expand 4.4.200 change to customer A/R balance updates to work even when customer record is a “transient object” (i.e. not in the data session).



  • Updated Reports: Sales Summary (SAL-051) Now allows you to include UNPOSTED transactions with a parameter option. A new header field boldly displays the number of unposted transactions that are included. The Employee Performance Report (EMP-163) had several bugs that are now all fixed.
  • Remote Operation: Discard received messages that are subsets of incoming messages already in the database, rather than just exact matches.
  • Remote Operation: Change processing order yet again, to always go by timestamp and only check sequence number when timestamps are identical.



  • Fix null pointer in report parameter prompting from certain saved values, by not obfuscating names of any classes (mostly enums) used by any power search parameter types.
  • Remote Operation: Add node number to failed processing msg.
  • New Purchase Request report Purchase Reorder Report which shows automatic reorders and associated levels. (PUR-007)
  • New Customer Export Report with Sales/Margins, including sales totals and YTD totals with costs. (CUS-111)
  • WooCommerce: Fix failure to assign tags to products. (POS-13418)
  • Fix to merge permanent records created while remote (typically due to a specific upgrade). (POS-13413)
  • Minor layout tweaks to Sales Summary Report (SAL-151).
  • Fix for extended retail price. Bug introduced when we switched to tranline.retail because it was believed that the quantity multiplication was already done just like tranline.linecost.
  • Silently clip negative quantities in ITEM & SITEPROD QTYONHAND & QTYRESERVE. (POS-13414)
  • Performance improvement for upgrade step 4.4.200.
  • Fix incorrect calculation of customer A/R balance when multiple charges/credits are paid/applied in the same transaction. (Includes a recalculation of all customer balances.) (POS-13409)
  • In A/R Activity with multiple entries at the same timestamp, put increases below decreases.
  • Fix so applying payments cancels out any balancing credits and charges, even if net is zero.
  • Add optional category filter for ISI uploads (to partition merchandise between multiple online stores). (POS-13410)
  • Fix syntax error in pattern filter power searches. [4.4.198] (POS-13411)



  • Fix so switching search types (or just search field or match type) moves focus to (possibly new) search value component.
  • More fixes for renumbering bar codes when changing from “Use Item Code”.
  • Fix so built-in search schemes for non-string types (Slip #, Vendor, etc) use Equals match rather than the unsupported Starts With, and as a result are not marked modified.
  • (Remove unused quantity fields from ISI field list.)
  • Shopify: Fix null pointer when order is marked paid w/o any payment method. Handle non-credit-card payment types. For credit cards in test mode, prepend “TEST” to the Auth Code.



  • When changing bar code schemes to an assigned-number scheme, replaced unused bar codes (“—“) with new assigned numbers (if they fit the scheme). (Fixes a Number Format Exception.) (POS-13408)
  • Hopefully final fix for remote operation change processing order. Prevent stock unit quantities from going negative (though the corresponding corrections will leave things out of balance).
  • Probable fix for duplicate datascope error when turning on remote with site 001 data migrated from 3.X.
  • Fix null pointer exception exporting to QuickBooks with no class name set. [4.4.192]
  • Finish TranCloud payment processing support. Fix payment type prompting for refunds and voice auth to only show enabled payment processing types.
  • Remote Operation fix for null pointer when there are no changes to process from some nodes (due to recent changes).
  • Remote Operation: Fine-tune change ordering.
  • Update progress bar when generating statements (consignment & A/R).
  • Fix remote change processing to order by individual changes not whole messages. This fixes some cases of out of order processing. (POS-13402)



  • Fix to not include old 3.5 inventory adjustments in consignment statements.



  • Performance improvement for 4.4.144 post-init step.
  • Fix 4.4.121 upgrade step to report which transactions are out of balance (moved from 4.4.19). Fix 4.4.132 post-init upgrade step to skip tax summaries for stock transactions. Fix 4.4.192 upgrade step to keep PPLOG.PPREF2 nullable. Fix excessive memory usage in post-init step 4.4.144 for stores with a high percentage of non-taxable sales. (POS-13403)
  • Fix GC number to be mutable, since it can be changed for unredeemed manual GCs.
  • Fix migration screen title to “Migrating Data” and its progress message to include the “from” version instead of “—–“.
  • During migration, create any missing base product records.
  • Fix crash going from one receiving detail screen to another (with setting to Automatically Show Receiving Detail Whenever Quantity is Change, combined with using Receive All). Fine-tune screen title for variations of receiving screens. Misc cleanup. (POS-13396)
  • Fix so entering site quantities into a new unsaved item record transfers quantities correctly to other sites. Don’t print inventory transfer manifest when creating pending transfers. (POS-13397)



  • Fix some case of hash computation (for tampering checks): (1) multiple sites with different time zones, (2) remote changes to security task levels. Recompute all hashes during upgrade. Reduce remote operation task output for pending dependencies by showing only the first one for each node.
  • Misc cleanup (for Java 8).
  • Don’t reauthorize a tender if it’s changed to 0.00.
  • Wait for I/O from backup/restore command to complete before closing log file.
  • Add another launcher, “Artisan-Command”, optimized for command-line execution (it uses console mode and it suppresses the splash screen).
  • Fix so padLeft also clips on the left (so, for example, we don’t lose last-4-digits of credit card number when some versions of PayGuardian send leading asterisks).
  • Fix to not reject follow-on transactions (void, return) as unsupported when original transaction was done using a card on file.



  • Add support for Datacap TranCloud payment processing (with corresponding field length increases & additional PayConf fields). Fine-tune Card On File list screen. Add Manual CC payment type for no-touch manual credit card entry. In SaleScreen, only display payment types consistent with each station’s payment processing settings. (POS-13363)
  • Major rework of External Accounting (QB Export) to work with multi-store / location-tracking. Also, add missing exports for Finance Charges, Late Fees, and Manual A/R Adjustments; fix handling of GC discounts. (POS-13394)



  • When skipping bogus/corrupt SiteConf records during migration, also skip the corresponding DefaultsConf, XacctConf, etc.
  • Fix migration of site records with no M1 Store IDs. (POS-13398)
  • Misc cleanup (including R/O data workers declared R/W in SaleScreen).
  • Start tracked coupon numbers at 101 so less likely to conflict with manual codes such as “C10”, sometimes used for things like a generic $10 coupon.
  • Fix conditions for disabling “Estimate when On Hold” check box in Sales Slip Style.
  • Handle missing h/w signature as blank (with appropriate message for license validation failure) rather than as a fatal null pointer exception.



  • Fix for upgrade step 4.4.186 when remote operation is active and has more than one pending incoming message in the database.
  • Remote Operation: Ignore dependencies on nodes that have been removed.
  • Fix crash in Repair Qty screen for loc-tracking with All Sites.
  • Fix Repair Qty screen to work with Location-Tracking (by prompting for site *before* going exclusive). Improve error handling. When specific item(s) requested, only apply missing site product corrections to that/those item(s).
  • Create missing Site Product records during migration and in Repair Qty tool when location-tracking.
  • When recreating missing/deleted items during migration, set original inventory tracking mode to most likely: IT_ON.
  • Cleanly fail when trying to save an Item Record with a blank Alternate Code, rather than logging an exception (w/stacktrace) to log.txt.
  • Log DataWorker state errors as (fatal) exceptions with stack traces, instead of just exiting with a message.
  • When logging a station-in-use message, don’t include a stack trace.
  • Critical Remote Operation Fix to not mistakenly delete valid messages that are incorrectly determined to be replaced by retransmissions.
  • Fix migration of Inventory Location settings in Site Records.
  • Fix migration of Location Tracking Mode (it was always LTM_NONE).



  • Close new reference session when sale screen is closed. (POS-13393)
  • Fix failure to load or refresh sale screen’s “reference table” (due to changes in 4.4.178 to fix fatal error loading records after [main] session is closed). (POS-13393)
  • Improve timestamp handling for Magento order downloads.
  • Inventory Change Report: Added the ability to view by Case Quantity. Also important fix for Retail Value when items on the sale were discounted. Additional clarifications and tweaks.
  • Set Day-End posting date/time to time Day-End was *started* not finished (so it’s clear to see why later sales were excluded.)


  • Implement Remote Operation Retransmission (every 10 days). (POS-13380)
  • Remote Operation: Log additional detail when skipping processing due to pending changes.
  • If a sale is shipped to the store’s own address, use the default tax type(s) instead of DBT, even if in a DBT-enabled state. (Useful for online store “Store Pickup”.) (POS-13385)
  • Fix for 4.4.144 post-init upgrade step in some cases with tax exemptions.
  • Flush after *every* pre-init / post-init upgrade step.



  • Increase length of image filenames from 100 to 255.
  • Add “Image” as name for an ImageRecord.
  • Multi-Vendor improvements: Implement PO vendor change (with and w/o option to replace all items). When putting products on a PO for an alternate (non-preferred) supplier, set Case Cost not Unit Cost (from the Vendor Product’s Standard Cost). Add Vendor P/N to default column layout for Receiving Rollup. When selecting a new vendor, default to the current vendor. (POS-13337)
  • Updated SSL-303 Label Form
  • Fix crash creating new site record when site number 999 is already in use. (POS-13383)



  • Fix time zone discrepancies with ISI order downloads and import in general. (POS-13378)



  • Enhance Inventory Transfer to Ignore Filters (POS-13375)
  • Fix to not count non-sales inventory activity of dynamic-priced items as consignment (so they don’t get included in consignment statements). Force dynamic-priced consignment items to be IT_OFF. Default tracking to IT_OFF and vendor to NONE for all dynamic pricing models, not just Fill-In Price. (POS-13376 cont.)
  • Possible fix for more cases of fatal error loading record after session is closed (due to race condition with closing a screen).
  • Include relevant manual inventory adjustments on consignment statements. (POS-13376)



  • Updated CONS-101 Standard Consignment Payout to use the retail price (tranline.retail) from the sale instead of the current price in the item record to report the retail price at the time of the sale. Also fixed the total at the bottom of the page to only show on the last page.
  • Treat Internal Use and Donation sales as pre-discount consignment. (POS-13373)
  • Performance improvement for 4.4.170 upgrade step.
  • Performance improvements for receipt forms (SLIP-T and SLIP-S) and batch reports.



  • DataVision: Fix problems with word-wrapping in report forms for various corner cases. (POS-13369)
  • Import Manager: ignore extra spaces in map file.
  • Possible fix for some cases of fatal error loading record after session is closed (due to table refresh while closing a screen).
  • Major performance improvement for ISI uploads. (POS-13371)
  • Fix crash in 4.4.161 upgrade step due to index renamed in 4.4.173.
  • WooCommerce: Fix item upload when item has *no* product tags.
  • Fix so new Product Tags field in variants is controlled by the Internet Store Fields setting in the template.
  • If PaygistixClient fails to return the PrintSigLine flag, treat it as unknown and use the default, which is to print the signature line if and only if payment class is PTC_CC. (POS-12805)
  • Add Product Tags to WooCommerce. (POS-13367 cont.)



  • Add Product Tags field for Internet Stores (with corresponding Bulk Change). Upload Product Tags to Shopify (WooCommerce to be added later). Clean up Bulk Change Operation names. (POS-13367)
  • Change WooCommerce upload to product variant description field to use Detailed or Brief Description if non-blank and different from base product.
  • Fix loss of focus on search string in record table screens. [4.4.174]
  • Shopify: Fix null pointer due to recent changes for Weight field.
  • Fixes for Bulk Change Custom Fields to match new size & number of custom fields. (POS-13370)
  • Fix TranLine constraint violation with category = null when importing new items w/QOH.
  • Shopify: Fix null pointer when uploading images with missing filenames.
  • Fix for image import from DBF (trim the filename string). Unify image error handling (e.g. too large) to report consistently in all cases.
  • Shopify: Fix null pointer when uploading images with missing filenames.
  • WooCommerce: Let “Reviews Allowed” be managed entirely on the website; don’t upload it from Artisan (custom fields).
  • Remote Operation fix syntax error in new sql for removing a node.



  • Remote Operation fix to remove dependency reference points for nodes that have been removed. (It’s still way better to make sure all the changes are processed at all other nodes before removing a node.)
  • Remote Operation fix for rare case of two updates (from same source) with exact same timestamp.
    New Build: 4.4.174, new Working Version: 4.4.175 Kurt 4/24/2019 9:24 AM
    POS-13366: Fix tender table navigation issues (while still preserving recent fix to navigate to next line after selecting “Leave On Sale” from OOS prompt in main sale screen).



  • Fix for TransientObjectException saving a sale, PO, or Vendor Invoice after editing (via F4) the associated customer (or vendor). (POS-13355)
  • Fix for StaleObjectException in ColumnLayout. Fine-tune stale record checking on indirect table edit cases.
  • Fix 4.4.173 upgrade step to work on postgres as well as sample data (Derby).
  • Loyalty Club fixes: Fix “On January 1st” reset mode. Process calendar year and anniversary rest modes *before* adding new points from a sale. Revert customer type if crossing *backward* across customer type reward threshold. Don’t reissue coupons when backdating and recalculating points, but do give credit for any un-issued coupons based on new points, to be included in the *next* sale’s coupon issuing. Never reset points when backing out changes for previous values on a modified sale. Fixed cases where an expired membership failed to reset points. Added IX_LCSUM_LOYALTY index to speed up some queries. Dialog at end of backdating memberships now accurately reports number of changed summaries. (POS-13294)
  • Fix crash in Sample Data due to large number of new custom fields (by loading tranline.category with a separate loadProxy rather than having Hibernate try to fill everything with one select statement).
  • Fix so changing from a (recalled) Donation to a normal sale reverts each line to the default tax type, rather than NT.
  • WooCommerce uploads: Protect against null pointers from missing entries in category data cache.



  • Fix problems deleting variant attributes and/or values in some circumstances. (POS-13329)
  • Fix incorrect interpretation of percentage discounts as dollar discounts (introduced by dollar discount fixes in 4.4.170). (POS-13364)
  • WooCommerce: Upload shipping weight and dimensions as blank if zero, so they aren’t displayed to end user. Use floating-decimal format (strip trailing zeros) for weight and dimensions.
  • Don’t (unnecessarily) escape HTML characters in JSON encoding (for remote operation messages, Shopify, and WooCommerce).



  • Remove (40-chr) length restriction on Customer and Item Custom Fields. Increase Item Custom Fields from 9 to 30. Redraw Item Custom Field labels (immediately) when the names are changed in a Category Record. (POS-13356)
  • Fixes for 4.4.01 upgrade of Sample Data and for interrupted 4.2.59 upgrade.
  • Add version number to ArtisanTasks log header.
  • Fix ConcurrentModificationException uploading to Internet Stores with changed higher-level categories (with unchanged sub-categories). (POS-13362)
    Fix so adaptive-percent fields (such as Discounts) handle numbers larger than “999.99”, and fix glitches in switching between decimal and percentage formats. (POS-13353)
  • Enforce “supervisor” (next level up) authorization to change user records and time clock records (maxed with specific setting).



  • Continuing Remote Operation updates…



  • Major rework of Remote Operation Task (among other things, to commit all rcvd message to the database before processing).
  • Add missing Void Sale Task Level to Security Settings (it was being set behind the scenes, but you couldn’t see it or change it individually).
  • Major fix for Inventory Change Report. 1) Fixed the calculation for when ending date is less than the current date. 2) Fixed an issue with Inventory Location vs. Sales Location. 3) Fixed an incorrect field name in the summary.
  • Fix migration to conform to 15-char limit when it generates a machine name for a station record with blank machine field.



  • Fix so Item Info on PO Screen is updated after Ctrl-F4, in case anything changed in the Item Record. (The Sale Screen was previously modified to do this.) (POS-274)
  • Fix JSON error uploading items to WooCommerce due to a new meta_data field in the response, “_json_schema”, with an array value instead of a string; this must have been triggered by some recent upgrade or configuration change (e.g. plugin) on our sandbox server. [WordPress 5.1.1, WooCommerce 3.5.6, various plugins.]
  • Support images for categories in WooCommerce. (POS-13288)
  • Fix for duplicate constraint complaint creating new sample data (due to recent Statement Record index changes).
  • When importing customers w/balances, include *all* adjustments/credits generated from the same import in one Day-End posting.
  • Fine-tune timing of Remote Operation Task receiving to prevent infinite loops with visibility timeouts. Make message received logging output more compact. Show date and system info at top of log, even after clearing it to run a new task.
  • Add java version and memory size to startup info in ArtisanTasks log. Fix memory available in About info to take future pool expansion into account. Show exception info before DONE msg in RemoteOperationTask.



  • Enhanced the Sales By Item Report (SAL-101) to have an option to include NON-POSTED transactions.
  • Allow merging of customers with A/R statements on the same date (but still not generation of *new* statements on an existing date). (POS-13348)
  • Update INV-056 Inventory Adjustment Detail Report Tweaks and Fixes
  • More fixes for upgrade step 4.4.144 to avoid transact check constraint violations from null TAXEXTYPE with ANYEXEMPT = ‘Y’ when upgrading across multiple versions including earlier post-upgrade steps that cause Transact totals to be updated (such as 4.4.66 and 4.4.132).
  • Remote merging fixes for a) inserts with *multiple* duplicate key fields (such as user short and full names), b) inconsistent changes to Finished Date from two different nodes (copy Sale Date to Finished Date if TSTAT >= READY and Finished Date is null).
  • More remote operation task fixes: fix the sort order for processing changes; fix the receive message loop to read *all* of the available messages. Change the visibility timeout to 1/2 the task interval (but at least 30 seconds) rather than always 30 seconds.
  • Change Remote Operation RPA strategy to process changes in order of timestamp between nodes and sequence number from the same node, rather than processing all changes for each node before moving to the next node. This was causing FK violations due to ordering issues with 3 or more active nodes.
  • Fix null pointer displaying Item info on PO screen for a (new) PO line w/o a request date. Fix to strengthen constraints and PO screen code so all non-trivial stock units *must* have a request date (for PO w/o Request, based on the PO Issue Date). Clean up various subtle problems in date field editing on PO screen. (POS-13351)
  • More fixes for remote upgrade steps that weren’t fully executed previously.



  • Support copying Real Data to Sample Data even when Remote. In general, both copy to sample data and prepare new remote node now allow either method of copying data: direct copy on server or backup/restore (silently default to direct copy if nobody else is using the database). (POS-13320)
  • More fine-tuning of progress messages for pre- and post-init upgrade steps.
  • Fix upgrade step 4.4.144 to avoid transact check constraint violations from null TAXEXTYPE with ANYEXEMPT = ‘Y’ when upgrading across multiple versions including earlier post-upgrade steps that cause Transact totals to be updated (such as 4.4.66 and 4.4.132).
  • Cleanup after partial creation of remote node when canceled at backup file selection. Fix failure to turn on remotes when an (inactive) site node (migrated from 3.X) already exists for the main site (by deleting that node first). When creating a secondary node, if that datascope already exists (with number reservations), just take it over (but only if it’s marked inactive). In both cases, fail if the existing node is not inactive. Lay some more groundwork for (still NYI) multi-site nodes.
  • Don’t prompt to confirm expired license when saving customer record changes unrelated to license info.
  • Fix ConcurrentModificationException changing Customer Type & Discount in Sale Screen (by having updateTranLines work with a *copy* of the list of lines). (POS-13346)



  • Fix to set NT (No Tax) on all lines of an order imported with zero tax, not just the first line. (Fix assert sessionContains in adjustStock to skip permanent items.) (POS-13340)
  • Fix errors about detached instances in Scan Mode due to underlying problems exposed by recent record locking changes: scan mode records are not persistent, but some of the code wasn’t checking for that and was saving them to the database anyway. Delete existing scan and scan job records during upgrade. (POS-13343)
  • Fix so vendor invoice totals include Fix spurious AUTO-CORRECT adjustments (of On Order Qty) when adding units to a brand new Vendor Invoice while receiving w/o PO (due to internal ordering problems). Fix so pending stock corrections received w/o PO record activity using the timestamp of the original OOS sale. Fix so partially received pending stock corrections set inventory change type (to IR_OOS_PENDING) on the split line. Fix so Import comes before (below) any other inventory activity with same timestamp. (POS-13341)
  • Add Artisan Tasks icons to installer.
  • (Build fixes for remote upgrade changes.)
  • Fix so derby.log is written to the local folder, along with log.txt, rather than the program folder (actually, it was the current directory); clean up any leftover derby.log files in the program folder during uninstall (for now). Fix so Derby isn’t booted until and unless we actually open Sample Data, and completely deregister and free up its memory if we switch from sample data to Real Data. Fix to write log.txt even when running in the development environment (which was broken when IDEA switched from “.ipr” project format to “.idea”, but we didn’t notice). Intercept JDBC log output and send it to log.txt, but only if “debug” level logging is enabled in log4j.properties for “java.sql”.



  • Fix up remote data for previously missed remote upgrade steps. Improvements to upgrade progress reporting.
    Fix remote upgrade mechanism’s failure to upgrade the local CHANGE_LOG records. Split remote upgrades into individual steps (when run from the Artisan side rather than ArtisanTasks); slower, but resilient to crashes.
  • Fix failure to mark default search scheme for a context as default in preferences, in some cases.



  • Fix for Label Stock SSL-340 Barbell labels.
  • Major install package changes: Switch to folder style install for Mac. All non-launcher files move to “lib” subfolder (to make Mac folder install cleaner). Use launcher for Artisn Task Manager (with -Xmx1g by default). Name 32-bit windows package explicitly. Accept Java 1.8_0_201 but install 202 if 201 or later not present.
  • Fix for new Label Stock SSL-1X0.5X2 1 x 1/2 (2 Across)
  • Significant fixes for the Inventory Adjustment Detail Report – INV-056
  • Fix hang putting tracked coupon on a sale. Optimize related event handling. (POS-13336)
  • Add Pending Transfer screen (under Inventory Transfers) to more easily manage pending transfer quantities (including by scanning). (POS-13319)



  • Fixed various issues when saving a records or a sale that were associated with Purchase Summaries for Customer Discounts and other permanent Item Records. (POS-13334)
  • Fixed problems when saving an existing record that no longer exists in database. (POS-13334)



  • Fix failure to mark percentage coupon sales lines (including customer discounts) as non-sales. (Includes data fixup.) (POS-13334)
  • Major changes to ISI to publish Category Names/Descriptions instead of Category Codes. Also: upload items when their variant templates change; upload product dimensions to WooCommerce. (POS-13312)
  • During migration assign new Customer IDs to duplicates. (POS-13333)
  • Fix so changes to subsidiary records mark the parent (Item, Transact, or Variant Template) as modified and create audit log entries, even when nothing in the parent record itself changes. In particular, this was causing ISI to miss changes to Variant Attributes or Values. (POS-13330)
  • Fix for 4.4.147 changes that caused missing records from Item Records list screen when Product Variants are enabled.
  • Increase length of Item field “Additional Categories” from 70 to 200. (POS-13345)



  • Add Misc Program Option to Transfer Inventory By Cases. Fix duplicate and incorrectly-named columns in tables with indirect fields. (POS-13327)
  • Fix null pointer during migration of data that had remote sites. Add missing caching of number properties in data session. (POS-13328)
  • Add support for multiple line pole displays like the Logic Controls / Bematech LV4000U. (POS-13310)
  • New Label Stock 1 x 1/2 (2 Across)



  • Fix to store Non-Tax Category explicitly in TranLine, so it doesn’t get recomputed from current category hierarchy when transact is modified. This also prevents a transact check violation when modifying cost on a zero-cost item that has been previously sold on a sale with non-taxable items, in some cases.
  • Fix loss of lock on customer record while saving sale, which fired an assert. This caused issues when saving a recalled sale.



  • Fix for “isRecordStale cannot be used with detached instances” saving a TranLineRecord in some cases. (POS-13325)
  • Fix for bogus tender IDs in Payment log from migration for Batch Settle and card-on-file actions. [Include QUERY actions too.]
  • Fix migration failure in tranline table due to isRecordStale check (from recent changes). (POS-13326)
  • Fix for bogus tender IDs in Payment log from migration for Batch Settle and card-on-file actions.
  • Add missing factory method for TAXLOC, to fix migration error.
  • Exclude hidden transactions from Day-End Reprint “min date” (unless *all* transactions in a posting are hidden). (POS-13315)
  • Fix error handling for failure during upgrades while remote.
  • Fix for 4.4.123 upgrade step to add missing finish date.
  • Fix null pointer during station migration with empty station records. (POS-13324)
  • Exclude hidden transactions from Day-End Reprint “min date” (unless *all* transactions in a posting are hidden). (POS-13315)
  • Implement Serial Scanners, Scales, MSR, and Check Reader. (POS-13311)
  • Add F8 Scan Mode to Receiving Rollup screens. (POS-13314)
  • Add option for fixed-amount discounts with BOGO and nFer formulas. Fix nFer case with fixed-amount prices (and now discounts) when total doesn’t divide evenly across qty. (POS-13313)



  • Fix null pointer in updateTotals downloading ISI orders (in import).
  • Fixes for record locking changes to item quantity correction screen.
  • Fix (INV-056) for Inventory Adjustment Detail to show items that no longer have inventory tracking, but did in the past with adjustments. (POS-13305)
  • PPLOG (PPL-402) Reconciliation allow for full name length of 60 instead of 40 which would very rarely cause an error running the report.
  • Fix to not split shipping for vendor bills (including consignment) into separate QuickBooks bill transactions (when there was more than one bill in same posting). (POS-13285)
  • Fix assert failure receiving by PO with vendor invoice (stock unit already in data provider).
  • Fix PO failure to refresh dirty records (by skipping the dirty stock units and hoping they haven’t been changed elsewhere).
  • Fix event handling for Save so that, for example, vendor invoice number is committed before processing Save (avoiding an error that it was empty when typed but not moved off). (POS-13303)
  • Fix null pointer in updateTaxType downloading ISI orders (in import).
  • Enhance ISI payment type check for Auth.net to include “authorizenet” w/o punctuation (and other variations).
  • Finish Destination-Based Tax phase 2: remembered values. (POS-13247)
  • Use record locking (and lock ordering) to prevent race conditions (and StaleObjectExceptions) in Bulk Change Operations, Inventory Management, Saving Sales, A/R Statements, Purchase Orders, Receiving, etc. POS-13262: Require exclusive access for Item Qty Repair tool; strengthen exclusive access checks in general. (POS-13184)



  • More Zoey/Magento fixes: Fix missing update of existing categories. Compare existing images before deleting and replacing them, to avoid repeated image uploads.
  • Add Station Class field and exclude Non-Interactive stations from ASL license counts.
  • Fix migration of customer type fields for loyalty clubs. (POS-13308)
  • Magento: Check if product exists on site before deleting; continue after error creating image; protect against some possible cases of missing product IDs.



  • Avoid rare PO crash by making site Store Name field non-nullable. (POS-13302)
  • Update SAL-051 (Day and Month End) and SAL-213 for the new sales tax model.
  • Force 4.4.19 upgrade to fail with unbalanced transactions after showing message. (This was happening implicitly originally, but broke when the table constraint update was moved to 4.4.113.)
  • Update and Fix for FIN-043 Tax Exempt Detail Report with new sales tax model and also to include sales without customers and fix so report can run in Sample data. (POS-13304)
  • Fix new TaxType constraints to work in Sample Data. Fix incorrect precision for new TAXMIN3 & 4 fields.



  • Move TAXEXTYPE fix-up to 4.4.123 upgrade step to catch post-4.4.113 cases.
  • Fix for possible round-off error in 4.4.132 upgrade step.
  • Fix so non-percentage tracked coupons are taxable sales instead of non-sales.
  • Fix 4.4.130 upgrade step.



  • Rework Tax Specs to support multiple ranges.
  • New Java 8 update 202. Experimental new installer for Mac to use folder with multiple launchers. New launcher for ArtisanTasks.
  • Code cleanup (for Java 8) in External Accounting.
  • Minor tweak to not-yet-active serial number code.
  • Fix so label printing after Receive w/o PO includes ALL items just received, not just the first one. (POS-13299)



  • Fix a number of problems with Vendor Invoices, especially those related to Receive w/o PO prompting for Vendor Invoice. (POS-13296 (and more))



  • Fix Item constraints to allow Per-Diem Rentals. (POS-13295 (part 2) for Migration)



  • Another migration fix for 3.5 Customers: Zero out bogus negative ROA line. (POS-13286)
  • Customer Import: Fill in Customer ID and Customer Since, if missing.
  • 4.4.123 upgrade fix (this time for unnecessarily non-null TAXEXTYPE).
  • Always use menu key “Z” for Bulk Delete in Bulk Action menus.
  • Add missing Bulk Delete Categories
  • Display “Deleted” in title of deleted records. Change to allow deleting records with references (for record types that aren’t permanently deleted), but with a strong confirm.
  • Fix one more field in migration of component lines with missing kit lines. (POS-13286)



  • Migration changes and improved 4.4.123 upgrade step for Destination-Based Tax.
  • Fix 4.4.125 upgrade step to work in Sample Data.
  • Updated standard slips to prevent cutting off of Store Address under certain circumstances.
  • Clarify that migration message about negative prices is just a warning.
  • Add remote upgrade step for 4.4.126.
  • Fix blank line in the middle of multi-line address fields, from empty street2. (POS-13293)
  • Fix migration to turn component lines with missing kit lines into normal sale lines. (POS-13286)



  • Treat zero-priced item changed to non-zero in Sale Screen as a Fill-In-Price item for purposes of tranline.retail calculation, but with an extra confirm. When confirming saving Item Record with zero price, suggest they might want to use Fill-In-Price instead.
  • Upgrade existing cases in the data (including remote changes in flight).
  • Fix missing cross-site authorization check when changing Inventory Location on Sale Screen.



  • Fix divide by zero in kit distribution when component total price is zero.
  • Strengthen TRANSACT constraint check for FINISHED to include TSTAT_HOLD (FINISHED must be null). Add back TRANSACT constraints accidentally dropped in 4.4.113 upgrade step. (POS-13286)
  • Fix migration to clear TRANSACT.FINISHED when illegal for 4.X (< TSTAT_READY). (POS-13286)



  • Improve reporting of SQL errors from Artisan Task Manager, in some cases.
  • Fix Remote Operation to handle changes to security task levels. Fix minor problem with AuthConf corruption check. Improve reporting of SQL errors from Artisan Task Manager, in some cases.
  • New Label for 1/2 of Avery 5167 for 160 labels instead of 80.
  • New Label for 1/2 of Avery 5167 for 160 labels instead of 80.



  • More fixes for 4.4.119/4.4.113/4.4.115 remote upgrade step.
  • Fix off-by-one conversion of non-ALL customer types in migration for Loyalty Clubs and Customer Search Schemes. (POS-13292)
  • Move 4.4.113 & 4.4.115 remote upgrade steps forward to 4.4.119 so it applies to users who had already upgraded before they were added.
  • ArtisanTasks: Ignore non-existent task names from –context arg, rather than starting tasks w/default parameters.
  • Add missing Remote Upgrade Steps 4.4.113, 4.4.115.



  • Specifying which built-in reports do not run in Sample Data for now.
  • Minor tweaking of SAL-213 Daily Sales Tax Detail Report.
  • Minor tweaking of FIN-043 – Tax Exempt Detail Report.
  • New Report MCH-194 – Item Trend Report
  • Inventory Change Report – Fix the problem with retail price and added the ability to roll up by Base Product Variant.
  • Speed up upgrade steps 4.4.113 – 3.3.117. Fix corner cases that were causing constraint violations.
  • Record retail price in inventory history. (Upgrade step fills in with current price.)
  • Fix typo in new change for Sample Data flag in reports.
  • 4.4.115: Add ability to disallow select reports from running in Sample Data.



  • Report Engine: Add JEP Report Formula Function “date_trunc”.
  • Generalize Pending OOS handling to allow for replacement by units that were received in the past (i.e. already on hand), in case we add such use cases.
  • Destination-Based Tax (DBT) phase 1 (no lookups). (POS-13247)
  • Data Import: Improve Import of record reference fields (such as ITEM.VENDOR, ITRANL.ITEM, etc) to prefer primary codes and to otherwise fail if multiple alternate or secondary fields match.



  • Data Import: Fix Imports to set shipping to the detected tax rate.
  • Data Import: Fix Imported Sales to not be included in Shift Closing.
  • Fix failure to load discount % onto sale for percentage coupon items.
  • Migration: Handle station records with missing station names. (POS-13280)


4.4.102 – 4.4.110

  • Remote Operation: General Fixes / Improvements
  • Add Bulk Change Consignment Settings. Fine-tune display of consignment-related fields in Item Lists. (POS-13276)



  • Inventory Counting: When zeroing uncounted or accepting counts, ignore uncounted items that already have zero QOH.
  • Remote Operation: Fix crash merging local records by special-casing the delta merge policy for “modificationCount” to apply to remote operation only.
  • Fix for divide by zero in consignment statement when a vendor is paying processing fees and there’s a transaction with zero total amount.



  • Fix to re-run search after deleting last remaining advanced filter clause (and automatically recreating default filter clause). (POS-13275)
  • More fine-tuning of order date handling for WooCommerce.
  • Fix Imports to do auto-number assignment (for now, based on current settings) when corresponding fields are blank.



  • Update INV-123 Inventory Item Listing report. Added more details for the Promo (discounted price) details. Now honors category discounts.
  • Cloud 2.0 (Remote Operation): Unless old values are missing, don’t clip out-of-range delta values for inventory qty fields (to avoid introducing inconsistencies); let them fail instead.
  • Fix so items taken over as variants for a new base product keep their current inventory tracking setting (if template is in split inventory mode). (POS-13264)
  • Data Import: Add import for Item Alternate Codes.
  • Fix null pointer in ItemRecordScreen.checkUpcPrefix in obscure case with vendor null.
  • Inventory Transfer Scan Mode: Fix for NonUniqueObjectException in Inventory Transfer screen in some cases.
  • Scan Mode Validation: Fix to reject F8 scans for records that don’t match current base filter.
  • Fix 4.4.87 upgrade step failure due to already existing “source_fields” in some cases. (POS-13272)



  • Fix 4.4.87 upgrade step failure due to missing “depends_on” in some cases.
  • Cloud 2.0 (Remote Operation): Compute merged stock unit state from QtyOnHand (and QtyOut) to allow for some cases of selling the same unit from multiple nodes.



  • Make sale line inventory location read-only on the sale screen once a sale has been saved.
  • Don’t reserve item or barcode numbers when the current numbering schemes don’t require them.
  • Fix inventory handling for Force-Deliver to not add extra reservation for lines that are already on hand.



  • Data Import: On Item import, set missing MFR to NONE.
  • Data Import: Extend Import function to check for a name-mapping file w/”.map” extension (including map to blank, to skip columns).



  • Disable Internet Store Inclusion for deleted Items, Categories, and Vendors, and Discontinued Items. When deleting a Category Record, move any sub-categories to this one’s own parent. (POS-13266)
  • Show consignment details on Item Record Screen if Preferred Vendor is a consignment vendor, even if the consignment feature is disabled. Enhance migration to enable Base-License features (such as Consignment) iff they were enabled or used in 3.X. (POS-13213)
  • Fix crash changing Auth Tasks or Remote Number Reservations while Remote. (POS-13268)
  • Fix WooCommerce to find *all* categories on web, not just first 10. (POS-13263)
  • Disallow migration from 3.X while any remotes are outstanding.
  • Fix subtle problems with Power Searches, especially when reverting changes and/or changing Search Schemes.



  • WooCommerce: Move from v2 to v3 WooCommerce API (version 3.5 or later).
  • Remote Operation: Final fine-tuning of missing-value heuristics, and fix do SQS code is not obfuscated during build (which affected syntax of large payload messages).
  • Fix null pointer in makePurchaseRequest() from recent date-only changes.
  • Magento & WooCommerce: Include completed orders as well as processed, in case user marks them complete before Artisan download.
  • Remote Operation: More fine-tuning of missing-value heuristics.
  • Remote Operation: Allow for timestamps w/o milliseconds.
  • Remote Operation: Ignore missing computation source fields (from older change packets).
  • Remote Operation: Ignore missing dependencies (from older change packets).
  • More fine-tuning of Remote workaround for missing old values.
  • Include line numbers in stack traces from built ArtisanTasks.



  • Remote Operation: Improve workaround for missing Delta old values. Prevent constraint violation attempting to make non-negative Delta fields go negative.
  • Minor updates to Feature Schedule.
  • Multi-Line Text fields Import for TTX files (including ISI).
  • Fix recent overzealous assert on DataWorker.execute doing interactive import.
  • Fix upgrade steps for 4.4.87 & 4.4.90 to work in Sample Data.
  • Remote Operation: Fix for null values during updates.
  • Fix a number of fields that were being treated as date-only fields to actually be store as Date types in the database.



  • Remote Operation: Fix to honor AWS SQS limit of deleting at most 10 messages at a time; discard duplicate messages even when they’re out of order; work around missing “old” values for deltas (from older versions); log unexpected data types for Min/Max/Delta merges; fix Union (comma-list) merges.



  • Remote Operation: Fix for Min/Max of date-only fields.
  • Remote Operation: Fix to work with PostgreSQL 10.
  • Remote Operation: Remove NYI; add confirms. Finish Merge Policies, including enhancements to handle derived fields and hash computation. Fix hash computation for corruption checks to be more stable (and re-compute again during upgrade). More fixes for upgrading while remote.
  • Shopify: Fix to check *all* items not just the default first 50 when looking for new items by SKU w/mismatched title.
  • Remote Operation: Change MODCOUNT to Delta policy, so merged records show as modified at all nodes.



  • Fix early exit from Artisan when in non-interactive mode. [broken in 4.4.78]
  • Improve logging of fatal errors and normal exits.
  • Fix missing “discountstartdate” in Bulk Change Retail Discounts. (POS-13261)
  • Exclude system record from remote logging.



  • Rework number locking to prevent deadlock creating a remote node on Windows.
  • Fix failure to calculate merchant processing fees on consignment statements.



  • Simplify remote number locking for background task.
  • Rename some leftover referenced to “Data Group” to be “Data Scope”.
  • Rework the Remote Upgrade code so it can work from a pre-Hibernate context (even the shared code that gets called later).
  • Improvements & fixes for Remote Operation Number Management and Merge Policies.
  • Merge Policy annotations for Transact/TranLine/Tender
  • Fix for duplicate confirmations on Alt-D from a record table. (POS-13260)


  • Automatically set Mfr/Pub for Items to match Vendor when Vendor is an Mfr/Pub/Artist (and Mfr not already set to a different record). Add Vendor Type to default Column Layout for Vendor Records.



  • Enhance Remote merging of fields with dependencies to use Default policy for dependent fields if the depends-on field is (now) the same in both copies.
  • Fixed for when adding siteprod records to not duplicate entries because lack of sort order.
  • Add MergePolicy for a number of records.
  • Fix null pointer in Shopify download when some information is missing.



  • Fix for user-initiated event changes: wrong default was causing table edits to *not* be marked as user-initiated. (POS-13256)
  • Add Bulk Change Extra Categories. (POS-13257)
  • Fix from Number Properties changes for ordering issue during new database creation.



  • Fix for double-subtraction of manual QOH change when location-tracking but showing total QOH on Item Record Screen. Many related event handling changes in common code to clarify user-initiated events. (Fix one case of Session is Closed while changing Column Layouts [via windowResize].) (POS-13256)
  • Fix race conditions assigning numbers (slips, GCs, etc.). Internal cleanup of DataWorker/ProgressWorker to handle synchronous cases better; null progress title no longer implies synchronous execution. (Among other things this removes some duplicate error stack traces.) (POS-13186)
  • Add back NumberingProfile.getMinReserveMap; it’s used indirectly from the Config Settings screen form.
  • Fix race condition setting default Numbering Profile (by going into Configuration Settings or creating a remote node) concurrently on two stations.(POS-13186, partial)
  • When importing customers w/o names, clip the resulting constructed name (based on Customer ID) to fit into the field length of 20 characters. (POS-13254)
  • Fix race condition closing screens with lazy combo box events in progress.
  • Minor performance improvement to queries for A/R statements. Basic Java 8 cleanup.
  • Fix Shopify upload of non-variant items. (POS-13253)
  • Fix so Sale Screen Reference Table is not re-sortable, and is in order of applying payments (with Ctrl-A), with *oldest* first (within each class [credits, then finance charges, then delivered transactions, then pending layaways/orders]). (POS-13252)



  • Fix some subtle race conditions in record screen event handling that caused (among other possible problems) an assertion failure when changing an Item’s Preferred Vendor while not using Multi-Vendor. (POS-13238)
  • Add (hidden) Shift-Ctrl-N action in Inventory Counting Screen to set all (selected) to Not Counted. (POS-13241)
  • More Remote Operation work.
  • Internet Store Interface: Fix ArtisanTasks download task config to hide (and not require) WordPress fields. (POS-13251)
  • Fix failure of assert that item has property changes enabled when zeroing uncounted while accepting counts with location-tracking. (POS-13249)
  • Fix divide by zero in 4.4.66 upgrade step when an IT_OFF tranline w/o inventory has lineQty zero. (Skip those lines.) (POS-13250)



  • Going forward, allow upgrades while Remote. (POS-13245)
  • Merge Policy Updates (Partial) for deciding how fields are merged when there are duplicates.
  • Fix QuerySyntaxException deleting stock units when there are NO referencing tranlines. (POS-13240)
  • Various Fixes in Remote Operation. (POS-13248)



  • More Remote Operation fixes (merging built-in Search Schemes, always-included field merge nuances).
  • Fixes for duplicate merges in Remote Operation.



  • Fixes for duplicate images in WooCommerce. (Requires separate WordPress credentials via “Application Passwords” plugin.) Fix WooCommerce variant order. Require https for WooCommerce. ISI in general: Look for Categories by name before using cached record ID. Check for missing required fields before running. (POS-13223)
  • Exclude “version” from the System Record corruption check, so upgrades don’t cause a tamper message.
  • Remote Operation Work
  • During migration, discard bogus Station and SiteConf records.
  • Fix for Best Seller Report with quantity on hand totals when grouped by item.



  • Implement Remote Number Replenishment.
  • Remove MergeProperties.local and just use MergePolicy.Ignore.
  • Don’t allow creating Sample Data from Real Data while Remote (since Sample would think it’s Remote).
  • ArtisanTasks: Disable Run button when fields are Changed but not Saved.



  • Require exclusive access to create Sample Data from Real Data. Various Java 8 cleanup.
  • Fix failure to record (placeholder) inventory history for IT_OFF sales such as GC & deposits. (Broken in 4.4.43, but the upgrade repairs data from similar older glitches as well.) (POS-12346)
  • Internet Store Interface: Split Variant Template settings for Internet Store Fields into 3 separate settings. (POS-13229)
  • Remote Operation Work Continues



  • Remote Operation: Enforce (now optional, unlike 3.X) VCI numbering restriction.
  • Internet Store Interface: Improve Shopify error handling.
  • Resolve Issues with Inventory Transfers.



  • Final fix for AuthConf tamper check.
  • Remote Operation: Work continues.



  • Internet Store Interface: Shopify: Fix so Shopify doesn’t keep recreating variants on every upload. Default to inventory policy “deny”.
  • Internet Store Interface: Shopify: Supports Shopify’s New Inventory Multi-Location model API.



  • Fix for QuickBooks export for customer deposits such as a layaway or special order payment.
  • Increased SQL database security for security-related tables such as Authorization Tasks and User Records. The increased measures protect these tables from external tampering which could defeat the security control. For example, an unscrupulous person who had somehow gained access to a back-end database password (NOT a normal Artisan password) could attempt to increase their access level and gain access to parts of Artisan they would otherwise be restricted from. These back-end direct modifications are now flagged with warning messages.
  • More WooCommerce variant fixes.



  • Major performance improvement for Reset Counts in Inventory Counting. Fix Reset Counts to not re-prompt for Site.
  • Payment Processing: PayGuardian 2.4.2 now supports returning CardHolder Name.
  • Fix possible round-off error in stock unit unit cost for virtual (or, for consignment, unsold) stock units when cost is changed in an Item Record with a case size.
  • Internet Store Interface: WooCommerce: Rework ISI handling of variants to get variants working for WooCommerce. Strip secret keys from error msg log in WooCommerce.
  • Internet Store Interface: Fix join to STOREMAP in variant check to match on store name (and table name) so as not to pick up entries from another task.
  • Remote Operation Work Continues



  • Improvements to Item Quantity Correction Screen to allow for wildcards and multiple items.
  • Fixed Adjustment Detail report to show user, changed date format and allowed the detail line more space.
  • Internet Store Interface: Shopify: Workaround stupid lack of search by SKU API: After searching by title (product name/description) download *entire* list of products. This should only happen during first-time startup or if someone manually deletes products from Shopify.
  • Fine-tune messages on Repair Quantities screen.
  • Remote Operation Work Continues


  • Fixed Sales Summary Report to honor the Hide Cost flag in the Day End Misc Program Options.
  • Remote Operation Work Continues



  • Fixed Inventory Summary report to break summary totals down by site. (POS-13235)
  • Fix Sales Summary report to handle large numeric values since a small number of the fields were defined too small.
  • Fix missing resultSet.next() in 4.4.47 upgrade step.
  • Internet Store Interface: Shopify: Handle customers w/o addresses.
  • Blank out columns in Locations… (on Item Record Screen) that are not per-site based on current Location-Tracking Mode or Reorder Mode. (POS-13233)
  • Remote Operation Work Continues



  • Internet Store Interface: When downloading internet orders, invoke Artisan via launcher (if available) instead of jar file, so it uses same JRE and VM options as when run interactively. Locate Artisan via launch directory (if possible) rather than current directory. (POS-13226)
  • Combine location-tracking options into a single Location Tracking Mode (None, Full, or On-Hand). For On-Hand mode, Qty Reserved is now global, too. (In On-Hand mode, only On-Hand, Out, and Counted quantities are per-site.) (POS-13212)
  • Remote Operation Work Continues



  • Internet Store Interface: Shopify: Improvements and Fixes for Variant uploads (POS-13225).
  • Remote Operation Work Continues
  • Improvements to Artisan Tasks especially with multiple tasks running at the same time.



  • Fixes for Real Sample Data for general and Artisan Cloud (POS-13224)
  • New “Multi-Store Station” label is set when opening database.
  • Fix Customer A/R Balance computation to include only delivered transactions, also re-compute all balances during an upgrade.
  • Major changes to the internals of the Repair Quantities tool, especially for location-tracking cases. Prepare tool for new interpretation of Order Location
    Tracking Mode to include QTYRESERVE as well.
  • Fix for “r.online not found” choosing Internet Store Only (or not Internet Store) in Power Search.
  • More fixes for 2D barcode scanning, and long swipes/scans in general. (POS-13210 continued)
  • Enhance License Barcode parsing to treat LF, CR, and CRLF the same. Different scanner models and/or drivers map those characters differently, and the newer
    DS4801 scanners weren’t working. (POS-13210)
  • Added Sales Site prompt to Consignment Reports.
  • Physical Inventory: Rewording for Ctrl-N & Ctrl-Z; allow the user to choose whether or not to honor search filters for Ctrl-Z. Workaround text wrap resizing
    problem by having option dialogs pack twice. (POS-13214)
  • Fix inventory assert that was too strong when not order-location tracking.
  • When stealing reservations, only look at “victims” with reservations at the target site. (POS-13212 continued)
  • Fix so as to not lose fill-in-price values when changing sale type on a copied sale, and similar scenarios (due to failure to copy transient line flags).
  • Fix Repair Qty tool for multi-site reservations to get the on-order reservation from stockunit.reqsite instead of stockunit.site.
  • When stealing reservations, prefer (on-hand) stock units from the same order chosen as the “victim” for replenishment via new request(s). (POS-13212 continued)
  • Fix so cancel/void/force order skips IT_OFF items.
  • Fix to skip IT_OFF lines when checking for cross-site deliveries. (POS-13212 continued)
  • Don’t allow delivering sales as a result of a payment, for sales with inventory from another site. (POS-13212 continued)
  • Best Sellers Report updated to show QOH for the specified site or all sites. (POS-13217)
  • POS-13215: Fix vertical sizing of item alt codes table to handle any number of alt codes.



  • Fix 4.4.10 upgrade step again to skip alternate name for existing constraint (“site_m1store_check”). (POS-13211)
  • Item Listing Report has a new parameter option to only show discounted items based on the item record.
  • Add authorization check and confirmation for delivering sales with inventory from another site. Prefer non-reserved stock units for non-reserved inventory changes. (POS-13212 – part 1)
  • Fix vertical sizing of item alt codes table to handle any number of alt codes. (POS-13215)
  • Best Sellers Report updated to show QOH for the specified site or all sites. (POS-13217)
  • Don’t allow delivering sales as a result of a payment, for sales with inventory from another site. (POS-13212 – continued)
  • Fix to skip IT_OFF lines when checking for cross-site deliveries. (POS-13212 – continued)
  • Fix so cancel/void/force order skips IT_OFF items.



  • Fix 4.4.10 upgrade step again to skip alternate name for existing constraint (“site_m1store_check”). (POS-13211)



  • Fixed Receipt Printer Sales Summary report to honor hide costs.
  • Enhance Repair Qty advanced maintenance tool to prompt for Item Code (blank for ALL).
  • Fix inability to set task level for “Marking Waiting Orders Delivered or Ready” (because it was renamed internally to TASK_FORCE_WAITING_READY and the form wasn’t updated).
  • More fixes for reserved stock unit handling (missed check for Waiting -> Ready on receive). (POS-13207, POS-13209)
  • Fix checkOrderFinished to check the status of *all* line items (by reworking it to happen at the end of the whole process), so a saved order isn’t prematurely marked Ready. (POS-13209)
  • Fix to skip new check for slip number (from 4.4.32) when payment action doesn’t require a slip number (e.g. adding a card on file).
  • Allow 4.x migrations from 3.5 data up through 3.5.99 just in case they are needed.



  • Add Xacct option to include (end) date in (default) export filename. Add Xacct option to include (end) date in (default) export filename.
  • When choosing file to Save, re-prompt if can’t create file or user declines to overwrite existing file.
  • Fix so XAcct settings shows Site Name not Station Name.
  • More fixes for reserved stock unit handling. (POS-13207)
  • Fix Ant build after Remote Op changes.
  • Fix for recent inventory changes, so voiding or force-delivering orders find their own stock units. (POS-13207)
    Add site to stock warning message. Reserve full amount for IR_ORDER_FORCE, even in stock warning case.
  • Check in Remote Operation design docs.
  • Minor optimizations for Remote Operation.
  • Remote Operation: Fix fir invalid SITE_LIST msg. Refresh status screen when activated.
  • Add program option (in renamed “Receiving & Vendor Invoice Screen Options”) to Allow Vendor Invoice Before Receiving.
  • Remote Operation: Clean up start-up error messages.
  • Remote Operation: Cleanly fail on all operations when not enabled.
  • Change “Real Sample” run configs to use –welcome instead of hard-coded data name.
  • Fix null pointer receiving via Locations… table. (POS-13206)
  • More fine-tuning for Remote Operation and local record merging.
  • Fix ArrayIndexOutOfBounds importing from xlsx file with empty columns.
  • Use more verbose from of exception error messages, which typically includes the exception class name.
  • Fix (loyalty club back-dating) date prompting to return correct date (rather than default date) with date-only option.
  • Fine-tuning for Remote Operation.
  • Fix leftover constraint checks from 4.1.89 or older data that prevented loyalty club points from going negative. Don’t issue coupons when recalculating points for back-dated loyalty club. Fix incorrect declaration of size of points summary field and change to display points as a floating decimal field. (POS-13183)
  • More changes to dependencies for virtual columns (like those just added), and the dependency code itself.



  • Added SITENAME and SITENUM to Purchase Requests, Pending Orders, View/edit Purchase Order, Receiving, Vendor Invoices, CC Payment Log, Sales, Voids, Orders, etc. for The Escape. Future enhancement would be to include all the potential sites such as request site vs. ship to site.
  • Fix line placement in Report Designer that was broken by POS-11536. Fix pop-up title for lines to be updated dynamically to show the line’s coordinates. (POS-13201)
  • Allow ClientState.getServerTime() to be used even when not in a Data Worker, and remove corresponding assert. (Most of the time it uses cached info, anyway, and doesn’t do data work.) (POS-13204)
  • Change ISI download to do Orders before Customers, so we can make sure to include all customers referenced by the downloaded orders. Where practical, also include any customers updated or added since the last run time, but not all providers can do that efficiently (WooCommerce, in particular). Don’t download ALL customers every time (as Magento and Woo were). Switch to v2 of the WooCommerce API. (POS-13198)
  • Remove incorrect assert from POS-13194. (POS-13203)
  • Fix to consistently remove reservations when special orders are voided or delivered (by checking TSTAT whenever a stock unit’s request reason is a reserved type), but keep the linkage to the order for historical purposes. Fix to use the current site from each stock unit rather than the order line’s inventory location when removing reservations (except for the added On-Hand reservation in the IR_ORDER_FORCE case). (POS-13194)
  • Log corrections from repair tool to log.txt like we do for implicit auto-corrects to avoid negatives.
  • Added virtual column VNAME to Item, Purchase Request, Purchase Order, Stock Unit, Vendor Invoice, Vendor Product
  • ISI: Go back to always setting SALE_PRICE since Shopify uses it for the normal Price field; not sure what this will do to Zoey/Magento/Woo.
  • Fix so changing ship-to-site on recalled PO transfers the on-order inventory.



  • Fix for missing slip number from some processed PPLOG entries that actually do have sales slips (including data fix for existing cases). Allow “Add Missing Sale” to work even with no slip number and no sale. Add double-checks to disallow payment processing w/o a slip number. (POS-13161)
  • Fix Open Item A/R Statements to include ALL payment lines for included invoices, even with multiple indirections. (POS-12883)
  • Always use bill-to customer for A/R statements. (POS-13192)
  • Always use bill-to customer for A/R statements. (POS-13192)
  • Increase max width of Reference # columns.
  • Fixes for Configuration Screen Layout to prevent extreme table widths and “jumping”. More fine-tuning of column widths for Payment Types table.
  • Fix so *interactive* order import still processes the orders.



  • Fix for WooCommerce IT_OFF case to set “In Stock”. Placeholders in all engines for setting back-order policy. Fix to not copy Order ID to Customer PO on order download.
  • ISI fixes for product variants uploads with Zoey & Magento. Fix & enable variant limit check for Shopify & Zoey.
  • Add more columns to defaults for Payment Types: “Drawer?” (for “”Open Cash Drawer?”) and “Detail?” (for “Day-End Detail?”).
  • Update installer JREs to 1.8.0_181.
  •  Added the ability to import item price levels for customer types.
  • Added item filter for deleted items but ONLY when there is no sales of that item. A bit tricky.
  • Numerous ISI fixes, mostly for Order Downloads (including printing). Increase length of Payment Type short names from 10 to 16, and prepend new “Payment Type Prefix” when downloading; refine button menu text layout accordingly; rename “Credit” to “Store Credit” and “CC” to “Credit Card”; remove redundant word-based icons from “Store Credit” and “On Account”. Apply text case formatters to ArtisanTasks forms. Change default task frequency from 60 to 15 minutes. Add Zoey use_child attributes, for variants. When creating Deposit transactions (in general), copy Sales Location from main transaction.



  • Added filter for delivered transactions.
  • Fix Loyalty Club backdating to be for date only (with time 00:00).
  • Use Eager loading of Site Records from Stock Units; proxies were causing exceptions in weird places (particularly with POs for multi-store cloud).
  • Ignore all exceptions while saving Column Layout changes; don’t even log them.
  • Fix null pointer (during migration) in PricingScheme.PricingType.getScale() for certain pricing chart types. (POS-13188)



  • Fix hang doing non-interactive import (via ArtisanTasks order download).
  • Fix ServerSetup for AWS RDS to do POS role grant as admin user.



  • Optimization: Avoid database access to get server time, once we have “alive” timestamps to compute it from locally.
  • Misc Java 8 cleanup.
  • Fix null pointer copying a sale with kit lines. Protect against enabling property changes while copy is in progress. Don’t recompute kit line cost during copy.
  • Assert that number assignment must be called from a *writable* data worker.
  • Remove overzealous assert (introduced with Pricing Chart changes) that fired when deleting a record from a record table screen.
  • Fix to not display (zero-priced) kit components or base products on pole display. Show discount on pole display when non-zero and qty is one. (POS-13174)


  • Partial performance improvement for imports.
  • Add new inventory change type, IR_XFER_RESV, to move reservations along with on-hand when transferring reserved inventory.
  • Fix Pricing Chart Line migration to zero out Fixed Price when a Markup Formula is used. (3.X overloaded it to show a sample price.)
  • Add Sales Slip Style payment type match “Any EXCEPT Credit Cards”.
  • Tweak 4.4.19 upgrade step to sort list of unbalanced transactions.
  • Fix to not change site on untracked stock units. (This was causing a constraint violation voiding a GC sale in a multi-store.) (POS-13170)
  • Tweak 4.4.19 upgrade step to copy list of unbalanced transactions to the clipboard.
  • Fix 4.4 upgrade failure in some cases with data started in 3.X, due to numblock references to duplicate datascopes. (POS-13166)
  • Fixes & refinements for kits on POs. (POS-13133)


  • Make D/L scanning more flexible to allow for scanners that send 2nd char as CR instead of LF (e.g. 2016 model DS4800s).
  • ISI: Fix to upload all (visible, online) variants if any of them change, since uploading the base product may reset the variants list. Included deleted or non-online base products if they have any visible online variants.
  • Pricing Chart Migration Fixes



  • Implement Cost-Based Pricing Charts. Add explicit Pricing Model for Sum of Kit Components (instead of basing it on MSRP pricing).
    • Honor Disabled flag in Pricing Schemes (as if no Pricing Scheme selected).
    • Require Pricing Scheme when Pricing Model is Specific Scheme.
  • Fix various table handling problems caused by BOGO changes, including addition of Payment Lines.
  • Update pole display when amount or qty changes.
  • New Label Stocks for the Specialty Tags for specific customers.


  • In migration, clip decimal fields to max value instead of “truncating on the left”.
  • Revert the Progress Monitor changes for all but Imports, since it seems to be causing problems.
  • Fix so label forms that use alternate printer use item label printer 1 if printer 2 is disabled. Protect against null pointers if label printing utilities are still called w/o an enabled printer.
  • Fix null pointer switching to “Use Item Code” Barcode Numbering Scheme.
  • Add missing setting for Next Item Code Number (in Automatic Numbering). Usability enhancements for setting corresponding scheme in Item Numbering Schemes.
  • More ISI fixes, including: protect against some null pointers, don’t generate a tender if d/l order doesn’t have any payments, log when order import starts.
  • ISI: Only download orders in “Processing” state.
  • Various refinements to payment entry in Sale Screen (Ctrl-A and/or Pay button): Fix to disable max enforcement when switching to pay all invoices. Reduce payments by the amount already paid (or credit applied) on the current sale.


  • Fix inadvertent zeroing of cost & list price (and msrp-based retail price) when pricing model changed for non-kit items.
  • Add check for out-of-balance transactions (total vs tenders) to migration.
  • Dynamically change Postal Code format to match Country field (US vs Canada vs free-format).
  • Minor message clarifications for Inventory Tracking options and ISI task logs.
  • Fix so Import File Chooser is dismissed immediately, before import starts.
  • Fix to display Progress Monitor (and handle other GUI events) during Import (and other synchronous Data Workers).
  • Internet Store Interface:
    • Fix to use product names and uniquifiers for image filenames.
    • Don’t assume Base Products are IT_OFF.
    • A number of fixes for WooCommerce:
      • Fix SKU lookup to handle spaces correctly.
      • Remove obfuscation from request fields.
      • Don’t use thumbnail if there’s a full image.
      • Partial fixes for HTTP (vs HTTPS) auth, but still not working.


  • Fix null pointer in Shopify download when there are no new or changed customer records.


  • Fixed problem with A/R Aging report.
  • Added a new database constraint check to ensure that no transactions are ever saved where the money doesn’t match the total when the transaction is not any kind of special order or layaway. This upgrade may cause challenges when upgrading to this version, especially if your data was migrated from older 3.X versions.


  • Improved import of transactions to more accurately set the sale date.
  • Fix to honor the coupon limit of zero, which means no limit. This is in the new advanced coupons feature.


  • Various Internet Store related improvements and fixes.
  • Fixed crash when setting a manual discount when there is a BOGO quantity break scheme.
  • Fix bulk-change Item Availability which was broken recently.
  • Improved Combo Box display on certain screens.

4.4.00 – NEW FEATURES in 4.4

  • Multi-Vendor
    Keep up with different vendor part numbers and cost per vendor for the same item. Specify which vendor is the primary supplier for this item.
  • Drivers License Age Verification
    Confirm that a customer is eligible to purchase a particular product based on age. (Fireworks, Alcohol, Etc.)
  • Surcharge Items
    Automatically add various charges on specific items in either a dollar amount or percentage. Used for associations or township fees, cleaning charges, service fees, or other fees that need to be added to the sale when another item is sold, especially if the fee is based on a percentage of the first item.
  • BOGO (incl. nFers)
    Buy One Get One offers and special discounting. Examples: Buy One get One Half Off, Three for 9.99.
  • Advanced Coupons (new feature)
    Get special offers only when a coupon has been used.
  • Customer Forms (including Designer)
    Great for obtaining signatures for disclaimers and legal requirements. Scan a drivers license to collect data and then print the form for the signature.
  • Reserved Receiving Notes
    Get pop-up notifications when an item is received that was on special order. The note can then be printed on a sheet printer.
  • Random Weight UPC Codes (“Deli Scales”)
    When the weight is measured on a deli scale, the clerk enters the item code and the total and weight are printed on the label. When these labels are scanned into Artisan, it loads the correct SKU and then calculates the quantity sold based on the total price.