code: public void start() {
  
  		// Basic properties
  		this.logger.info( "Agent '" + getAgentId() + "' is about to be launched." );
  		if( Utils.isEmptyOrWhitespaces( this.ipAddress )) {
  			this.ipAddress = AgentUtils.findIpAddress( this.networkInterface );
  			this.logger.info( "IP address resolved to " + this.ipAddress );
  		}
  
  		// Create a messaging client
  		this.messagingClient = newReconfigurableClientAgent();
  		this.messagingClient.setDomain( this.domain );
  		AgentMessageProcessor messageProcessor = newMessageProcessor();
  		this.messagingClient.associateMessageProcessor( messageProcessor );
  
  		// Deal with dynamic parameters
  		reloadUserData();
  		reconfigure();
  
  		// Prepare the timer for scheduled tasks
  		TimerTask timerTask = new HeartbeatTask( this );
  		this.heartBeatTimer = new Timer( "Roboconf's Heartbeat Timer @ Agent", true );
  		this.heartBeatTimer.scheduleAtFixedRate( timerTask, Constants.HEARTBEAT_PERIOD, Constants.HEARTBEAT_PERIOD );
  
  		this.logger.info( "Agent '" + getAgentId() + "' was launched." );
  	}
docs: Starts the agent.
  <p>
  It is invoked by iPojo when an instance becomes VALID.
  </p>