Download the PHP package magepsycho/magento2-async-bulk-operations-ui without Composer

On this page you can find all versions of the php package magepsycho/magento2-async-bulk-operations-ui. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package magento2-async-bulk-operations-ui

# Magento 2 Async Bulk Operations UI ![Magento 2 Async Bulk Operations UI](https://i.imgur.com/d8QEHRb.png)
[![Packagist Version](https://img.shields.io/github/v/tag/MagePsycho/magento2-async-bulk-operations-ui?logo=packagist&sort=semver&label=packagist&style=for-the-badge)](https://packagist.org/packages/magepsycho/magento2-async-bulk-operations-ui) [![Packagist Downloads](https://img.shields.io/packagist/dt/magepsycho/magento2-async-bulk-operations-ui.svg?logo=packagist&style=for-the-badge)](https://packagist.org/packages/magepsycho/magento2-async-bulk-operations-ui/stats) ![Supported Magento Versions](https://img.shields.io/badge/magento-%202.4-brightgreen.svg?logo=magento&longCache=true&style=for-the-badge) ![License](https://img.shields.io/badge/license-OSL--3.0-green?color=%23234&style=for-the-badge)

Overview

Magento 2 Async Bulk Operations UI extension gives you a complete admin view of everything Magento_AsynchronousOperations is doing in your store.

Magento Open Source does ship a Bulk Actions grid, but it only shows bulks created by the admin who is logged in, reports a bulk as failed the moment one operation fails, and offers no counts, no progress and no aggregate view. This extension replaces that narrow window with two full grids and a status dashboard — so "did the import finish", "which topic keeps failing" and "what is still queued" are answerable at a glance.

Key Features

Feature Highlights

Every Bulk, Not Just Yours

Core grid This extension
Only bulks owned by the logged-in admin (user_id = <you>), plus every integration bulk Every bulk, whichever admin, integration or cron created it
Status = MAX(status) over the operations, so one rejected operation reports the whole bulk as failed while others are still running Status derived from counts: not started / in progress / finished successfully / finished with failure
No counts, no progress Complete / failed / open counts and a progress percentage per bulk
Operations only visible per bulk, in a modal Dedicated operations log across every bulk, filterable by topic, status, error code
No aggregate view Dashboard with KPI tiles, per-day stacked bars and two status doughnuts

Pages

Menu Route Contents
System > Action Logs > Async Bulk Operations magepsycho_asyncoperationsui/bulk/index Dashboard + bulk grid
"Operations Log" button on the bulk grid magepsycho_asyncoperationsui/operation/index Dashboard + operation grid
"View" row action magepsycho_asyncoperationsui/bulk/view/uuid/<uuid> Bulk summary + its operations

Only the bulk grid has a menu entry. The operations log is a diagnostic view of the same tables — topic, error code and result message exist only per operation, so it answers questions the bulk grid structurally cannot ("which topic keeps failing", "everything that failed with this message, across all bulks") — but it is not a second daily destination, so it hangs off the grid.

Row actions: View, Retry Failed, Delete. Both state-changing actions post and are confirm-gated. On the operation grids, View Payload opens the request payload and response in a modal.

Dashboard

Rendered above the grid in every layout, drawn with the Chart.js 4.4 bundled in lib/web/chartjs.

The first payload is embedded in the page; changing the period re-fetches magepsycho_asyncoperationsui/chart/data as JSON.

Days are taken from the parent bulk's start_time, not magento_operation.started_at, which stays null until a consumer picks the operation up — open operations would otherwise have no date. Timestamps come straight from the database and are not converted to the admin locale timezone.

Bulk Details

Every bulk opens onto its own page: the summary counts, its operations with topic, status, error code and result message, and the two state-changing actions.

Payload Inspector

The View Payload action on any operation opens the request payload — pretty-printed and syntax-highlighted — next to the stored response. When an operation failed before returning a body, that is said in words rather than shown as an empty box.

This is the detail core stores and never surfaces: without it, "Invalid product data" is the whole story — with it, you can see which SKU carried the bad attribute set. The request body is unwrapped from the operation envelope, where Magento keeps it JSON-encoded twice inside meta_information.

An empty pane is normal and says so: the consumer clears serialized_data once an operation completes, and result_serialized_data only ever holds the body of a successful synchronous call.

Safe Retry

Retry collects the distinct error codes of the bulk's failed operations and hands them to BulkManagement::retryBulk() — the same thing as ticking every row in the core retry modal. Failed operations stored without an error code cannot be targeted by retryBulk(); they are counted and reported in a notice rather than silently ignored.

Core caveat, worked around here. retryBulk() reopens the operation rows and commits, then publishes. For async.* API topics the publish step throws —

— because the stored payload is not in the shape the message encoder expects on re-publish. Core leaves the operations Open with nothing in the queue, so the bulk reads as In Progress forever. This extension snapshots the affected rows first and restores them if publishing throws, so a failed retry is a no-op with a clear error message. Retry of non-async.* topics is unaffected.

Access Control

ACL resources under System:

The core grid restricts rows by owner; this one does not, so the ACL resources are the only gate — grant them accordingly.

🛠️ Installation

1 Using Composer (Preferred)

2 Using Modman

3 Using Zip File

After installation by either means, activate the extension with following steps

  1. Enable the module

  2. Flush the store cache

  3. Deploy static content - in Production mode only

  4. Go to Admin > SYSTEM > Action Logs > Async Bulk Operations

The extension creates no tables of its own — it reads magento_bulk, magento_operation and admin_user.

Configuration

Stores > Configuration > MagePsycho > Async Bulk Operations

Setting Default Purpose
Show Charts Above Grid Yes Hides the KPI tiles and charts when only the grids are wanted
Default Chart Period 7 days Period preselected in the "Operations per day" chart

Developer Notes

Grid collections are registered globally, on purpose

etc/di.xml — not etc/adminhtml/di.xml — registers the grid collections on Magento\Framework\View\Element\UiComponent\DataProvider\CollectionFactory::$collections. Magento_AsynchronousOperations registers its own entries on that same argument in its global etc/di.xml, and an area-scoped array argument replaces the global array rather than merging into it. Declaring these in etc/adminhtml/di.xml unregisters the core handles and breaks the core Bulk Actions page with:

Keep any future data-source registration in the global file.

The admin menu parent is chosen at runtime

etc/adminhtml/menu.xml declares the item under Magento_AsynchronousOperations::system_magento_logging, the "Action Logs" node of Magento Open Source. Adobe Commerce removes that node in Magento_Logging and declares Magento_Logging::system_magento_logging instead, and Magento\Backend\Model\Menu\Builder::getResult() skips every child of a removed parent — which is why the item was invisible on Commerce (#1).

The parent cannot be selected in XML: menu.xml is edition-agnostic, and naming the Commerce node there throws OutOfRangeException on Open Source, taking down the whole admin menu (dependsOnModule does not prevent it — that flag is only read later, by Menu\Item::isDisabled()). So Plugin\Menu\ParentFallbackPlugin swaps the parent on the merged menu config, on menu-cache miss, when the declared one did not survive the merge.

Performance

The bulk grid derives its counts with correlated sub-selects against magento_operation, which is indexed on bulk_uuid. Fine for the page sizes of an admin grid; on installs with millions of operation rows, prefer filtering the grid before sorting on a derived column.

Demo data (development only)

Static analysis

dev/ is excluded from both: it is a standalone CLI script that bootstraps Magento itself, which the Magento2 sniffs and phpstan rightly reject as module code.

Changelog

Version 1.0.1 (2026-08-12)

Version 1.0.0 (2026-08-07)

Authors

Contributors

Contributors

To Contribute

Any contribution to the development of Magento 2 Async Bulk Operations UI is highly welcome.
The best possibility to provide any code is to open a pull request on GitHub.

Need Support?

If you encounter any problems or bugs, please create an issue on GitHub.

Please visit our store for more FREE / paid extensions OR contact us for customization / development services.


All versions of magento2-async-bulk-operations-ui with dependencies

PHP Build Version
Package Version
No informations.
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package magepsycho/magento2-async-bulk-operations-ui contains the following files

Loading the files please wait ...