docs: public synchronized IChannelConsumer activateChannelConsumer() throws ServiceGroundingException
      {
          if (null == this.controlChannelConsumer)
          {
              this.controlChannelConsumer = this.newChannelConsumer();
              this.controlChannelConsumer.addClientCallback(new IAsyncMessageClient()
              {
  
                  @Override
                  public void receiveMessage(IMessage msg) throws ModelException
                  {
                      if (msg instanceof FunctionalityExecMessage)
                      {
  
                          BSDFLogger.getLogger().info(
                                  "Process received FunctionalityExecMessage message: "
                                  + msg.toString()
                                  + " , callback from: "
                                  + AsyncMessageServiceGrounding.this.toString());
  
                          final FunctionalityExecMessage feMsg = (FunctionalityExecMessage) msg;
  
                          AbstractFunctionalityGrounding funGrounding
                                  = AsyncMessageServiceGrounding.this.getFunctionalityGrounding(feMsg.getFunctionalityName());
                          funGrounding.getProviderChannelFor(
                                          feMsg.getFunctionalityName(),
                                          feMsg.getClientName(),
                                          feMsg.getConversationId());
  
                          AsyncMessageServiceGrounding.this.
                                  getServiceDescription().executeMultipleResultFunctionalityAsyncronously(
                                          feMsg.getFunctionalityName(),
                                          feMsg.values(),
                                          new IAsyncMessageClient()
                                          {
  
                                              // this callback handles the received results and notifications
                                              @Override
                                              public void receiveMessage(IMessage msg) throws ModelException
                                              {
                                                  if (msg instanceof FunctionalityResultMessage)
                                                  {
  
                                                      BSDFLogger.getLogger().info(
                                                              "Process received FunctionalityResultMessage message: "
                                                              + msg.toString()
                                                              + " , callback from: "
                                                              + AsyncMessageServiceGrounding.this.toString());
  
                                                      FunctionalityResultMessage frMsg = (FunctionalityResultMessage) msg;
                                                      AbstractFunctionalityGrounding funGrounding
                                                      = AsyncMessageServiceGrounding.this.getFunctionalityGrounding(frMsg.getFunctionalityName());
                                                      IChannelProducer providerChannel
                                                      = funGrounding.getProviderChannelFor(
                                                              feMsg.getFunctionalityName(),
                                                              feMsg.getClientName(),
                                                              feMsg.getConversationId());
                                                      frMsg.setConversationId(feMsg.getConversationId());
                                                      providerChannel.send(frMsg);
                                                  }
                                              }
  
                                              @Override
                                              public String getName()
                                              {
                                                  return feMsg.getClientName();
                                              }
                                          });
                      }
                  }
  
                  @Override
                  public String getName()
                  {
                      return "Message execution client for " + AsyncMessageServiceGrounding.this.toString();
                  }
              });
          }
          return this.controlChannelConsumer;
      }