Program: 160515
Project: 160515
Buggy source:
@Override public void register(SInternalServicePluginConfiguration internalServicePluginConfiguration,PluginConfiguration pluginConfiguration){
  ServiceDescriptor serviceDescriptor=StoreFactory.eINSTANCE.createServiceDescriptor();
  serviceDescriptor.setProviderName("String_Node_Str");
  serviceDescriptor.setIdentifier(getClass().getName());
  serviceDescriptor.setName("String_Node_Str");
  serviceDescriptor.setDescription("String_Node_Str");
  serviceDescriptor.setNotificationProtocol(AccessMethod.INTERNAL);
  serviceDescriptor.setTrigger(Trigger.NEW_EXTENDED_DATA);
  registerNewExtendedDataOnRevisionHandler(serviceDescriptor,new NewExtendedDataOnRevisionHandler(){
    @Override public void newExtendedDataOnRevision(    BimServerClientInterface bimServerClientInterface,    long poid,    long roid,    long edid,    String userToken,    long soid,    SObjectType settings){
      try {
        Date startDate=new Date();
        Long topicId=bimServerClientInterface.getRegistry().registerProgressOnRevisionTopic(SProgressTopicType.RUNNING_SERVICE,poid,roid,"String_Node_Str");
        SLongActionState state=new SLongActionState();
        state.setTitle("String_Node_Str");
        state.setState(SActionState.STARTED);
        state.setProgress(-1);
        state.setStart(startDate);
        bimServerClientInterface.getRegistry().updateProgressTopic(topicId,state);
        for (int i=0; i < 100; i++) {
          try {
            Thread.sleep(200);
          }
 catch (          InterruptedException e) {
            LOGGER.error("String_Node_Str",e);
          }
        }
        state=new SLongActionState();
        state.setProgress(100);
        state.setTitle("String_Node_Str");
        state.setState(SActionState.FINISHED);
        state.setStart(startDate);
        state.setEnd(new Date());
        bimServerClientInterface.getRegistry().updateProgressTopic(topicId,state);
        bimServerClientInterface.getRegistry().unregisterProgressTopic(topicId);
      }
 catch (      PublicInterfaceNotFoundException e) {
        LOGGER.error("String_Node_Str",e);
      }
catch (      UserException e) {
        LOGGER.error("String_Node_Str",e);
      }
catch (      ServerException e) {
        LOGGER.error("String_Node_Str",e);
      }
    }
  }
);
}

Fixed version (ground truth):
@Override public void register(SInternalServicePluginConfiguration internalServicePluginConfiguration,PluginConfiguration pluginConfiguration){
  ServiceDescriptor serviceDescriptor=StoreFactory.eINSTANCE.createServiceDescriptor();
  serviceDescriptor.setProviderName("String_Node_Str");
  serviceDescriptor.setIdentifier("String_Node_Str" + internalServicePluginConfiguration.getOid());
  serviceDescriptor.setName("String_Node_Str");
  serviceDescriptor.setDescription("String_Node_Str");
  serviceDescriptor.setNotificationProtocol(AccessMethod.INTERNAL);
  serviceDescriptor.setTrigger(Trigger.NEW_EXTENDED_DATA);
  registerNewExtendedDataOnRevisionHandler(serviceDescriptor,new NewExtendedDataOnRevisionHandler(){
    @Override public void newExtendedDataOnRevision(    BimServerClientInterface bimServerClientInterface,    long poid,    long roid,    long edid,    String userToken,    long soid,    SObjectType settings){
      try {
        Date startDate=new Date();
        Long topicId=bimServerClientInterface.getRegistry().registerProgressOnRevisionTopic(SProgressTopicType.RUNNING_SERVICE,poid,roid,"String_Node_Str");
        SLongActionState state=new SLongActionState();
        state.setTitle("String_Node_Str");
        state.setState(SActionState.STARTED);
        state.setProgress(-1);
        state.setStart(startDate);
        bimServerClientInterface.getRegistry().updateProgressTopic(topicId,state);
        for (int i=0; i < 100; i++) {
          try {
            Thread.sleep(200);
          }
 catch (          InterruptedException e) {
            LOGGER.error("String_Node_Str",e);
          }
        }
        state=new SLongActionState();
        state.setProgress(100);
        state.setTitle("String_Node_Str");
        state.setState(SActionState.FINISHED);
        state.setStart(startDate);
        state.setEnd(new Date());
        bimServerClientInterface.getRegistry().updateProgressTopic(topicId,state);
        bimServerClientInterface.getRegistry().unregisterProgressTopic(topicId);
      }
 catch (      PublicInterfaceNotFoundException e) {
        LOGGER.error("String_Node_Str",e);
      }
catch (      UserException e) {
        LOGGER.error("String_Node_Str",e);
      }
catch (      ServerException e) {
        LOGGER.error("String_Node_Str",e);
      }
    }
  }
);
}