Configuring Responder/Smart Grid
Redundant DMS Servers

Version: 10.1

Resource Center Home

This is an optional configuration.

DMS allows you to configure multiple servers to provide failover support. When a DMS server fails over, it does so seamlessly. The user will not be prompted to respond or see a warning message. DMS will just continue to function properly, but on the redundant DMS server. If you wish to implement multiple DMS servers, follow the instructions below.

All configuration for redundant DMS servers is in the Miner.Responder.DataServices.exe.config file.

  1. Browse to and open Miner.Responder.DataServices.exe.config. By default, this file is installed here: Program Files\Miner and Miner\Responder\Server.
  2. Look for the following bit of XML:
    Copy Code
        <client>
          <endpoint address="http://172.18.226.179:8080/DynamicDataService"
              binding="basicHttpBinding" bindingConfiguration="WSHttpBinding_IDynamicDataService"
              contract="IDynamicDataService" name="WSHttpBinding_IDynamicDataService">
            <identity>
              <userPrincipalName value="jonf@miner.com" />
            </identity>
          </endpoint>
        </client>
    
  3. The <endpoing> tags represent your DMS server. To add another DMS server, copy the <endpoint> section and paste it between the <client> tags.
  4. Set the address attribute in the copied section to the IP address of your redundant DMS server.
  5. Assign a unique name in the Name attribute. This name must be unique within the <client> tags and can be any name you choose. When you're finished the section may look something like the example below. 
    Copy Code
        <client>
          <endpoint address="http://172.18.226.179:8080/DynamicDataService"
              binding="basicHttpBinding" bindingConfiguration="WSHttpBinding_IDynamicDataService"
              contract="IDynamicDataService" name="DMSServer">
            <identity>
              <userPrincipalName value="jonf@miner.com" />
            </identity>
          </endpoint>
          <endpoint address="http://172.18.226.123:8080/DynamicDataService"
              binding="basicHttpBinding" bindingConfiguration="WSHttpBinding_IDynamicDataService"
              contract="IDynamicDataService" name="RedundantDMSServer">
            <identity>
              <userPrincipalName value="jonf@miner.com" />
            </identity>
          </endpoint>
        </client>
    
  6. Next, look for the following XML:
    Copy Code
      <RTDDMSCanceledRequest>
        <add key="producer" value="Miner.Smartgrid.Producers.ResponderMultiFormatProducer, Miner.Smartgrid, Version=1.0.0.0, Culture=neutral, PublicKeyToken=196beceb052ed5dc"/>
        <add key="consumer" value="Miner.Smartgrid.Consumers.DelayerConsumer, Miner.Smartgrid, Version=1.0.0.0, Culture=neutral, PublicKeyToken=196beceb052ed5dc"/>
        <add key="queue" value="Miner.Smartgrid.Queues.ThreadSafeMemoryQueue, Miner.Smartgrid, Version=1.0.0.0, Culture=neutral, PublicKeyToken=196beceb052ed5dc"/>
        <add key="pulseTime" value="300"/>
        <add key="mapper" value="Miner.Smartgrid.Mappers.SmartGridRelationshipMapper, Miner.Smartgrid, Version=1.0.0.0, Culture=neutral, PublicKeyToken=196beceb052ed5dc"/>
      </RTDDMSCanceledRequest>
      <RTDDMSCanceledRequest.Miner.Smartgrid.Producers.ResponderMultiFormatProducer.1>
        <add key="dummy" value=""/>
      </RTDDMSCanceledRequest.Miner.Smartgrid.Producers.ResponderMultiFormatProducer.1>
      <RTDDMSCanceledRequest.Miner.Smartgrid.Consumers.DelayerConsumer.1>
        <add key="externalSystem" value="DMS"/>
        <add key="delayTime" value="10000"/>
        <add key="child" value="Miner.Smartgrid.Consumers.DMSCommandRequest, Miner.Smartgrid, Version=1.0.0.0, Culture=neutral, PublicKeyToken=196beceb052ed5dc"/>
      </RTDDMSCanceledRequest.Miner.Smartgrid.Consumers.DelayerConsumer.1>
      <RTDDMSCanceledRequest.Miner.Smartgrid.Consumers.DMSCommandRequest.2>
        <add key="externalSystem" value="DMS"/>
      </RTDDMSCanceledRequest.Miner.Smartgrid.Consumers.DMSCommandRequest.2>
    
      <RTDDMSRequest>
        <add key="producer" value="Miner.Smartgrid.Producers.ResponderMultiFormatProducer, Miner.Smartgrid, Version=1.0.0.0, Culture=neutral, PublicKeyToken=196beceb052ed5dc"/>
        <add key="consumer" value="Miner.Smartgrid.Consumers.DMSCommandRequest, Miner.Smartgrid, Version=1.0.0.0, Culture=neutral, PublicKeyToken=196beceb052ed5dc"/>
        <add key="queue" value="Miner.Smartgrid.Queues.ThreadSafeMemoryQueue, Miner.Smartgrid, Version=1.0.0.0, Culture=neutral, PublicKeyToken=196beceb052ed5dc"/>
        <add key="pulseTime" value="300"/>
        <add key="mapper" value="Miner.Smartgrid.Mappers.SmartGridRelationshipMapper, Miner.Smartgrid, Version=1.0.0.0, Culture=neutral, PublicKeyToken=196beceb052ed5dc"/>
      </RTDDMSRequest>
    
  7. In the above section you will need to change all instances of DMSCommandRequest to DMSMultipleEndPointCommandRequest. This lets DMS know that there are multiple servers.
  8. You will also need to add the following lines to the XML, one for each DMS server. Add these to the <RTDDMSCanceledRequest.Miner.Smartgrid.Consumers.DMSMultipleEndPointCommandRequest.2> and <RTDDMSRequest.Miner.Smartgrid.Consumers.DMSMultipleEndPointCommandRequest.1> tags. The example shows only two, but DMS supports any number.
    Copy Code
        <add key="dmsWSConfiguration1" value="DMSServer"/>
        <add key="dmsWSConfiguration2" value="RedundantDMSServer"/>
    
  9. Set the Value attributes above to match the Name attributes assigned in step 6. The finished XML will look something like the example below.
    Copy Code
      <RTDDMSCanceledRequest>
        <add key="producer" value="Miner.Smartgrid.Producers.ResponderMultiFormatProducer, Miner.Smartgrid, Version=1.0.0.0, Culture=neutral, PublicKeyToken=196beceb052ed5dc"/>
        <add key="consumer" value="Miner.Smartgrid.Consumers.DelayerConsumer, Miner.Smartgrid, Version=1.0.0.0, Culture=neutral, PublicKeyToken=196beceb052ed5dc"/>
        <add key="queue" value="Miner.Smartgrid.Queues.ThreadSafeMemoryQueue, Miner.Smartgrid, Version=1.0.0.0, Culture=neutral, PublicKeyToken=196beceb052ed5dc"/>
        <add key="pulseTime" value="300"/>
        <add key="mapper" value="Miner.Smartgrid.Mappers.SmartGridRelationshipMapper, Miner.Smartgrid, Version=1.0.0.0, Culture=neutral, PublicKeyToken=196beceb052ed5dc"/>
      </RTDDMSCanceledRequest>
      <RTDDMSCanceledRequest.Miner.Smartgrid.Producers.ResponderMultiFormatProducer.1>
        <add key="dummy" value=""/>
      </RTDDMSCanceledRequest.Miner.Smartgrid.Producers.ResponderMultiFormatProducer.1>
      <RTDDMSCanceledRequest.Miner.Smartgrid.Consumers.DelayerConsumer.1>
        <add key="externalSystem" value="DMS"/>
        <add key="delayTime" value="10000"/>
        <add key="child" value="Miner.Smartgrid.Consumers.DMSMultipleEndPointCommandRequest, Miner.Smartgrid, Version=1.0.0.0, Culture=neutral, PublicKeyToken=196beceb052ed5dc"/>
      </RTDDMSCanceledRequest.Miner.Smartgrid.Consumers.DelayerConsumer.1>
      <RTDDMSCanceledRequest.Miner.Smartgrid.Consumers.DMSMultipleEndPointCommandRequest.2>
        <add key="externalSystem" value="DMS"/>
        <add key="dmsWSConfiguration1" value="DMSServer"/>
        <add key="dmsWSConfiguration2" value="RedundantDMSServer"/>
      </RTDDMSCanceledRequest.Miner.Smartgrid.Consumers.DMSMultipleEndPointCommandRequest.2>
    
      <RTDDMSRequest>
        <add key="producer" value="Miner.Smartgrid.Producers.ResponderMultiFormatProducer, Miner.Smartgrid, Version=1.0.0.0, Culture=neutral, PublicKeyToken=196beceb052ed5dc"/>
        <add key="consumer" value="Miner.Smartgrid.Consumers.DMSMultipleEndPointCommandRequest, Miner.Smartgrid, Version=1.0.0.0, Culture=neutral, PublicKeyToken=196beceb052ed5dc"/>
        <add key="queue" value="Miner.Smartgrid.Queues.ThreadSafeMemoryQueue, Miner.Smartgrid, Version=1.0.0.0, Culture=neutral, PublicKeyToken=196beceb052ed5dc"/>
        <add key="pulseTime" value="300"/>
        <add key="mapper" value="Miner.Smartgrid.Mappers.SmartGridRelationshipMapper, Miner.Smartgrid, Version=1.0.0.0, Culture=neutral, PublicKeyToken=196beceb052ed5dc"/>
      </RTDDMSRequest>
      <RTDDMSRequest.Miner.Smartgrid.Producers.ResponderMultiFormatProducer.1>
        <add key="dummy" value=""/>
      </RTDDMSRequest.Miner.Smartgrid.Producers.ResponderMultiFormatProducer.1>
      <RTDDMSRequest.Miner.Smartgrid.Consumers.DMSMultipleEndPointCommandRequest.1>
        <add key="externalSystem" value="DMS"/>
        <add key="dmsWSConfiguration1" value="DMSServer"/>
        <add key="dmsWSConfiguration2" value="RedundantDMSServer"/>
      </RTDDMSRequest.Miner.Smartgrid.Consumers.DMSMultipleEndPointCommandRequest.1>
    
  10. Save and close Miner.Responder.DataServices.exe.config.

Send Comment to documentation@schneider-electric.com