Try this way: public function __construct( ..... \Magento\Framework\App\Action\Context $context \Magento\Catalog\Api\ProductRepositoryInterface $productRepositoryInterface, \Magento\Catalog\Model\ResourceModel\Product\Collection $productCollection ) { ...... $this->productRepository = $productRepositoryInterface; $this->productCollection = $productCollection; parent::__construct($context); } public function execute(){ $items = $this->productCollection->getItems(); foreach($items as $item){ $productId = $item->getEntityId(); $product = $this->productRepository->getById($productId); $product->setStatus(\Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_DISABLED); $product->setVisibility(\Magento\Catalog\Model\Product\Visibility::VISIBILITY_BOTH); $this->productRepository->save($product); } echo 'finish'; }