User Guide
  • Introduction
  • Overview
    • About 4WS.Platform
      • Architecture
      • Enterprise Edition
      • Tech specs and requirements
      • Warp SDK
    • Creating a web application
  • Core features
    • Tables
    • SqlTool
    • Definition of Data models and Relations
      • Relations
      • Reverse Engineering
      • Custom Fields
    • Defining business components
      • What are business components
      • Business components to fill-in panels
      • Creating business components
        • By a datastore entity
        • By a MongoDB collection
      • Defining Custom Java Business component
    • Defining the UI
      • App Designer
        • App Designer Menu
        • Definition of additional data sources
        • Panel containers and layouts
          • Tab panel
          • Alternative panel
          • Accordion panel
          • Vertical orientation panel
          • Horizontal orientation panel
          • Columns panel
          • Table panel
          • Generic panel
          • Responsive panel
        • Window content
          • Grid Panel
          • Form Panel
          • Filter Panel
          • Tree Panel
          • Google Map Panel
          • Preview Panel (old Image panel)
          • Tree + Grid Panel
          • Image Gallery
        • Windows list
        • Panel definition
          • Columns properties
          • Controls properties
          • Filter properties
          • Supported components
        • Variables
        • Code selectors
          • When not to use a dynamic combo-box
        • Smart Filter and Advanced Filter
        • Multi Value Combobox Filter
        • Multi Value Tree Filter
        • Buttons
        • Translations
          • Translations about GUI components and internationalization settings
          • Data coming from database
          • Custom code and translations
        • Application Menu
        • Bulk import binded to a grid
        • Range Date Filter
      • Web Interpreter
        • Grid components
        • Detail forms
        • Other components
        • Other features
          • Chat
        • Global variables
          • Client-side global variables
          • Server global variables
        • Forgot Password
    • Working with users and roles
      • Rule for roles
      • Permissions Administrator
    • Wizard
      • How to add a checkbox grid to select one or more rows
      • How to load a second grid when clicking on a row from the first grid
      • How to load a form when clicking on a row of the grid
      • How to open a window when double clicking on a row of the grid
      • How to open a window with right click on the popup menu
      • How to open a window when pressing a button on the grid toolbar
      • How to load a grid after loading a form
      • How to open a window when pressing a button on the form toolbar
      • How to load a grid when clicking on a tree node
      • How to load a form when clicking on a tree node
    • Defining events
      • Panel events
      • Column events
      • Control events
      • Filter events
      • Timer events
      • Start-End event
    • Server-side Javascript & Web Service
      • Server-side Javascript
      • Grid component filled by a server-side JS
      • Detail component filled by a server-side JS
      • How to define a server-side JavaScript action
      • Web service
  • Setting up the environment
    • How to install
    • Application parameters
    • Global parameters
  • Modules
    • Reports & Charts
      • Jasper Report + iReport
      • Online report
      • Docx templating
      • Charts
      • Pivot Grid
      • Multidimensional pivot grid
      • Data Export from SQL query
    • SSO
      • Identity management in Platform
        • Identity management on the internal Platform database
        • Identity management based on Google SSO
      • LDAP
        • LDAP support
        • Identity management based on LDAP and database
        • Identity management based on an embedded LDAP server used by Alfresco and or Activiti
        • Identity management based on a remote LDAP server to connect to Platform on the cloud
        • Connecting an LDAP server to Activiti BPM
        • Connecting an LDAP server to Alfresco ECM
      • Google SSO
        • Google SSO
        • Google OAuth2
        • Identity management based on Google SSO
      • Custom SSO
      • Firebase
    • Mobile
      • Mobile introduction
      • Offline vs Online
        • Server side features
        • Server side functionalities
        • Server side Platform features
        • Mobile app features
      • Mobile side specifics
        • Customizations
          • Custom theme editor
        • App Menu
        • Window content
          • Detail scrollable form
          • Scrollable paginated grid
          • Constraint layout
          • Constraint panel
          • Collection grid view
          • Preview panel (mobile)
        • Form Controls
      • Reference guide
      • Cleaning up data
      • How to
      • App deployment
        • App deployment for the iOS platform
        • App deployment for the Android platform
      • Style properties
      • Appendix : Synchronization flow
      • Translations
    • GSuite
      • Introduction
      • Client-side integration
      • GMail
      • Calendar
      • Drive
      • Contacts
    • Google Cloud Platform
      • Datastore
        • Google Datastore Introduction
        • How to create Datastore entities
      • Google Cloud Storage
    • Scheduler
      • Scheduler Introduction
      • Process settings
        • How to define a sequence of consecutive processes
        • How to define a Custom Java Business component
        • How to define a Grid Data Import
        • How to define a server-side Javascript action
      • Email notifications
      • Process executions
      • Manually start a scheduled process
      • Process input parameters
    • Queue Manager
    • Log & Analysis
      • Application Log
      • Log statistics
      • App analyzer
      • Table log
      • Threads
      • Sessions and heap memory
      • Heap memory analysis
      • Access Log
      • Datastore statistics
      • Total monthly costs with Google Datastore
      • Service Monitoring
        • Introduction
        • Defining a service to monitor
        • Notifications setup
        • Events automatically managed by Platform
        • Remote Platform servers
        • Knowledge base
        • Adding log programatically
        • Searching for logged data
        • Use cases
    • File Management
    • Export and Import of Metadata
      • Application Metadata Management
    • Trigger writing operations
    • Audit
    • BPM
      • BPMN Introduction
      • BPMN main parts
      • Activiti Setup
      • Platform integration
        • Processes
        • Models
        • Process instances
        • To-do list
        • Process history
      • Process Web Modeler
        • Model Creation
          • Start-End Event
          • Gateways
        • Supported objects
        • Start tasks and user tasks
        • Form properties
          • Important notes
          • Property types
        • Service tasks
          • Web service
          • SQL Query
          • SQL statement
        • Mail task
        • Script task
          • Example : how to get a value previously read from a SQL query
          • Example : how to get the current process instance id
        • Timer events
        • Subprocess and Call Activiti
      • Utility methods available in Platform
        • How to start a process from a JavaScript action
        • How to complete a user task from a JavaScript action
      • An example
        • Processes
        • Instances
        • Activities
        • History
    • Embedded CMS
    • ECM
      • Alfresco
        • Alfresco Introduction
        • Integration between 4WS.Platform and Alfresco
          • Integration at GUI level
          • Integration at model level
          • Integration at authentication and authorizations level
          • Additional features
        • How to use 4WS.Platform and Alfresco together
          • Set the same Identity Management system
          • Define document types and aspects in Alfresco
          • Import the document types and aspects definitions in 4WS.Platform
          • Define document types and aspects in 4WS.Platform
          • Reverse engineering of document types or aspects
          • Definition of business components to fill-in panels
          • Definition of the GUI
          • Additional server-side services
        • Requirements
        • Current limits in 4WS.Platform - Alfresco integration
      • Archiflow
        • Setup
        • Archiflow artifacts
        • How to
    • Lotus Notes Migration Tool
    • NoSQL databases
      • MongoDB
        • MongoDB Introduction
        • Setting up the environment
        • How to create collections
        • How to create business components
        • How to create windows filled with data coming from MongoDB collections
        • Design rules
      • Google Datastore
        • Google Datastore Introduction
        • Setting up the environment
        • How to create entities
        • How to create business components
        • How to create windows filled with data coming from Datastore entities
        • Design rules
    • TensorFlow
    • Web Page Development
      • Pure Web Page Development
      • Google Material Design development
      • Appendix A - a complete example without any lib
      • Appendix B - a complete example with Google MD
    • Jira Integration
    • Platform for GAE
    • SQL errors management
    • Multidimensional pivot grid
    • Quality
      • Automated Web Service Testing
      • Automated unit testing
      • Source code static analysis using ESlint
      • Source code static analysis using SonarQube
  • Troubleshootings
  • Best practises
    • Database design
    • Database maintenance
    • Creating a Web app : common use cases
    • Creating a mobile app : common use cases
