2022.1 Release Notes
Summary
This release includes improvements to our Inventory workflow, Two-factor authentication (2FA) for Client Portal, and a TaxJar Integration. As with each release, we have included a number of usability improvements, many of which are directly inspired by the Ideas Forum on the Community.
New Features


The goal of this feature is to enable better tracking of your individual inventory products from receipt to delivery, knowing exactly where they are, where they came from, and how much they cost. In order to facilitate that, we've restructured the way we store inventory data.
Prior to this release, all inventory was grouped in one large Inventory Item container. Now your inventory will either be considered:
-
Inventory Products: These used to be your inventory items. An inventory product represents the tally of items of one kind of product at one location.
EXAMPLE This can be thought of as "the spot of the shelf I have reserved for items of this product." If you sell Lenovo ThinkPad E15 laptops and store them at your HQ Warehouse, you'll have one inventory product for those particular laptops. If you also store them in an overflow warehouse, you'd have another inventory product for that location.
-
Stocked Items: These represent an actual item, or collection of items, that is bought, sold, and moves around the system. This enables you to track where each specific item in the system came from and where it went.
EXAMPLE If you sell Lenovo ThinkPad E15 laptops and store 15 of them in your HQ warehouse, you have 15 stocked items.

As mentioned, we will now be tracking individual stocked items. These items can either be serialized or non-serialized:
-
Serialized: A stocked item that represents a single, specific item in inventory that can have a quantity of 0 or 1.
EXAMPLE A Lenovo ThinkPad E15 laptop with serial number 12345
-
Non-serialized: Items listed in groups based on when they are added or received into inventory and can have a quantity greater than 1. They are also picked "oldest first."
EXAMPLE You purchase 1 keyboard from Best Buy and 20 keyboards from Tech Data. The inventory would have two entries (one from Best Buy and one from Tech Data), but the inventory product would show a quantity of 21.
NOTE When this project is deployed, one stocked item will be created for every serial number per inventory product, or picked or delivered on a charge. One stocked item will also be created for every inventory product with a non-serialized product.
Because this feature enables you to more accurately track your inventory, we'll now be requiring more details when adding or reducing your inventory.
Receiving stocked items from purchase orders
When a purchase order is received, stocked items will be created. If the product is serialized, a separate stocked item will be created for each count of a purchase order item. If the product received is non-serialized, one stocked item will be received per purchase order item. The stocked items will be created with several fields filled in, but most importantly the following:
- Date Added
- Added By
- Serial Number (if applicable)
- Cost
- Status: Available
- Vendor Invoice Number: This will now represent the vendor invoice number of the purchase order item in this receipt (this used to be stored on the purchase order itself, but not all purchase order items on a purchase order share the same vendor invoice number).
Manually creating/editing stocked items
When an inventory product is manually created, stocked items will also be created. This means that when the quantity is increased or decreased, we much account for the impact to the related stocked item.
In order to support this, we've refactored the New Inventory Product and Edit Inventory Product pages to support recording additional details. When a product is serialized, it will appear as:
When a product is non-serialized, it will appear as:
In addition to prompting for a reason when adding new items to inventory, we will now inquire for other details like vendor, cost, serial number (if serialized), etc. The dialog will appear slightly differently for serialized versus non-serialized:
A similar dialog will appear when attempting to remove stocked items. We'll ask for the number to remove, the reason (if your system setting requires it), and the specific serial number (if the item is serialized). If the product is non-serialized, we will assume the oldest items are being removed. Again, the dialog will appear slightly differently for serialized versus non-serialized:
NOTE When a stocked item is removed, it will still exist in the system. However, it will not be considered available or on hand for selection to reserve on a quote, or available to be picked on a charge.
When you cancel receipt of a purchase order item, the corresponding stocked items will be deleted (if they are serialized). For non-serialized stocked items, we will decrease the available units by the number canceled.
Transferring stocked items
When items are transferred between locations, we have to ensure that the stocked items involved are properly updated to reflect the move. When transferring a serialized product, we will simply take the stocked item selected by serial number and change its location to the newly selected one.
For non-serialized stocked items, we will need to split the source stocked item in two, since one stocked item cannot belong to multiple locations. If there are not enough available units in a single stocked item to source from, we will move to the next oldest stocked item (and so on). When this occurs, a new stocked item will be created at the destination location for each stocked item we had to source from. This is important to ensure we are capturing different costs.
We have also improved the > Inventory > Transfers & Updates page to improve tracking. We will now track the following events (showing newly added events only):
- Purchase Order Received
- Inventory Product Creation
- Inventory Product Deletion
- Serial Number Update
- Inventory Product Field Update
The previous Transfer Note column and filter has been relabeled to Description/Transfer Note. The Update Note column has been removed because it created unnecessary complexity. We will now list the notes in the Description/Transfer Note column.
This page will also provide additional fields for filters and columns choosers as well as an export capability.
Reserving stocked items on quotes
When quoting a serialized product, you can now reserve specific serial numbers. Quoting a non-serialized product will follow FIFO logic (reserved in the order in which they are received).
You may then choose to reserve specific stocked items from amongst the available stocked items at the inventory location where the stocked item has a status of Available.
You will then use the Stocked Items Selector to choose your items.
NOTE The number of stocked items does not have to match the reserved quantity, but you won't be able to reserve more than the stocked quantity.
After your stocked items are selected, the page will be updated to reflect the serial numbers selected.
If your quote or quote item is deleted, those units will revert back to Available.
Returning stocked items via the Swap Asset Wizard
If an asset was created from a stocked item, we will now have better tracking as that item moves through the system. If that stocked item needs to be returned to inventory, most likely the Swap Asset Wizard will be used.
If you are replacing an inventory product that is serialized, a specific stocked item will need to be selected.
If you've selected to put your asset back into your inventory, you'll be asked to confirm details before doing so. If the outgoing asset is already associated to a stocked item, many fields will be filled according to the stocked item's existing data.
Since you are now selecting a serial number on this previous step, you'll then choose if you are selecting an existing inventory product or creating a new one for the outgoing asset.
IMPORTANT Previously, when selecting an inventory product to place the outgoing item into, you were allowed to select any inventory product. We will now only show inventory products that share a product with the outgoing asset in the selector.

