If you need more information about the application and what's going on in the application, you should add an event listener. The application sends events in different situations:

public void beforeSave(ProjX pApplication);
public void afterSave(ProjX pApplication);
 
public void beforeCommit(ProjX pApplication);
public void afterCommit(ProjX pApplication);
 
public void beforeRollback(ProjX pApplication);
public void afterRollback(ProjX pApplication);
 
public void beforeReload(ProjX pApplication);
public void afterReload(ProjX pApplication);
 
public void beforeUndo(ProjX pApplication);
public void afterUndo(ProjX pApplication);
 
public void beforeRedo(ProjX pApplication);
public void afterRedo(ProjX pApplication);
 
public void openContainer(ProjX pApplication, IContainer pContainer, IContent pContent);
 
public void vetoOpenWorkScreen(WorkScreenEvent pEvent);
public void beforeOpenWorkScreen(WorkScreenEvent pEvent);
public void afterOpenWorkScreen(WorkScreenEvent pEvent);
public void openWorkScreenException(WorkScreenExceptionEvent pEvent);
 
public void beforeCloseWorkScreen(WorkScreenEvent pEvent);
public void afterCloseWorkScreen(WorkScreenEvent pEvent);
 
public void beforeDestroyWorkScreen(WorkScreenEvent pEvent);
public void afterDestroyWorkScreen(WorkScreenEvent pEvent);
 
public void beforeConfigureMenu(ProjX pApplication, Menu pMenu);
public void afterConfigureMenu(ProjX pApplication, Menu pMenu);
 
public void beforeTabMode(ProjX pApplication, boolean pTabMode);
public void afterTabMode(ProjX pApplication, boolean pTabMode);
 
public void beforeOpenError(ProjX pApplication, Error pError);
public void afterCloseError(ProjX pApplication);
 
public void autoLoginException(ProjX pApplication, MasterConnection pConnection, java.lang.Throwable pThrowable);
public void beforeLogin(ProjX pApplication);
public void beforeLogout(ProjX pApplication);
 
public void beforeNotifyVisible(ProjX pApplication);
public void beforeNotifyVisible(ProjX pApplication);
 
public void updateLanguage(ProjX pApplication);
 
public void beforeOpenConnection(ProjX pApplication, AbstractConnection pConnection);
public void afterOpenConnection(ProjX pApplication, AbstractConnection pConnection);
 
public void beforeCommunicationException(ProjX pApplication, CommunicationException pException);
public void afterCommunicationException(ProjX pApplication, CommunicationException pException);

No worries, there are event methods in the application. It's not needed to implement all of the above methods, only what you need, e.g.,

application.eventAfterLogin().addListener(this, "doAfterLogin");