I am aware of the data loss caused by deleting the first N blocks. But I am curious to know whether such a task is possible or not. If so, how to practically implement it?
With blockchains, you can basically do anything with a hard fork. In the case of private blockchains, you will have a much easier time getting consensus for a hard fork, perhaps as easy as the authority running the blockchain dictating that everyone must accept an upgrade.
The genesis block is hard-coded into the software. To re-assign a later block to be the new genesis block, you would need to hard-code that block into a newer version of the software. This will only be recognized as valid by nodes running the newer version of the software. Assuming gaining consensus isn't an issue, this is possible.
Another thing to be concerned with is block height, and all calculations based on it. It's easy to modify the client to start counting at N+1, but this also may need to be taken into consideration when calculations are made. This will effect things such as difficulty targets and halvings. If you modify all relevant code to take this into account, you should be able to keep things working correctly.