The > Inventory > Inventory search page has been updated to now include a Stocked Items tab in addition to the Inventory Products (formerly Inventory Items) tab.
Each of these tabs will have their own set of filters and columns, in addition to export and import capabilities.
In order to prevent you from having to pass through the New Inventory Productand Edit Inventory Product pages to add inventory items, we've added the Add Stocked Items and Remove Stocked Items options to the context menu on the Inventory Products tab.
The Stocked Items tab provides a way to review/search for all of your stocked items. In addition to filtering, the drill-in grid will enable you to view exactly where and how that item came to be in inventory by viewing its associations.
The Dates Picked/Removed dialog for a non-serialized stocked item will provide details regarding when those items were picked or removed:
The Quote column for non-serialized stock items will provide details on the quote on which units are reserved for that stocked item.
The Ticket Number, Project, or Contract column for a non-serialized stocked item will allow you to view the details on which units are picked for that stocked item.

There are two new widget entities that will be available to you:
- Stocked Items
- Inventory Products
The existing Inventory widget entity has been renamed to Procurement, since that more accurately reflects its primary focus.
Stocked Items entity
This entity will enable you to track your inventory at the individual item level. Access to these widgets will depend on your Inventory security level permissions. Stocked items will be available as charts, gauges, and grids.
We have provided two new library widgets to offer a starting point:
- Aged Stocked Items (24 Months): Which stocked items have been in inventory longer than 24 months? This widget shows aging stocked items in inventory.
- Reserved Stocked Items: Which of my stocked items are currently reserved? This widget displays the number of reserved units per stocked item.
The stocked items drill-in grid will offer the same column chooser, context menu, and link options as the Stocked Items search page.
Inventory Products entity
This entity will help you manage maximum and minimum inventory product counts at a specific location. This can assist you when you need to reorder some items. Access to these widgets will depend on your inventory security level permissions.
We have provided two new library widgets to offer a starting point:
-
Products Needing Restock: What products do I need to restock? This widget shows the inventory products whose On Hand amount is below or equal to the defined Minimum.
-
Overstocked Products: What products are overstocked? This widget shows the inventory products whose On Hand amount is above the defined maximum.
Like stocked items above, the drill-in grid for inventory products will offer the same column chooser, context menu, and link options as the Inventory Products search page.

