M.App Enterprise Tutorials

Not sure on how to get started or looking for a workflow to get M.App Enterprise up and running. Tutorials provide step by instruction on some of the most common configurations and workflows to get M.App Enterprise configured up and running quickly.
Showing results for 
Search instead for 
Do you mean 

How to setup a Desktop App

by Technical Evangelist on ‎01-09-2017 02:36 AM - edited on ‎05-12-2020 02:50 AM by (1,795 Views)

This article shows how to get content into the Studio, which then can be used in a Desktop App. Most of the things are straightforward, so basically there are more hints and tips than a step by step instruction. If you want to get detailed information about every textfield, please have a look at the documentation.


Only the Studio Administrator has access to do all the following things. 


Please note that you can't start any app out of the Studio. You have to login on the Apps page --> URL pattern: https://SERVERNAME/Apps/?tenant=TENANTNAME with the username and password you have created in Step 7 of the following tutorial



  1. Adding data (Imagery)
  2. Adding data (Vector)
  3. Adding StyleSets
  4. Adding external OGC Services / Create own OGC Services
  5. Adding Workflows
  6. Adding Copyrights
  7. Creating a new User / Role (must be done regardless of the app type)
  8. Creating Legend
  9. Creating Overview
  10. Creating ActionSet
  11. Creating Query
  12. Adding PrintLayout
  13. Creating M.App


Adding data (Imagery)

Here are some hints and tips for importing imagery in M.App Enterprise:

  • The path must be UNC valid
  • All image formats, which are supported by Apollo Core are also supported in M.App Enterprise
  • If you point a entire folder a virtual mosaic will be created
    • Please ensure that the images are all spatially related if you point to a folder
  • If you are pointing to a single ECW the ECWP checkbox gets available
    • ECWP streaming is only possible for Desktop Apps, if you want to use the imagery in a Browser App please check one of the OGC Service checkboxes
  • Order of access to the imagery? What happens if you check all boxes?
    • Desktop App
      • ECWP (if possible)
      • WMTS 
      • WMS
    • Browser App
      • WMTS
      • WMS


Adding data (Vector)

There are three database providers available in M.App Enterprise. 

  • If you want to use Oracle, please ensure that you have installed a corresponding Oracle Client. Please have a look at the System Requirements 

If a connection is possible to the database you will get all tables of the database displayed in a list, where you can define some initial options.

  • At the import you have to rename the table to another unique name. This unique name is for StyleSets and the query framework. For the legend of the Desktop App you can rename the dataset once again to a nicer name, because e.g. there are no spaces allowed in the name of the dataset. 
  • Check the caching checkbox if you want to cache the dataset. That means two things:
    • On the one hand you can publish the cache beforehand accessing the app. Advantage is that the tiles are there when the first user accessing a certain map extent. On the other hand it is a Caching on Demand behaviour. The first user is accessing a certain map extent and the tiles are stored on the fly into a SQLite database in the Warehouse folder. As soon a second user is accessing the same map extent he has the tiles already there. Pure vector cache production doesn't take that long, but if you want to publish a WMTS with all your vector data it can take some weeks to finish the cache production. 
  • There is no possibility to change the caching behaviour. So if you want to change it from live to caching respectively caching on demand you have to delete the dataset and import it again:
    • If there is a style named like the old dataset you have to rename the "new" one exactly the same and your style is there
    • Only restriction if you import the same dataset again is, that you have to assign it again to the legend and / or overview. 

 Editing vector data

