Platform Features.

Mobiz Platform Features.

Mobiz Platform Core features

Authentication / Identity

  • ASP.NET Identity implementation against our DB User models
  • JWT tokens with claim based permissions
  • Authentication security authorization attributes for controllers
  • Impersonation. Managed and fully audited.
  • eCertificate Auðkenni.is
    • Supports Original Valimo SOAP implementation
    • Supports New (Auðkenni 2021) REST API implementation
  • AWS Cognito Integration (Unfinished)

Security System

  • Permissions
    • Permissions are system wide concept for managing User Authorizations.
    • Platform contains built-in permissions.
    • Extensions can register new permissions.
    • Permission can be granted or denied.
    • Permission assignement includes Weight which is used when resolving confligthing permissions.
  • Roles
    • Role is a collection of Permission grants or denial.
    • Platform contains built-in roles.
    • Extensions can register new roles.
    • Roles can be managed on AdminDomain or Organization level. AdminDomain Roles are inherited into child Organization.
  • Groups
    • Group is a collection of Roles.
    • Platform contains built-in groups.
    • Extensions can register new groups.
    • Groups can be managed on AdminDomain or Organization level. AdminDomain Groups are inherited into child Organization.
  • System and Extensions register available permissions.
  • System and Extensions register built-in Roles and Groups.
    • Roles and Groups marked as Built-In can not be edited, changed nor removed.
  • Resolving permissions
    • Permissions are resolved by aggregating all permissions against a given User/Organization combination granted or revoked via Groups/Roles. Weight is used to decide when permissions are conflighting.
  • Scoped Roles and Groups
    • System Roles / Groups
    • AdminDomain Roles / Groups
    • Organization Roles / Groups

Users, Membership, Organizations, Accounts

  • Users
  • User Account
  • Membership
  • Organization
  • Organization Account

Invite System

  • Invite a user to an Organization, with a given role.
  • If the user already exists, membership is created and notification sent to user.
  • If the user doesn’t exist he receives an invite to sign-up where membership is created after successful signup.

Settings System

  • Generic schemaless, scoped settings system for storing and fetching key/value or key/json settings.
  • Scoped settings:
    • System Settings
    • AdminDomain Settings
    • Organization Settings
    • User Settings

AdminDomain

  • Provides support for structuring customer Organizations into “tenants” owning the Organizations.
  • AdminDomain can have a set of Groups and Roles which become inherited into all its Organizations.
  • AdminDomain can override templates for email and messages. Invitation email, reset password email, signup, confirm, etc.
  • Planned: Admin Domain can have its own instance of operation resources: Elastic Search, Redis and Postgres Database for extension data.

Logging

  • Rich logging infrastructure for logging Structured log messages with tags and metadata objects, metrics data and feature tracking / usage data.
  • Supported targets: Exceptionless, Sentry, DataDog, Console (buffered writer, JSON format), Elastic Search (buffered writer).
  • Support combining logger targets via configuration, example:
    • Log messages with LogLevel = Error + Warning go to Sentry
    • Log messages with LogLevel = Info + Error + Warning go to Exceptionless
    • Metrics data goes to DataDog and Elastic
    • Feature / Usage tracking goes to ElasticSearch

Tracing (Planned)

  • Built in support for OpenTelemetry.

  • Tracing enabled against a whitelist of users.

  • All Mobiz Core services output trace logs.

Caching

  • Redis capabilities encapsulated in a service interface

Locks

  • System wide locks

Sync infrastructure

  • Pull infrastructure. Pulling data per external db table on a regular basis into the Mobiz stream.
  • CDC infrastructure. Database CDC connector feeding into Mobiz stream.
  • Planned: Change Tracking endpoint for accepting changes being pushed from external service. Scalability provided by Kafka queue.

Extended Dependency Injection

  • Building on .NET CORE Dependency Injection
  • Provides support for scoped services
    • Organization A can be configured to use SAPSalesService for ISalesService while Organization B is using NAVSalesService.
    • Planned: Contract for Features having feature flags and services.

Features Infrastructure

