While most of the additional functionality the old account system had over the label system were irrelevant, there is one critical functionality that no longer seems to be possible with labels - specifically, the ability to request a list of transactions (TXID + amount) that pay to addresses with a given account/label. As per the release notes for 0.17.0. the _listtransaction_ method was changed as follows;

> The account named parameter has been renamed to dummy. If provided, the dummy parameter must be set to the string *, unless running with the -deprecatedrpc=accounts argument (in which case functionality is unchanged).

_getreceivedbylabel_ and _getreceivedbyaddress_ only returns the balance, while _listreceivedbylabel_ and _listreceivedbyaddress_ do not actually filter; additionally, the former does not list transactions at all, while the latter does not include the amounts per TXID. While you could use _getaddressesbylabel_ to iterate over addresses, there is no corresponding method to get the TXIDs and amounts from this list of addresses. None of these can therefore be used as a direct replacement for this method.

The only way I can see to get anything resembling the old functionality with the API changes is to dump the entire transaction history with _listreceivedbyaddress_, filter the result by label manually, then use _gettransaction_ on each listed TXID. This is both very fiddly and very inefficient, and likely impossible when you go past a certain number of lifetime transactions.

Am I missing something here, or will it really no longer possible be to iterate over transactions received by account/label? If so, this basically means that many applications will no longer be usable with releases starting from Bitcoin Core 0.18.
if (pos >= int(tx.vout.size()))
            throw JSONRPCError(RPC_INVALID_PARAMETER, strprintf("Invalid parameter, position too large: %d", pos));
        setSubtractFeeFromOutputs.insert(pos);
    }
    std::string strFailReason;
    if (!pwallet->FundTransaction(tx, fee_out, change_position, strFailReason, lockUnspents, setSubtractFeeFromOutputs, coinControl)) {
        throw JSONRPCError(RPC_WALLET_ERROR, strFailReason);
    }
}
static UniValue fundrawtransaction(const JSONRPCRequest& request)
{
    std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
    CWallet* const pwallet = wallet.get();
    if (!EnsureWalletIsAvailable(pwallet, request.fHelp)) {
        return NullUniValue;
    }
    if (request.fHelp || request.params.size() < 1 || request.params.size() > 3)
        throw std::runtime_error(
                            "fundrawtransaction \"hexstring\" ( options iswitness )\n"
                            "\nAdd inputs to a transaction until it has enough in value to meet its out value.\n"
                            "This will not modify existing inputs, and will add at most one change output to the outputs.\n"
                            "No existing outputs will be modified unless \"subtractFeeFromOutputs\" is specified.\n"
                            "Note that inputs which were signed may need to be resigned after completion since in/outputs have been added.\n"
                            "The inputs added will not be signed, use signrawtransaction for that.\n"
                            "Note that all existing inputs must have their previous output transaction be in the wallet.\n"
                            "Note that all inputs selected must be of standard form and P2SH scripts must be\n"
                            "in the wallet using importaddress or addmultisigaddress (to calculate fees).\n"
                            "You can see whether this is the case by checking the \"solvable\" field in the listunspent output.\n"
                            "Only pay-to-pubkey, multisig, and P2SH versions thereof are currently supported for watch-only\n"
                            "\nArguments:\n"