VLAN translation with 6.41+?

Prior to 6.41 I found it easy to ‘translate’ VLAN’s on any RouterOS device with a simple bridge like so…

Bridge: CustomerPPP
Ports:
Ether2.301 - Uplink
Ether5.10 - CustomerA
Ether6.10 - CustomerB

Anything received on Ether5/Ether6 with VLAN 10 will have the tag stripped and instead sent out Ether2 as VLAN 301 and vice versa.
Real simple and easy to manage, we can use the same VLAN at many sites facing the customer, but then separate them on the PPPoE concentrators into different VLAN’s that indicate where in the network that customer lives. So we see i.e.

Interfaces:
Ether2.301 - Site ABC
CustomerA@pppoe.com
CustomerB@pppoe.com
Ether2.401 - Site XYZ
CustomerX@pppoe.com
CustomerY@pppoe.com

I’m told this is not the way to handle VLAN’s anymore since 6.41+, so can someone tell me the correct way to do this now? Because I don’t see any option for translation VLAN’s except on CRS series devices (we are not going to install CRS devices everywhere)

You still can translate VLANs this way even in 6.41+, there is no problem to create two /interface vlan, each on another physical interface or bridge and with different or same VLAN IDs, and make both these /interface vlan members of some other bridge. The only issue is that creating a bridge per VLAN this way, rather than using a common bridge for all VLANs, takes more resources and makes “hardware acceleration” of bridging impossible. But for your application, these disadvantages are the price to pay for the functionality you need.

The only thing you have to take care about is not to use the same interface simultaneously as a member port of a bridge and a carrier interface for IP configuration or for /interface vlan; that does not work. Each interface must have exactly one role out of (carrier interface for a VLAN and/or IP configuration and/or PPPoE configuration | port of a bridge | member of a bond | … )