@Override
  @Transactional
  public void setVersion(String version) throws AmbariException {
    HostComponentStateEntity stateEntity = getStateEntity();
    if (stateEntity != null) {
      stateEntity.setVersion(version);
      stateEntity = hostComponentStateDAO.merge(stateEntity);

      ServiceComponentHostRequest serviceComponentHostRequest = new ServiceComponentHostRequest(
          serviceComponent.getClusterName(), serviceComponent.getServiceName(),
          serviceComponent.getName(), hostName, getDesiredState().name());

      TopologyUpdateEvent updateEvent = controller.get().getAddedComponentsTopologyEvent(
          Collections.singleton(serviceComponentHostRequest));

      m_topologyHolder.get().updateData(updateEvent);
    } else {
      LOG.warn("Setting a member on an entity object that may have been "
          + "previously deleted, serviceName = " + getServiceName() + ", " + "componentName = "
          + getServiceComponentName() + ", " + "hostName = " + getHostName());
    }
  }
The {@link AlertDefinitionCommandTransition} is used to capture the
transition from {@link State#INSTALLING} to {@link State#INSTALLED} so that
the host affected will have new {@link AlertDefinitionCommand}s pushed to
it.
ambari-server/src/main/java/org/apache/ambari/server/state/svccomphost/ServiceComponentHostImpl.java