Powered by GitBook
On this page

Was this helpful?

  1. Modules
  2. Export and Import of Metadata

Application Metadata Management

PreviousExport and Import of MetadataNextTrigger writing operations

Last updated 5 years ago

Was this helpful?

Everything that has been configured via the App Designer can be exported in a zip file. In order to do that, you have to use the Application -> Import/Export application menu item. This window allows to import/export files (web content) and import/export metadata. In this section, the import/export of metadata is described in detail.

Exporting metadata The export operation is very simple: you have just to press the Export button: everything will be exported, including environment-related settings, such as parameters (LDAP settings, Email servers, etc.), directory paths, additional datasources (database connections). When pressing the Export button, a .zip file will be generated and the user can save it locally.

Importing metadata Metadata import can be carried out by choosing in the “Application to upload” input field the .zip file to upload. There are a few settings that can be refined when importing metadata:

  • Delete old data – it is recommended to let it checked; in this way, the current metadata will replace the previous one and will logically delete any old content

  • Company id to use in import – in case of a multi-tenancy environment, composed of multiple company ids, you can decide which company id to use when importing metadata; in this way, you could import changes to users and roles for a specific company; note that this setting can be dangerous to use, since in a multi-tenancy installation, all company ids should behave in the same way, in terms of metadata, therefore it would make sense to check the next setting:

  • Copy for all companies – copy the imported metadata for all the company ids defined in this installation; it is recommended to check it for a multi-tenancy environment

  • Progressives – usually, this checkbox can be unselected: if checked, all internal counters defined within the .zip file will be reported in the current environment. Normally this is not a good idea, since different environment should have different counters, so that there will be never overriding of values and conflicts due to them

  • Roles –usually, this checkbox can be unselected: if checked, the user roles (i.e. authorizations) defined in the environment where the .zip has been created will be reported in the current environment. Normally, this is not needed, since different environments could have different roles: a production environment could have a variety of roles not needed and not defined in the dev environment

  • Users –usually, this checkbox can be unselected: if checked, the users defined in the environment where the .zip has been created will be reported in the current environment. Normally, this is not needed, since different environments could have different users: a production environment could have a number of users not needed and not defined in the dev environment

  • Custom translations – when defining translations, these are defined at application level. Just in case of a product to deploy in different environments for different clients, it could be helpful to distinguish and maintain ad hoc translations at client level. These custom translations can be defined in a specific environment, so it should not be needed to import them from the dev environment and, consequently, this checkbox can remain unselected

  • Mobile theme – when defining a theme for a mobile app (images, colors, fonts, etc.) these are defined at application level. Just in case of an app to deploy in different environments for different clients, it could be helpful to distinguish and maintain ad hoc themes at client level. These themes can be defined in a specific environment, so it should not be needed to import them from the dev environment and, consequently, this checkbox can remain unselected.

