LogoLogo
What's NewDeveloper CommunitySupportStatus
  • 🚀Get Started
    • What is JourneyApps Platform?
    • Tutorial: Build your First App
      • 1. Introduction
      • 2. Create a new App
      • 3. OXIDE IDE Overview
      • 4. Hello World app
      • 5. The Data Model
      • 6. View Components
      • 7. Queries and Data Sync
      • 8. Simple Navigation
      • 9. View Stack
      • 10. Input Validation
      • 11. View Parameters
      • 12. Data Manipulation
      • 13. Responsive Apps
      • 14. Styling
      • 15. Lists
      • 16. GPS Capturing
      • 17. Relationships
      • 18. Multiple User Roles
      • 19. Deployment and Users
      • 20. Version Control
      • 21. CSV and APIs
      • 22. Conclusion
    • JourneyApps Platform Fundamentals
      • Creating a New App
        • Git-enabled Apps
      • What are Views?
      • What is the Data Model?
      • JourneyApps Syntax Basics
      • Access the Database (DB)
        • Manipulate DB Objects
        • Query DB Objects
      • View Navigation
        • Deep Linking
      • CloudCode Overview
      • OXIDE (Online IDE)
  • 💻Build your App
    • JourneyApps Syntax
      • Syntax Basics
      • Access the DB
      • View Navigation
      • Async & Await
      • TypeScript Apps (Beta)
        • runtime-build package
        • TypeScript App Troubleshooting
      • What's New in V4
        • Updating to the V4 API
    • Configure your Data Model
      • What is the data model?
      • Reference: model
        • field
        • belongs-to
        • has-many
        • index
      • Data Rules
        • Data Buckets
        • Sync Rules - Limit data synced to devices
        • Data ACLs - Limit access to data
        • Real-world example for Data Rules
        • ❔FAQs
        • Migrate to Data Rules
      • App Indexes
      • Webhooks
    • UI Components
      • All UI Components
        • actionSheet
        • Attachments
        • button
        • button-group
        • capture-coordinates
          • marker
          • marker-query
        • capture-file
        • capture-photo
        • capture-signature
        • card
          • accent
          • action
        • columns
          • column
        • component
        • context-menu
          • divider
          • item
        • CSV
        • date-input
        • datetime-input
        • dialog
          • body
        • display-3d-model
          • 📖display-3d-model Guides
            • Guide 1: Initialize and layout a 3D model in a view
            • Guide 2: Control playback position
            • Guide 3: Troubleshooting controls
        • display-coordinates
        • display-file
        • display-image
        • display-photo
        • display-signature
        • heading
        • html
          • HTML Advanced Topics
          • ❔HTML FAQs
          • 📖Guide: HTML & JourneyApps iFrame Client
        • icons
        • info
        • info-table
          • row
        • journey.photos (capture multiple photos)
        • JourneyPrinter (print PDFs)
        • grid
          • cell
          • 📖grid Examples
        • list
          • list-item
            • accent
            • asset
            • pills
              • pill
            • action
        • multiple-choice-checklist
        • navigation (Navigation drawer)
          • general-section
            • item
          • section
            • item
              • item
          • ❔navigation FAQs
        • notification
        • object-dropdown
        • object-list
          • action
        • object-repeat
        • object-table
          • action
          • column
            • action
            • edit-boolean
            • edit-date
            • edit-datetime
            • edit-integer
            • edit-number
            • edit-select
            • edit-text
            • edit-time
            • edit-typeahead
              • action
            • header-action
          • column-group
          • empty-action
          • 📖object-table Guides
            • Actions
            • Cell callouts
            • Column groups
            • Columns
            • Controlled object-table
            • Controls
            • Copy & paste data
            • Edit cells
            • Filters
            • Frozen columns
            • Fullscreen object-table
            • Mode
            • State
            • Styles
        • optionList
        • PhotonSync (transfer data offline)
        • power-bi
          • 📖Guide: PowerBI Embedding
        • scan-barcode
        • shortcut
        • sidebar
        • single-choice-dropdown
        • single-choice-radio
        • template
        • text-input
        • time-input
        • toggle
        • view
      • JS/TS Events
      • Show / Hide UI Components
      • View Templates
      • XML Fields (Attributes)
        • align-content
        • align-controls
        • align-label
        • bind
        • clear-button-visibility
        • control-order
        • disabled
        • error-message
        • icon-position
        • id
        • hide-if
        • modifier-text
        • label
        • label-case
        • label-color
        • on-change
        • on-press
        • placeholder
        • required
        • show-if
    • JS / TS APIs
      • Attachment
      • Bluetooth (Beta)
      • Broadcast
      • component
      • CSV
      • DB
      • HardwareBarcode
      • journey
        • journey.config
        • journey.container
        • journey.device
        • journey.diagnostics
        • journey.dialog
        • journey.files
        • journey.hardware
        • journey.photos
        • journey.runtime
        • journey.sensors
        • journey.viewStack
      • JourneyPrinter
      • KeyboardBarcode
      • LocalDB
      • NFC
      • OnlineDB
      • PhotonSync
      • SerialPort
      • ShortcutManager
      • TCPSocket
      • user
    • Extend your App with Custom Code
      • App packages
        • App packages overview
        • PDF report package
        • TypeScript library & unit tests
        • Manage External Dependencies
      • Custom HTML
    • Style & Customize your App
      • Style & configure UI components
        • Overview
        • Understand extendable themes
        • Use themes on a view
        • Theme specific components on a view
        • Examples
        • Debugging
        • ❔FAQs
      • Change your App Font
      • Custom Branding
        • Custom Container Features
        • Special Requirements for iOS Containers
    • Integrate your App
      • Backend integrations with CloudCode
      • Barcode Scanning
        • Barcode Scanning using Keyboard Emulation
        • Hardware Barcode Scanning
        • scan-barcode
      • Bluetooth Low Energy (BLE)
      • Broadcast API
      • HTTP requests (Fetch API)
      • JourneyApps Print (Android)
      • Maps and navigation
      • NFC
      • Opening external links/apps
      • Serial Port
      • TCP Sockets
    • Design Intuitive Apps
      • UX Guidelines
      • Write Effective Copy
  • 📱App Features
    • RealWear® Voice Control
      • Automatic Voice Commands
        • Automatic Voice Commands - Advanced
      • Manual Voice Commands
    • App, Runtime and Container Updates
    • Batch Operations (App)
    • Call JS/TS Functions from XML
    • Capture GPS Locations
    • Push Notifications
    • Translations
    • XML Format Strings
    • Webhooks (External)
  • 🌐CloudCode
    • CloudCode Overview
    • Trigger a CloudCode Task
      • Trigger CC with a Schedule
      • Trigger CC via a Webhook
      • Trigger CC from an App
      • Trigger CC from Another Task
      • Trigger CC via HTTP
    • Attachments in CloudCode
    • Timezones
    • Advanced CloudCode Topics
      • Access Multiple DBs in CloudCode Tasks
      • Batch API (CloudCode)
      • CloudCode Dependencies
      • Configure HTTPS in CloudCode
      • Deployment environment variables
      • Local CloudCode Development
      • PDF Reports using CloudCode
      • Shared CloudCode Tasks
      • Translations in CloudCode
  • 📥Backend API
    • Introduction
    • API Reference
      • Retrieve All Objects
      • Query Objects
      • Sort Results
      • Limit and Skip
      • Count Objects
      • Create a New Object
      • Retrieve a Single Object
      • Update a Single Object
      • Delete a Single Object
      • Batch Operations (v4 API)
      • Oplog API
      • Retrieve the App Data Model
      • Manage App Users and Sessions
      • Field Representation
      • Error Responses
    • API Limits
    • Update to the V4 API
  • ⚙️Technical
    • Data Synchronization Priority
    • Device Diagnostics
    • JSON1 Query Engine
    • Improve App Performance
    • Security Measures
    • Supported Platforms
      • Web Container
      • Windows Installer
    • Domain Whitelist
  • 🖥️OXIDE
    • Get started with OXIDE
      • OXIDE Overview
      • Components of OXIDE
    • Configure Testing Deployments
    • Edit and Manage Files
      • How to Navigate to a Function
      • Manage External Dependencies
    • Create and Manage App Containers
    • Debugging & Troubleshooting
      • Common Troubleshooting Pointers
      • App Diagnostics Reports
      • Build Logs
    • OXIDE Workspaces
      • OXIDE Trees
  • ❕Deprecated Features
    • Deprecated Features and Components
