There is a token which already has holders and a smart contract which now should be updated. No other possibilities to replace a contract like proxy has been added, so I need to deploy a new version. Please advice is there any chance to link a new contract to the old token and not to loose token holder and keep token name, symbol etc.
As you have already a smart contract with some token holders, but the nature of smart contract cannot be updated once you deploy it.
Now one thing you can do is that, deploy a new smart contract with the required updated features.
1. Import the addresses of all existing token holders and the amount they had at the vary time of instance.
2. Airdrop the new tokens to the addresses with the specific previous amount.
Once a contract is in the blockchain, it is final and cannot be changed. Certain parameters, of course, can be changed if they are allowed to change via the original code.
One method of updating contracts is to use a versioning system. For example, you could have an entryway contract that just forwards all calls to the most recent version of the contract, as defined by an updatable address parameter. You could also use a name registry, and update that to point to the most recent contract version.