Error when deploying a OpenZeppelin Wizard smart contract using Remix: missing admin role

Hi, I'm new to smart contracts so I used the wizard to create a ERC20 token with several features:

  • Preminted tokens: 1000
  • Mintable
  • Burnable
  • Pausable
  • Snapshots
  • Access control: roles
  • Upgradeability: transparent

I loaded the contract in Remix and deployed it first on Javascript VM (London). My account has no tokens and no admin role. Deploying the smart contract to SmartBCH testnet displays the same behavior. I don't know where the issue comes from, as my address should be msg.sender() and is setup to admin role. Is this a problem from Remix?

EDIT: Just to add more info, the total supply is displayed as 0 and trying to get the token name returns an empty string.

This is the full code:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.2;

import "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol";
import "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20BurnableUpgradeable.sol";
import "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20SnapshotUpgradeable.sol";
import "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol";
import "@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol";
import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";

contract SmartIndex is Initializable, ERC20Upgradeable, ERC20BurnableUpgradeable, ERC20SnapshotUpgradeable, AccessControlUpgradeable, PausableUpgradeable {
    bytes32 public constant SNAPSHOT_ROLE = keccak256("SNAPSHOT_ROLE");
    bytes32 public constant PAUSER_ROLE = keccak256("PAUSER_ROLE");
    bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE");

    /// @custom:oz-upgrades-unsafe-allow constructor
    constructor() initializer {}

    function initialize() initializer public {
        __ERC20_init("SmartIndex", "SIDX");

        _setupRole(DEFAULT_ADMIN_ROLE, msg.sender);
        _setupRole(SNAPSHOT_ROLE, msg.sender);
        _setupRole(PAUSER_ROLE, msg.sender);
        _mint(msg.sender, 1000 * 10 ** decimals());
        _setupRole(MINTER_ROLE, msg.sender);

    function snapshot() public onlyRole(SNAPSHOT_ROLE) {

    function pause() public onlyRole(PAUSER_ROLE) {

    function unpause() public onlyRole(PAUSER_ROLE) {

    function mint(address to, uint256 amount) public onlyRole(MINTER_ROLE) {
        _mint(to, amount);

    function _beforeTokenTransfer(address from, address to, uint256 amount)
        override(ERC20Upgradeable, ERC20SnapshotUpgradeable)
        super._beforeTokenTransfer(from, to, amount);

Upgradeable contracts can't be deployed using Remix. You need to use OpenZeppelin Upgrades Plugins.