def process(self, context):
        r'''
         @types: applications.ApplicationSignatureContext
        '''

        shell = context.client
        language = shell.getOsLanguage().bundlePostfix

        db2_instance_osh = context.application.applicationOsh

        instance_name = self.get_instance_name(context)

        if instance_name:
            db2_home_path = self.get_db2_home_path(context)
            if db2_home_path:
                version = self.get_db2_version(context)

                SoftwareBuilder.updateName(db2_instance_osh, instance_name)
                SoftwareBuilder.updateVersion(db2_instance_osh,
                                              build_version_pdo(version))
                SoftwareBuilder.updateApplciationPath(db2_instance_osh, db2_home_path)

                application_port = self.get_application_port(context)
                if application_port:
                    SoftwareBuilder.updateApplicationPort(db2_instance_osh,
                                                          application_port)

                discoverer = self.get_shell_based_discoverer(context)
                executor = discoverer.get_db2_command_executor(shell)
                interpreter = shell_interpreter.Factory().create(shell)

                base_shell_discoverer.Db2.set_db2_bundle(language)

                self._discover_local_databases(context, instance_name, application_port, db2_home_path, discoverer, executor, interpreter)

                self._discover_remote_databases(context, instance_name, db2_home_path, discoverer, executor, interpreter)

            else:
                logger.debug('No db2 home path found')
        else:
            logger.debug('Failed to discover instance instance_name')