Powered by GitBook
On this page
  • Recap: Environments and Staged Deployment
  • Deploy to Staging for Demo/UAT Purposes
  • Create Staging Users
  • App Refreshes Differently on Staging & Production
  • User Management
  1. Get Started
  2. Tutorial: Build your First App

19. Deployment and Users

Previous18. Multiple User RolesNext20. Version Control

Last updated 2 years ago

Recap: Environments and Staged Deployment

Recall the Env of the What is JourneyApps? page. JourneyApps provides the following default environments of the App Back-end:

  • Testing: This is what you use for iterative testing while you develop apps. When you link a mobile device on OXIDE for testing/development purposes, it is enrolled to this environment, and any changes that you make are automatically deployed to this environment so that you can immediately test the changes on a device.

  • Staging: This can be used by other stakeholders to test a new version of a mobile app before it goes live. When you are building & showing demos, it is recommended that you use the Staging environment to deploy your app.

  • Production: This is the live environment where your real-world day-to-day users and data is kept.

Deploy to Staging for Demo/UAT Purposes

Let's say you want to release your app for demo/UAT purposes, and therefore want to deploy it to the "Staging" environment. This will allow you to carry on with developing the app in OXIDE and "Testing" environment, while other stakeholders could be performing demos of the app in the "Staging" environment completely separately. To do this, we first need to create a 'Staging' deployment.

