A computer implemented method of coupling by a controller (108; 828) a first application program running on a first data processing system to a second application program running on a second data processing system, the controller comprising a log file for storing a plurality of generic data locks to data objects, the data objects being accessible by a plurality of services of the second application program, the method comprising: - invoking by the controller (108; 828) the second application program running on the second data processing system from the first application program running on the first data processing system, - receiving by a current user input operation a data input via a user interface of the first data processing system, the data input specifying at least one of the plurality of data objects and one service of the plurality of services, - reading the log file, - determining whether a colliding lock for the at least one of the plurality of data objects is comprised in the log file, wherein in case a colliding lock is determined a message is sent to the user interface and wherein in case no colliding lock is determined the service is called, - in response to calling the service, receiving an updated data lock associated with the data object from the second application program, and updating the log file with the received updated data lock, wherein the second application program is setting locks and releasing all locks set before terminating, the method further comprising: - activating tracking of all locks set and released by the second application program before calling the second application by the controller, - based on the locks set by the second application, the first application creating generic locks for all objects for which locks have been set by the second application, wherein before the first application ends, the generic locks created for all objects for which locks have been set by the second application are released, - wherein the generic lock is an exclusive data lock associated with the current operation of the user interface, - wherein the generic lock is an optimistic lock. - invoking by the controller (108; 828) the second application program running on the second data processing system from the first application program running on the first data processing system, - receiving by a current user input operation a data input via a user interface of the first data processing system, the data input specifying at least one of the plurality of data objects and one service of the plurality of services, - reading the log file, - determining whether a colliding lock for the at least one of the plurality of data objects is comprised in the log file, wherein in case a colliding lock is determined a message is sent to the user interface and wherein in case no colliding lock is determined the service is called, - in response to calling the service, receiving an updated data lock associated with the data object from the second application program, and updating the log file with the received updated data lock, wherein the second application program is setting locks and releasing all locks set before terminating, the method further comprising: - activating tracking of all locks set and released by the second application program before calling the second application by the controller, - based on the locks set by the second application, the first application creating generic locks for all objects for which locks have been set by the second application, wherein before the first application ends, the generic locks created for all objects for which locks have been set by the second application are released, - wherein the generic lock is an exclusive data lock associated with the current operation of the user interface, - wherein the generic lock is an optimistic lock.