Once pressed the Import Application button, a comparison is performed between the metadata to import and the metadata currently defined in the current environment and to replace. The comparison is only about a fewenvironment-related settings:

  • application parameters (e.g. LDAP settings, Email servers, etc.)

  • global parameters

  • directory paths

  • additional datasources (database connections)

  • scheduled processes (timing, suspension, etc)

  • templates (email templates)

Differences can be managed automatically or require a manual decision:

  • new records are automatically imported (e.g. new scheduled processes, new additional datasources, new parameters); that means the user maybe has to change their values after the import activity, since their value could depend on the environment

  • changes to a datasource related to the only title are automatically imported

  • changes to a directory related to the only title are automatically imported

  • changes to a template related to the only title are automatically imported

  • all the other changes will be prompted and require a manual decision

All differences found which require a manual decision will be reported. For each difference, a table composed of two lines is shown:

  • the first line is about the values contained in the current environment

  • the second line is about the metadata di import, stored in the .zip file

Data changes are grouped per topic (global parameters, scheduled processes, etc.) and highlighted in yellow, so that the user can easily identify what the change is about.

For each change, the user can decide if import it or skip it. That operation is defined through the checkbox on the left of each change. The default setting is to import it (check selected). When pressing the Import Application button, all metadata will be imported, except for the settings prompted above, which has not been selected.

Datasources activation Once completed the import task, Platform will prompt the user about the re-activation of the datasources , in case of changes with them or in case of new datasources.

Comparison between Objects and Tables This feature can be started at the end of the import process or manually, when pressing the Verify objects button. This checking consists of comparing the definition of the imported objects (data models) with the corresponding database tables defined in the databases (defined through the additional datasources.) This checking comes in handy when there could be a misalignment between the database in the previous environment (e.g. dev env) and the current environment, for example because some fields are missing in tables. Such a scenario would lead to a wrong operation of the application and it should never happen. Platform can help identifying this possibility, by executing a comparison between what defined and expected at objects level, with what actually defined in the database. The starting point is based on the list of all defined objects: the checking can be applied to all objects or part of them:

For each object, it is possible to narrow or wide the checking to all datasources or a subset of them. The result of this comparison is a list of tables+fields which are missing the current database, somewhere in any datasource. The comparison is only limited to missing fields in the destination database: neither check constraints nor field length/types are taken into account during the comparison.

The user can limit the comparison of objects to a subset of all defined datasources, at object level.

Once identified the missing fields, the user can optionally force the creation of these fields in the specified datasources. This operation is not recommended: it would be better to upgrade the database through a set of SQL scripts created for that purpose and not let Platform fix a misalignment problem created in the past. This optional operation is intended as a way to by-pass a blocking condition where there is no time to apply a better upgrade through a standard shared mechanism.