Go to the Deployments workspace of the Punch List App. Once there, find the '+' icon in the top right corner and choose to 'Create New Deploy Config'. When prompted name the deployment 'Staging' and ensure the selected 'Environment' is also 'Staging'. Like this.

Next up we want to deploy our app in its current state to the Staging environment. Deploying is simply a two-click process: Click on the Deploy App button on the "Staging" deploy config you just added and when prompted to confirm select 'Continue'. OXIDE will now deploy the current version of your app to the Staging environment.

Create Staging Users

Previously, to link a device to our app in OXIDE (therefore, linking it to the "Testing" environment), you simply used the Test App action. To link users to your app once it has been deployed, however, we need to create user profiles for them on the JourneyApps App Backend (on the relevant environment). So go to the Data Browser for the Staging environment.

Now, add a new User object to the User table and hit save once you have entered a name and a role.

Once the user object is created you can enroll an app as that User by following the 'Enroll' link - this will take you to the enrollment details page for the specific user object.

The easiest way to test this for now would just be to use the Enrollment link to enroll on your desktop container. So, simply copy the link and paste it in a new browser window. Once you execute that link it will ask you where you want to enroll, on desktop or mobile. Simply select "Enroll on Desktop" and then "Launch" and it will make use of deep-linking with the desktop container to re-enroll your container to this Staging user.

If you refresh the user's page on the JourneyApps App Staging Backend, you should see that it now shows information about the enrolled device:

App Refreshes Differently on Staging & Production

When you were developing and testing your app, you could press the 'Sync' button at any time and immediately see whatever changes you've made and most of the changes are pushed and applied to your app in real time as you are making them. This is because as a developer when you use the Test App functionality from within OXIDE you have a special kind of link / 'enrollment' between the app and the backend which allows for code changes to get pushed and applied continuously to the application.

On the "Staging" and "Production" environments, however, this is not possible but you also wouldn't want your users to be confused or disrupted by a change in the app when you deploy a new version. Therefore, the app won't refresh immediately for users in the "Staging" and "Production" environments. Instead, users will be notified when new changes are available and they will then be able to select whether or not to apply them now or later. Please note, if the user closes the app and opens it again then, in other words restarts the app, then all pending changes will automatically be applied.

User Management

JourneyApps supports a variety of ways in which you can manage your users. You have seen and used both the enrollment link and the enrollment QR Code during this tutorial, but JourneyApps also supports a basic username and password configuration for your end users, as well as support for SSO integration with your existing Identity Providers. Please reach out to your Customer Success Manager or our if you want to learn more about these user management options.

🚀
Developer community
ironments and Staged Deployment section