TODO: * Extension can register FEATURES. * Feature is a customer facing functionality defined by the feature service. * Example: “Sales System”. * Features expose one or more WebAPI controllers. Example: “$root/sales/v1/mysalescontroller/” * Features define one feature root service interface. Example: ISalesService.

	* Features define feature configuration options and list of feature flags.

* Feature can have feature dependency

	* Example: RecordManagement requires Records

* Major version updates with breaking API changes are deployed as new features.

	* /api/sales/v1/something (Controller from Sales1 feature)

	* /api/sales/v2/something (Controller from Sales2 feature)

Extensibility System

  • Extension Modules

    • Each extension is represented as an extension module.
    • Each extension is loaded from its own folder in the “ext” directory.
    • Each extension folder has an info.json manifest file describing the extension.
  • Frontend Extensibility (ClientPlugin)

    • Extension can register an Angular module for dynamically extending front-end. Angular code/artifacts is served from extension folder via server routing.
  • Extension Services

    • Service implementations are registered via DI from Extensions
    • Planned: ServiceConfiguration
      • Implementation can be configured per Organization via ServiceConfiguration.
      • Implementation can be local .NET Extension or external service implementation invoked via message queue. (Or gRPC)
  • Extension register Permissions

  • Extension can register built-in Roles and Groups

  • Extension can register Database Migration

  • Extension can register Index Mappers

  • Extension can register Sync Agents

Extensible Features Currently available

  • Sales

  • Work Tracking

  • Report System

    • Sales Reports
    • Work Reports
  • Planned: General Ledger

  • Planned: POS Site

Service Hub

Report System

  • Report System.

  • Dashboards, Widgets and layout defined in JSON as ReportPackages.

System database management

  • Migrations
  • Testdata seeders

Extension database management

  • Planned: Extension register migrations
  • Planned: Every extension tables are managed in own schema
  • Planned: Every extension has own Postgres user with read-only permissions against other extension schema and limited views for security tables.

Elastic Search Indexing, Searching and Index management

  • Index Creation / Migration management
  • Built-in support for canary indices strategy
  • Extension register Index Mappers

Notification System

  • Internal notification service for publishing notification events.
  • Push notifications SignalR endpoint
  • Device notifications to Apple and Android devices

Activity feeds infrastructure

  • Planned: Organization Scoped named activity feeds

Mobiz Administration

  • CRUD for Mobiz domain objects.
  • Administration Commands

Kubernetes Container Ready

  • X

Test Infrastructure Ready

  • Infrastructure for bootstrapping platform for tests / dev scenario with dependencies mocked.
  • Infrastructure for named test-data-sets for DB and Index.

ERP Sales

Features

* Invoices, Orders, Quotes, Drafts
    * Invoice / Order / Quotes / Draft managements CRUD
    * Invoice PDF rendering from template
    * External discount calculations
* Customer, CustomerGroup
* Items, ItemGroup
* Discounts
* SalesPerson

UX components ready for bundling

* Sales Mobile App
* Sales Web App
* Sales System Administration

Existing implmentation / drivers

* DK Sales
* Uniconta Sales (prototype)

ERP Work

Features

* WorkTracking
	* WorkJournal
	* WorkJournalWorkLine
	* WorkJournalCostLine
* Work tracking for employee
* Item sales as cost tracking for employee
* Extra resource tracking, drive hours / km, machine rent hours, etc.
* Searching, Calculating, Aggregating data from journals.

UX components ready for bundling

* Work Mobile App
* Work Web App
* Work System Administration

Existing implmentation / drivers

* DK Work
* Wise (NAV) Work (prototype)

Records Extension

  • Record Core
    • Manage PDF files and metadata
    • Search
      • Icelandic language normalization via Greinir
    • Metadata Aspects
    • Approval Request
    • Digital Signature
      • Standard
      • Advanced
      • Qualified via Dokobit

Current CommonClient features

Planned POS features

Planned Platform features

  • Sandboxed extensions

    • gRPC service remoting support

    • .NET CORE extension host.

    • DENO extension host

  • Kafka