You are now able to track multiple vendor invoice numbers on a particular purchase order item. This will support use cases where a purchase order item is received over multiple shipments and therefore would be likely to have more than one invoice number.
The Vendor Invoice # field will remain on purchase orders but will now only be editable until at least one purchase order item on the purchase order has been received. If multiple vendor invoice numbers exist, they will all appear separated by commas.
NOTE When this feature is deployed, all received purchase order items will have their vendor invoice numbers set based on their purchase order's vendor invoice number. If the purchase order has no vendor invoice number, the purchase order items will not have one either.
A new page has been added to enable you to view received purchase order items by vendor invoice number. This Receipt History page is accessible by clicking on the values of the Vendor Invoice # field (when at least one purchase order item is received). If purchase order items have been received but no invoice number entered, this link will be listed as N/A (View Receipt History).
You can drill in to the individual rows to enter or modify your vendor invoice number on the Receipt Detail page.
The existing Vendor Invoice # field on the Receive or Cancel Receipt of Purchase Order pages will now refer to the vendor invoice number of the shipment being received, in addition to the vendor invoice number of the purchase order itself. Only one vendor invoice number may be associated with a single shipment.
A new system setting is available in > Admin > Commonly Used > System Settings > Inventory to require a vendor invoice number on received purchase order items when manually adding stocked items to inventory.
NOTE This setting will be disabled by default.
Usability improvements for purchase order items
Previously, if you were specifying which items to order manually on the New Inventory Productand Edit Inventory Product pages, you'd have to do this one at a time for each item. Additionally, the location would have to be updated one at a time. To assist in these workflows, we've added new options that will allow you to copy the quantity and location from one purchase order item to all others on the purchase order.
NOTE Items that are received or partially received will not be changed.

The following other locations and pages will also be impacted by this project:
- Inventory importer: The
> Admin > Features & Settings > Application-Wide (Shared) Features > Downloads > Inventory Item importer has been significantly overhauled to support these new changes. You will now be able to make changes to both inventory products and stocked items via this import. But since we require additional tracking, you will need to supply more details. You won't be able to create serialized items without supplying a serial number. The On Hand count will no longer be editable and will be removed. Instead, you will need to supply information for newly created or removed stocked item using the stocked item columns. You can also set stocked items as Removed, which will set the status to Removed (for serialized items), or reduce the available units and increase removed units (if non-serialized).
- Picking process on charges: When you are picking a serialized item on a charge, we know its exact cost, making the reporting of this item more accurate. Additionally, we will set its status to Picked. For non-serialized items, we reduce available units and reserved units by 1 and will pick the item by oldest date added. We will then update the cost of the charge to the average of the costs of all picked (or delivered) items on the charge. If that cost is different than the cost on the charge, we will provide an alert letting you know. This same alerting can occur when picking a returned item, or delivering different items than those originally selected.
- Edits to products or serial numbers of assets associated with stocked items: If an asset is associated with a stocked item, you will not be able to change the product on the Edit Asset page (this will also fail on the asset importer). Additionally, if you try to change the serial number field and save, you will be prompted that it will update the associated stocked items serial number. This is all to ensure that undocumented changes aren't made to the asset when it is installed at a customer site.
- Preventing changes to serialized status of a product: On the
> Inventory > Products > Edit Product page, if you attempt to change the product from non-serialized to serialized and at least one stocked item exists in the system for that product, you will be prompted to create a new product.
- Picking stocked items when an asset already exists: When assets are created from a charge, we associate those assets with stocked items picked on that charge. However, it is possible to unpick items on a charge and pick different items (even after the asset is created). If stocked items are unpicked, we will clear the relationship between the stocked items and assets. If a charge has at least one serialized stocked item picked on it that is not associated with an asset, we will now require you to map that item.
- Impact to LiveReports: Two new sub-categories have been added for reporting on inventory information:
- Stocked Item
- Stocked Item Activity
- In addition to the sub-categories, we've added a new system LiveReport called Inventory Valuation. This report will show the value of inventory items in stock, including picked and reserved items.
- Impact to API: A new stocked item entity has been added to the API. For details, see below.
- Impact to Data Warehouse: A new stocked item entity has been added to the data warehouse. For details, see below.

