Public and Private Database Schemas

Public Schemas

With the notable exception of SoftadminDev, you can rely on public schemas not changing without prior warning. They are designed to be stable and consistent, and to not break when you upgrade unless necessary.

SoftadminApi

Objects that enable interaction with Softadmin®. The schema contains both procedures that interact with Softadmin® tables, like SoftadminApi.User_UpdatePassword, which affects the user table, and procedures that interact with components, like SoftadminApi.Progress_SetTitle which interacts with NewEdit and friends.

For tables and views, you should consult their respective documentation to determine whether you may insert, update, or delete their contents.

SoftadminUtil

Utility functions, like SoftadminUtil.Month_NumberOfDays.

SoftadminDev

Intended for development purposes only. You are allowed to call these functions, but they should not be used for customer-facing functionality. The API may change between versions, and backwards compatibility is not guaranteed.

SoftadminSnippet

A special API schema that snippet procedures use to communicate with the snippet engine, like SoftadminSnippet.BankId_StartButton.

SoftadminGuide

An API schema that must only be used to create procedures for Softadmin® guides.

Private Schemas

The private schemas are not publicly documented and are intended for internal use only.

You should not build any functionality that uses private objects. You cannot expect any help if you do reference a private object, and changes to that object mean that you can no longer provide said functionality, or that you need to repair it. Private objects are subject to change at any time, and their behavior or even their existence may be modified or removed without notice.

For an experienced developer, reading internal tables can be helpful for debugging a problem, or to learn more about the system. Performing updates on internal tables can in certain circumstances save time. However, it always carries a risk, as the platform may not interpret the contents of its tables the way you assume.

dbo

Objects in dbo belonging to Softadmin® are prefixed with ADMIN or PUBLISH. You should never use these prefixes for your own tables or objects in dbo.

All objects in dbo are private unless explicitly documented as public. Most of the public procedures and functions in dbo are also deprecated and have replacements in SoftadminApi or SoftadminUtil. A rule of thumb is therefore to avoid objects in the dbo schema.

SoftadminMapName

These are private schemas used by Softadmin® Map. They will only be present in those databases where Map is used.

SaName

Other private schemas are identified by the prefix Sa followed by an uppercase letter, for example SaState or SaServiceBus.

You should never use this naming convention for your own schemas. Sales, on the other hand, is an allowed name since it uses a lowercase l.

SaState

Instance-specific state data, like sessions and the service bus queue. When copying a system, you should not copy the contents of tables in this schema.

SaUserState

User specific state data, like their menu item favorites, and which help pages they've read. When copying a system, you should not copy the contents of tables in this schema unless you also copy the SoftadminApi.User table, which you normally would not do.

SaWebServicePublishingState

Instance-specific state data. When copying a system, you should not copy the contents of tables in this schema.