You can change some properties in there. As mentioned above you can't change the caching behaviour anymore. 


  • Allows you to filter the entire dataset on the server. Input must be the WHERE clause of an SQL statement. For example if you have one table with more than 100 million unique polygon geometries, then you have two possibilites to filter the data:
    1. Only within the style. Big disadvantage is that all geometries are loaded by accessing a map extent but only the styled ones are displayed.
    2. Server: Only geometries, which fulfills the filter expression gets loaded in the desktop application.
      • Best performance? A combination of both. Filter definition on the server side as well as in the style 


  • Allows you to show more information about a certain geometry. As soon you type in { you will get suggested the first five columns of the table. Because it is autocomplete you just to type in a few letters to get the correct column.

Adding StyleSets

Styling is pretty straightforward. If you need basic training of handling the Style Editor, please have a look here. Every single dataset, which was ever imported is available in the list, when you typed in a name for the StyleSet. If there is a pencil icon, you already have created an style and you can edit it. If there is a list icon, you have to create a style from scratch.


To get a thematic legend entry, you have to define filters for the dataset. Again is mentioned above the filter must be a valid WHERE clause of a SQL statement. For example a filter can look like: ([LAN_FA_TY] = 'AIRPORT') AND (([LOCID] = 'JFK') OR (([LOCID] = 'LGA') OR ([LOCID] = 'EWR'))) 



Creating and adding OGC Services

In GeoServices you can either use third-party OGC Services (WMS, WFS or WMTS) or you can use your own created OGC Service.


 Creating own OGC Service

By clicking My GeoServices it is possible to create an own WMS, WFS and WMTS with the vector data you have previously imported. Some notes here:

  • Please ensure that the layer order is correct. The first entry is the last, which is rendered so it is the most top one. 
  • If you don't check the Single Layer checkbox on the right hand side for the WMS, you have to create an WMS for every single dataset.
  • If you check the SIngle Layer checkbox, you will get the name of the service as the layer name.
  • If you type in 500 for Scale M.App Enterprise calculates the depth of the WMTS automatically and you are able to see the WMTS until 1:500
  • You can pre-publish all the vector data, which is used within the WMTS by clicking on the first icon in the MyGeoServices list.
  • You can also pre-publish the entire WMTS by clicking on the second icon in the MyGeoServices list.
    • Please note that it can take a while to pre-publish the entire WMTS.


Adding OGC Services

By hovering the New button in GeoServices you will get a drop down list with all OGC Services and HERE Maps. Latter one can also be used in Desktop as well as in Browser Apps.

When you have chosen the correct service, you can either type in a third party URL in the corresponding textfield or click on MyGeoService. Then you can choose one of your own. 

  • You have to click on Refresh. No matter if you want to use your own or an third party OGC service. 


Adding workflows

If you add a connection to the workflow, you will get two XML's, which are located in the Warehouse.

  • If you delete the workflow in the list, both XML's gets also deleted
  • If you click on the first icon the Graphical Workflow Designer opens up and you can create or edit the workflow itself


Adding copyrights

You have to type in the copyright text as well assign it to the corresponding datasets.


Creating new user / roles

Users respectively roles are responsible for the access to certain apps. User name is also the login to the Apps page: https://SERVER/Apps/?tenant=TENANTNAME


  • Users must have a valid email adress. Otherwise the user can't be activated
    • If a password pattern is set, the user must fulfill the requirements at the activation
  • Users can be leveled up to Studio accounts at any time


Creating legend

The legend is theme based. So you have to click at least once on Add Theme. From the left hand side it is a simple drag and drop into the corresponding theme. 

  • For Desktop Apps all different kinds of data is allowed (vector, raster and geoservices)
  • On the left hand side name and the corresponding kind of data are displayed
  • There are two different clickable icons on the theme side and one on the layer side:
    • Theme:
      • Is closed: Only theme name is visible in the legend, but there is no access to the assigned datasets
      • Is hidden: No theme is visible at all in the legend, but all associated datasets are displayed in the map
    • Layer:
      • Is visible: Defines if the layer should be visible at the start of the Desktop client or not
  • When you hover the theme or the layer you can delete the corresponding element. On the theme side you can also create sub themes. 
  • You can also change the order of themes and layers by checking the box in front of the name and then click on one of the icons at the top of the legend window
  • Name of the legend is mandatory, otherwise you can't save the legend.
  • You can rename the dataset to get a more beautiful and more meaningful name in the legend.


Creating Overview

  • Drag and drop datasets from the left hand side into the overview window
  • Naming of the overview is mandatory otherwise you can't save it
  • Please don't overwhelm the overview, because the more datasets are in there the longer the loading times for the Desktop Client. 
    • One raster / geoservice dataset
    • Vector dataset(s) which represent(s) the app range quite well


Creating ActionSet

Action sets allows you do start an action at a certain place within the Desktop client:

  • Start a workflow
  • Open up a URL
  • Open up a URL in a specific web browser
  • Open a file

And there are certain locations where you can start this action:

  • Top (only available with ActionGroups => you can group certain actions and then by holding the left mouse button on the icon in the desktop client you will get a drop down list of all assigned actions in this group)
  • Legend
  • Feature
  • Context
  • Data Grid
  • Hidden (Action isn't visible in the UI. This can be used for example to open up a document from the datagrid)

You have to name the action set otherwise you can't save it.


  • Icon must be located in the Warehouse\TENANTNAME\AppData\images. 
  • Node at the action Workflow is an autocomplete textfield. As soon as you type in one or more letters, you will get the corresponding nodes from your workflow.
  • If you hover the location you can add a new action to the location. If you hover the action itself you can delete it.


Creating Query

Queries allows you to get specific information about one or more geometries out of the database.

  • If you want to use just information about one certain dataset, than you have to define the Display and the Query Dataset with the same dataset. For example information about tax lots.
  • If you want to use information in combination you have to define the Query and the Display Dataset differently. For example you want to see every subway entrance within a certain radius based on a specific building. Then the Query Dataset is the one with the building geometries, because it is the start point of the query and the Display Dataset is the one with the subway entrance geometries in there. 
  • You can directly check if the query is correct by clicking on Test Query.
  • You can make use of placheholders:
    • {Entity.IdFilter}: at runtime will be replaced with the a list of comma separated IDs which represents the objects selected on the map, e.g.: Select *, ST_Area(Geometry) as Area from Buildings where gid in ({Entity.IdFilter})
    • {Entity.MyTextfield}: at runtime will be replaced with a texbox in which the user can provide input text to be searched, e.g.: select ID,ZipCode, Borough, Address, OwnerName, ST_Area(Geometry) as Area, NumBldgs as "Number of Buildings", NumFloors as "Number of Floors", YearBuilt from tax_lots where ID = {ENTITY.TaxLot}
    • you can combine multiple placeholders in one query, e.g.: select s.id, s.name, ST_Distance(s.geometry, ST_Transform(b.geometry,2831)) as Distance from subway_entrances s JOIN buildings b ON ST_Intersects(s.geometry, ST_Buffer(ST_Transform(b.geometry,2831), {ENTITY.Distance})) AND b.gid IN ({ENTITY.IdFilter}) order by distance


Adding Print Layouts

In the Tools section of M.App Enterprise Studio you can open up the PrintLayoutEditor. That tool allows you to create Print layouts, which then can be added in M.App Enterprise Studio.



Creating M.App

All previous defined content is coming together here at the creation of a M.App.

  • Only thing mandatory in this window is the assignment of a Role and a Legend. Furthermore it is necessary to name the app and define an EPSG code. 
  • As soon as there is vector data used in the legend, the bounding box is calculated automatically and you don't need to define the Lower respectively Upper corner
  • EPSG code must be one for a projected CRS
  • When you edit the same M.App you can transform the bounding box to any other CRS, which is supported by the framework.
  • The Preview allows you to upload an image, which allows you to find this specific app easier. 
  • If you have cached vector data, you can pre-publish it in the M.App list.