Introducing an anti-corruption layer can help your solution in painless integration with a legacy system that has different semantics. This additional layer is responsible for communication between those two sides.
Such a component allows your solution to be designed with more flexibility – without the need to compromise your technology stack nor architectural decisions. To achieve that requires only a minimal set of changes in the legacy system (or none, if the legacy system doesn't need to make calls to the new system).
For instance, if your solution is based on microservices, the legacy system can just communicate with the anti-corruption layer instead of locating and reaching each microservice directly. Any translations (for example, due to outdated protocol versions) are also done in the additional layer.
Keep in mind that adding such a layer can introduce latency and has to satisfy quality attributes for your solution, for example, scalability.
...