New options are available for you to require 2FA for your Client Portal customers or for those Client Portal administrators who choose to require it. Once required, Client Portal customers will be presented with a QR code to use with their authentication app.

A new setting is available in > Admin > Extensions & Integrations > Client Portal & Taskfire > Global Settings to make 2FA globally required for all of your customers. Your options will be:
- Not required
- Taskfire users only
- All users
If you'd only like to make this required for some but not all customers, you can configure this at the individual company level in > Admin > Extensions & Integrations > Client Portal & Taskfire > Manage Clients.
NOTE Your options listed here will depend on your global requirements. For example, if you have the global setting set to All Users, the setting on this page will also be All Users and will be disabled. Therefore, if you only wish to require this for a handful of users (or Taskfire only), make sure your global settings reflect that.
On this page, you will also be able to view which contacts have configured 2FA:
These requirements will also be reflected on the Client Portal tab of the Contact Detail page. We will also provide an option for you to Reset 2FA for this resource. This will effectively remove their current configuration and will allow it to be set up again.
NOTE This option is disabled if 2FA is not required for this contact.
To facilitate easier viewing of a contact's 2FA status, we've added Client Portal 2FA Configured as a column chooser option to:
- Contacts tab of an individual company
- Contact Search

If the PSA setting for Client Portal 2FA is configured to not require it, Client Portal administrators are given the option to enforce it on their own. This setting can only be set to be equally or more restrictive than the global setting. If your end Client Portal customers are able to create and manage Client Portal logins, there will be a new settings menu option for Two-factor Authentication.
This will then allow them to configure for whom it is required.
NOTE This will be disabled if required by your global settings.
Client Portal administrators who have permission to manage users will see the authentication status from the Contacts grids.
Finally, they will also be able to reset the 2FA authentication for another user if need be.

A new TaxJar integration is available in > Admin > Extensions & Integrations > Other Extensions & Tools. This offers an opportunity to utilize an automated tax calculation tool that simplifies dealing with multiple tax jurisdictions.
NOTE The feature is only available for partners in the United States and Canada. Its availability and cost will depend on your Datto agreement.
To configure the integration, you will map your Autotask Tax Category to a TaxJar Category. When needed, you can create new instances of both.
IMPORTANT You should complete the configuration setup before you enable the Use TaxJar to calculate tax option.
You will also be able to map a TaxJar category directly from > Admin > Features & Settings > Finance, Accounting, & Invoicing > Tax Regions & Categories > Categories tab.
If your company will be using the TaxJar integration, you will need to set up an internal location in each state where you will have an economic nexus. This can be configured in > Admin > Company Settings & Users > Your Organization > Internal Locations.
Once everything is mapped appropriately and you've configured the integration to calculate your taxes, the tax on your invoices will now be calculated using TaxJar. The integration will look at the location of the billing item and use TaxJar to calculate the correct tax amount, which is then returned to Autotask PSA. Since invoicing occurs asynchronously, any exceptions will be reported on the Invoice History page in > Contracts > Invoices & Adjustments > Invoice History. Additionally, an alert banner will appear, letting you know exceptions occurred.
TaxJar exception rows will have a different context menu, with options to recalculate, default to using tax region, or cancel.
NOTE The Retry using Autotask Tax Region for taxes option only makes sense if you have configured your tax table in PSA.
If you have configured your Autotask PSA database to deduct taxes for labor and charges from retainer purchases, then TaxJar will calculate taxes during approve and post. If there are any issues with that calculation, a warning will appear and you will have to resolve before you can move forward.
Finally, since TaxJar effectively replaces tax regions, we will not display a warning in Items to Invoice when a tax region does not exist.
Usability improvements
These features are general improvements to the overall Autotask PSA experience. These requests come from the Ideas Forum on the Community, are internally driven, or they arise from other means of feedback. For your convenience, they have been grouped by product area.


