What’s New in Artisan POS 4.4

Change Log
Updated 11/05/2018

Click here for New major 4.4 Features.

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


  • 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.