# Routing system extensibility points for MSMQ ## Instance mapping extensibility To customize how logical endpoints are mapped to a physical instance when routing messages, use the following code in a [feature](/nservicebus/pipeline/features.md): ```cs protected override void Setup(FeatureConfigurationContext context) { var endpointInstances = context.Settings.Get(); endpointInstances.AddOrReplaceInstances("MySource", new List { new EndpointInstance("MyEndpoint").AtMachine("VM-1"), new EndpointInstance("MyEndpoint").AtMachine("VM-2") }); } ``` `sourceKey` uniquely identifies the mapping source so that it can be modified and must be unique. > [!NOTE] > The entire source will be replaced by the code above so all known instance mappings must be added. The instances collection is thread-safe. It allows registering multiple instance of a given endpoint. In case there is more than one mapping for a given logical endpoint, messages will be distributed based on the active [distribution strategy](/transports/msmq/sender-side-distribution.md#mapping-physical-endpoint-instances-message-distribution).