In a previous release, we enabled the ability to schedule a meeting or send a message through an Autotask PSA ticket. We will now be extending this functionality for contacts and resources on the following:
- Task
- Opportunity
- Asset
- Company
- Contact

Because Microsoft has limited their ability to connect your Exchange system using basic authentication to only on-premise setups, we have updated our options to connect using OAuth. This will be handled in > Admin > Extensions & Integrations > Microsoft Extensions > MS Exchange.
Since OAuth will now be the default to provide credentials to the connector, we've indicated that the basic setup is for on-premises only.
A new Use MS Graph option is available for partners who are transitioning from EWS to MS Graph to indicate when they are ready to cut over to the Graph connection.
When the MS Exchange setup is set to use on-premise, the password field will no longer be needed in your individual user settings.


Contract is now an available column chooser option for your project widget drill-in grids. This will enable you to view and open (with the proper permissions) the contract that is associated to that project.

Autotask Administrator has been added to an available filter option to the Last Activity By field in ticket widgets. This will enable you to filter out any actions that were perhaps taken by a workflow rule rather than a resource or contact.


The New Contract, Copy Contract, and Renew Contract wizards have all been refactored to provide a better user experience. Depending on the contract type selected, you will encounter up to 8 steps:
- Contract details & User-defined fields
- Revenue & billing
- Role billing rates
- Services & service bundles
- Milestones
- Exclusions: This step is new and enables you to enter your exclusions, if any exist (this will appear in the new and renew wizards)
- Configure notification
- Wizard complete
Most notably of these changes, user-defined fields will move to the first step of the wizard, where they previously were a separate tab.
We will now offer a configurable notification template for the contract-created event in > Admin > Automation > Email Notification & Surveys > Email Notifications > Notification Templates > Contracts tab.
There will be a new step in the Copy Contract Wizards that will enable you to copy the exclusion contract chain, if the source contract had one.
Renew contract wizard service/bundle adjustment
There will be a new option on the billing step of the Renew Contract wizard that will enable you to Adjust Service/Bundle Pricing By (%). When you enter a percent value here (either + or -), your services/bundles unit price will be automatically adjusted by that amount on the next step of the wizard. You can then make any further adjustments to pricing from there.

We have added several fields to both the Company and Company & Contact import templates in > Admin > Features & Settings > Application-Wide (Shared) Features > Downloads. These fields will enable you to enter the following details using your import templates:
- Enable Invoice Emailing from Autotask PSA
- Notify Company Manager
- Email Message Template
- Contacts
- External Accounting Options


We've added several more field options to the Project Phase and Task import template in > Admin > Features & Settings > Application-Wide (Shared) Features > Downloads.These field additions include the following:
- Primary Resource
- Primary Resource Role
- Task Priority
- Status
- Purchase Order Number
- Priority Order
- Client Portal Access
- Issue
- Task Type
- Start No Earlier Than
- Contacts
These additions will enable task assignments as well as obviate some need to make edits after tasks are imported.

We will now place a limit of 50 secondary resources as the number that can be added to tasks. This limit has been enacted for performance and efficiency reasons.


A new system setting is available in > Admin > Features & Settings > Application-Wide (Shared) Features > System Settings > Service Desk to specify which field you would like to use to identify your assets on tickets. This field is for display purposes only as we previously used to always use the product name. Now, your options will be the following:
- Product Name
- Serial Number
- Reference Number
- Reference Name
This will impact the data displayed in both the Asset and Additional Asset fields on New Ticket , Edit Ticket, and Ticket Detail pages. We currently have a tooltip on these pages for both of these fields that displays all of the four values listed above. It will continue to do so, but in a different order depending on which field is selected as the primary field.

We will now place a limit of 50 secondary resources as the number that can be added to tickets. This limit has been enacted for performance and efficiency reasons.


A new LiveReport category has been added for milestones. This category will enable you to report on your milestones regardless of their billing status. As with new LiveReport categories, we have added a new system report to help get you started.


A new security level option to remove access to the Community is available in > Admin > Company Settings & Users > Resources/Users (HR) > Security > Security Levels > Edit Security Level > Other tab. This will enable you to hide this feature from certain resources, if you choose. This is especially popular for those operating a co-managed environment.
NOTE This will be enabled by default to mimic current behavior.
Data Warehouse Updates
For Data Warehouse Updates, we will communicate any columns created or dropped. For minor column alterations, please view the full report found in the Developer Help or online in the Community.

