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