wh_inventory_order_receipt
- inventory_order_receipt_id
- inventory_order_id
- vendor_invoice_number
- received_time
- received_by_resource_id
wh_inventory_receive
- inventory_order_receipt_id
wh_inventory_return_type
- inventory_return_type_id
- name
- display_name
wh_inventory_stock
- inventory_stock_id
- product_id
- initial_inventory_location_id
- inventory_receive_id
- vendor_account_id
- vendor_currency_id
- vendor_invoice_number
- vendor_currency_unit_cost
- unit_cost
- quantity
- created_time
- create_by_resource_id
wh_inventory_stock_item
- inventory_stock_item_id
- inventory_stock_id
- current_inventory_location_id
- parenty_inventory_stock_item_id
- account_id
- installed_product_id
- quote_item_id
- cost_product_id
- inventory_stock_item_status_id
- inventory_return_type_id
- serial_number
- on_hand_units
- available_units
- picked_units
- reserved_units
- delivered_units
- removed_units
- transferred_units
- return_price
- pciked_removed_time
- picked_removed_by_resource_id
wh_inventory_stock_item_status
- inventory_stock_item_status_id
- name
- display_name
API Updates
SOAP API Deprecation
IMPORTANT The SOAP API entered a limited enhancement phase in Q4 2020. Access deactivation for version 1.5 will take place in Q4 2022; version 1.6 will be deactivated in Q4 2024.
For both the Autotask PSA REST API and SOAP API, we have placed limits on simultaneous API execution threads and multithreaded latency.

InventoryProducts
- availableUnits
- backOrderQuantity
- bin
- createDateTime
- createdyByResourceID
- id
- inventoryLocationID
- onHandUnits
- pickedUnits
- productID
- quantityMaximum
- quantityMinimum
- referenceNumber
- reservedUnits
- unitsOnOrder
InventoryStockedItems
- availableUnits
- companyID
- configurationitemID
- contractChargeID
- costProductID
- createDateTime
- createdByResourceID
- currentInventoryLocationID
- deliveredUnits
- id
- inventoryProductID
- onHandUnits
- parentInventoryStockItemID
- parentsStockedItemReceivedUnits
- prickedRemovedByResourceID
- prickedRemovedDateTime
- pickedUnits
- projectChargeID
- purchaseOrderID
- purchaseOrderItemID
- purchaseOrderItemReceivingID
- quiteItemID
- removedUnits
- reservedUnits
- returnPrice
- returnTypeID
- serialNumber
- statusID
- ticketChargeID
- transferredUnits
- unitCost
- vendorID
- vendorInvoiceNumber
InventoryStockedItemsAdd
- determineCostUsing
- determineNewPriceUsing
- id
- inventoryProductID
- pricePercentage
- quantityBeingAdded
- reasonForUpdate
- returnPrice
- returnTypeID
- serialNumber
- unitCost
- vendorID
- vendorInvoiceNumber
InventoryStockedItemsRemove
- id
- inventoryStockedItemID
- inventoryProductID
- quantityBeingRemoved
- reasonForUpdate
InventoryStockedItemsTransfer
- id
- inventoryProductID
- inventoryStockedItemID
- newInventoryLocationID
- quantityBeingTransfered
- reasonForUpdate

ConfigurationItems
- productID field: If the configuration item was sourced from an InventoryStockedItems entity, its product ID will be tied to the product ID of the inventory Item and cannot be changed via the API
- serialNumber field: If the configuration item was sourced from an InventoryStockedItems entity, the serial number will come from the inventoryStockedItem. If the serial number is updated via the API, the serial number for the related inventoryStockedItem will also be updated
PurchaseOrderItemReceiving
- vendorInvoiceNumber
TaskSecondaryResources
- Tasks are now limited to a maximum of 50 secondary resources each
TicketNotes
- This entity now supports webhooks
Tickets
- This entity now supports webhooks
TicketSecondaryResources
- Tasks are now limited to a maximum of 50 secondary resources each