Skip to main content

Released database changes in version 12.3.2195.0

SuperOffice

The fieldId type should be used for all fields that contain a tablenumber + fieldnumber; needed for correct mapping in the Windows client. Some were not correctly set earlier. We also finish off the heading.listTableId dance
  • Modify table CacheTables subKeyId
  • Modify table ImportRelation foreignKey
Step 10 Upgrade Oracle databases from 8.0 to 8.1: We are no longer using the CLOB datatype for fields shorter than 4k. For other databases this is a no-op. On large customers this will take quite some time! Step 12 This step will add two new functional rights to the system. One for controlling wheter a user can manage consents for a customer, and one for controlling wheter a user can override consent/subscription checks in Mailings. In addition, this step will give these two rights to all roles with the general admin right. Step 14 <b>NB: Due to a Merge/RedAlert f…up, the functionality in this step has been moved to the Optimization name; and should properly live there!</b> Modify indexes that have a major impact on performance in Online Step 18 Clear out orphan person records (contact_id != 0, no such contact record exists), as well as email, phone, address and udef records that point to nonexistent parents
  • Modify table person
  • Modify table phone
Step 19 Add fields and attributes to support the Soft Delete feature on person and contact tables
  • Modify table Contact DeletedDate
  • Modify table Person DeletedDate
Step 20 Support Saint V2, with more entities and enable/disable
  • Add table SaintConfiguration
  • Modify table StatusDef generationStart, lastGenerated
Step 22 Priming step for upgrading databases from whatever earlier 8.0 version We must handle upgrade from 8.0 RC2, since that is the version Online database migration uses. Step 23 Add UserName to Associate
  • Modify table Associate userName
Step 24 Priming step for upgrading databases from whatever earlier 8.0 version We must handle upgrade from 8.0 RC2, since that is the version Online database migration uses. Step 25 Priming step for upgrading databases from whatever earlier 8.0 version We must handle upgrade from 8.0 RC2, since that is the version Online database migration uses. Step 26 Minor update in ZipCity; update of preference descriptions; update of FI address layout; update of SuperOffice data for SW, DA, GE Priming step for upgrading databases from whatever earlier 8.0 version We must handle upgrade from 8.0 RC2, since that is the version Online database migration uses. NB When this step was submitted, some updated imp files for new databases were also submitted. Step 27 Preference Description update with Service mappings and new rank/group fields; also cleanup of obsolete Counter preferences (#63450)
  • Modify table PrefDesc rank, subGroup, minLevel
Step 28 Add the Tags MDO list, a new Function Right to directly define tags, and assign that right to List and General admins
  • Add table Tags
  • Add table TagsGroupLink
  • Add table TagsHeadingLink
Step 29 Reload the CacheTabs table, to add new lists Step 30 It is now possible to turn off trailing-whitespace trimming of string fields in the database; and specify this and TimeZone processing in a generic manner
  • Modify table appointment do_By, done, endDate, activeDate
  • Modify table recurrenceRule startDate, endDate
  • Modify table email_folder name
Step 31 Preference descriptions for the R project Step 32 Transfer any password rules set in the now-obsolete preference System/PasswordPolicy into the password_rules table with id=1 Step 33 Add 4 fields to DocTemplate table to support Email-templates and prime in 1 row in UdListDefinition table to declare Email templates as a list
  • Modify table DocTmpl includeSignature, showCurrents, senderEmailMode, senderEmailAddress
Step 34 Re-add the Tags MDO list in UdListDefinition table. Step 35 Preference descriptions for the R project Step 36 New classifier fields to enabled personalized and source-bound archive layouts
  • Modify table SuperListColumnSize ownerTable, ownerRecord, group_id, configurationName
Step 37 Preference descriptions for invitation support Step 38 Preference descriptions for invitation support and cleanup of UserPreference table Step 39 New preference: default appointment type for incoming invitations Step 40 This step has been made obsolete by later changes Step 41 This step has been made obsolete by later changes Step 42 Updated preferences, and translated name of functional right to create Tags Step 43 Updated ZipCity for Norway Step 44 Add a table to keep historical information related to deleted associates
  • Add table AssociateHistory
Step 45 Add a field snum to table document, and cautionWarning to appointment
  • Modify table Document snum
  • Modify table Appointment cautionWarning
Step 46 Updated preferences Step 47 Update preferences priming; add a virtual field on person (dotsyntax); populate the new Main Contact field on all contact records
  • Modify table person emailBounceCount
  • Modify table contact
Step 48 Add fields for language and sentiment to ej_message; Update preferences priming: move the EmailBounceThreshold preference from the System section to the Mail section
  • Modify table ej_message language, sentiment, sentimentConfidence
Step 49 Add fields for language and sentiment to ej_message; Update preferences priming: move the EmailBounceThreshold preference from the System section to the Mail section
  • Modify table ej_message suggestedCategory_id
Step 50 Fix inconsistent Main Contact (supportPersonId) after bug in Sales.Web GUI Step 51 Add a virtual field on contact (dotsyntax)
  • Modify table contact emailBounceCount
Step 52 Add 1 field to DocTemplate table to support Invitation type templates
  • Modify table DocTmpl invitationDocType, privacyDocType
Step 53 Update Red Letter Days, table is overwritten, adding Red days for 2005-2030 for 23 countries Step 54 Add a virtual field on person and contact (dotsyntax): emailLastBounce
  • Modify table contact emailLastBounce
  • Modify table person emailLastBounce
Step 55 Reset bounceCount and lastBounce on the Email table for rows where lastBounce is before the start of year 2020 Step 56 Remove several sections and some individual preferences, that were only relevant to the Windows client. Remove never-used fields in searchcriterionvalue and replace with a string field for valueType
  • Modify table searchcriterionvalue valueType, valueDataType
  • Modify table searchcriterionvalue valueType
Step 57 Add TimeSpan=Minutes markers to relevant fields on the ticket, ej_message, invoice and ticket_priority tables; controls behaviour in Archives including Selection
  • Modify table ticket
  • Modify table ej_message time_spent, time_charge
  • Modify table invoice time_charged
  • Modify table ticket_priority deadline
  • Modify table ticket_status_history timespan, real_timespan
  • Modify table appointment done, do_by, activeDate, endDate
  • Modify table text updatedCount
Step 58 Update SOCompany information for new Online databases based on what is in the template and what data is wanted spring 2020 Step 60 Add mother_associate_id to appointments to optimize logic that depends on the owner of the mother appointment
  • Modify table appointment mother_associate_id
Step 61 Add soundex field to freetext words table to enable soundex searching
  • Modify table freetextwords word, soundEx
  • Modify table freetextindex contact_id
Step 62 New preference for disabling Image editor in Unlayer mailings editor Step 63 New functional right for hiding Service and Mailings button and screen Step 64 New preference for invitations, no tentative appointments for others Step 65 New preference for mailing, disable image library for royalty-free images Step 66 Add starting 0 to german zipcodes where it missed. Update N_List for US, remove duplicate MrMrs. Step 67 , Remove duplicate of LowerLimitsaletypecat, new preference for mailing, disable image library for royalty-free images, translations Step 68 New preference for document dialog in SOFO (and possible later OML, GmailLink and WEB) Step 69 Update some languageinfo and languageinfocountry for correct detecting of language for GDPR confirmation mail. Update RedLetterDay and SOCompany address for Germany. Add a zipcode for DK: Orø. Set group for quote documents for new dbs. Step 70 Added filename field to BatchTask table to be used by ExportArchiveBatchTask.
  • Modify table BatchTask FileName
Step 71 New preference for Mailing, DisableFormsPoweredBy. Rename Mailing header to Marketing. Some fixes of quotes to single quotes. Step 72 New field in Document-table for URL to external documents. Should be used internally by DocPlugins only!
  • Modify table document ExtUrl
Step 73 Turn on freetext index in online. Step 74
  • Add table CacheInvalidation
Step 75 New preference: disable export of tile data Step 76 Cleanup LocaleText - Reinsert all data Step 77 Cleanup Prefdesc and prefdescline: Only partner-added rows are left, all SuperOffice-maintained preferences are now described in code Step 78 Updated ZipToCity for Norway and Sweden Step 79 New complete LocaleText - with new ticket notifications Step 80 LocaleText - with LanguageRows for detection of supported GUI languages Step 81 Add functional right ‘Lock / Unlock Target Assignment’ Step 82 Index names for extrafields need to be as the Service code creates them; SDB import did not conform. This step will locate and rename any wrongly-named physical indexes (only applicable to databases that have been SDB-imported). There was also another bug where index-creation logic for extrafields was inverted, such that a field would get an index when it should not have, and vice versa. This is also corrected, both ways. Step 83 Historically, extra-fields of type ‘long text’ where ‘ntext’ in Sql Server. This data type is obsolete and such steps will be converted to ‘nvarchar(max)’, though without reallocating storage space as that might take a long time depending on the amount of data Step 84 Update translations for functional right ‘Can lock and unlock target assignment’ Step 85 New fields in QuoteVersion-table for use when requesting quote approval
  • Modify table QuoteVersion request_associate_id, request_comment
Step 86 New list tables to define quote approval and quote denied reasons
  • Add table QuoteApprReason
  • Add table QuoteApprReasonGroupLink
  • Add table QuoteApprReasonHeadingLink
  • Add table QuoteDenyReason
  • Add table QuoteDenyReasonGroupLink
  • Add table QuoteDenyReasonHeadingLink
Step 87 Add quote approval push notification texts Step 88 Add functional right ‘Targets Administrator’ Step 89 Add phone description and searchphone fields to freetext index
  • Modify table phone description, searchPhoneNumber
Step 90 Reset possible flag that says TAGS list is MDO grouped - not supported and should always be off Step 91 Change code-generation flags for the ticket and ej_message tables, to give a custome Row implementation in NetServer. No changes to physical DB schema.
  • Modify table ticket
  • Modify table ej_message
Step 92 Add invitation declined push notification texts Step 93 Update userpreference for Mirroring rows.Technical update of some imp files. Step 95 Correct a red date for UK. Step 96 Update SOCompany information for new Online databases based on data wanted december 2022 Step 97 Updated descriptions for UserCandidate fields. This removes the need to define descriptions further up in the carrier etc.
  • Modify table user_candidate person_id, secret_key, secret_value
Step 98 This table will contain the number of different entities an associate has created for usage statistics
  • Add table EntityCounts
Step 99 Repair missing ForeignKey relations for person.associate_id and person.group_id Step 100 Update SOCompany information for new Online databases based on data wanted april 2023 Step 101 Add composite index to avoid sql server making a very poor decisions in query execution of appointment conflict detector queries
  • Modify table appointment
Step 102 Mark udef number fields as freetext index sources.
  • Modify table udcontactSmall
  • Modify table udpersonSmall
  • Modify table udappntsmall
  • Modify table uddocsmall
  • Modify table udprojectSmall
  • Modify table udsalesmall
Step 103 Correct spelling for danish city Aarhus Step 104 FreetextWords and FreetextIndex tables used random primary keys during incremental indexing. This is now changing to ordinary PK’s from the sequence table. During the transition we need to “make room at the top” of the id space, to ensure we avoid collisions until the next full reindexing Step 105 Add FirstChange date, and reset the counters in the CacheInvalidation table, after changes to cache invalidation policies
  • Modify table CacheInvalidation FirstChange
Step 106 Add new index on freetext index table to improve query performance.
  • Modify table freetextindex
Step 107 (No longer valid) Remove old index on freetext index table so we can create new fresh indexes. Step 108 (No longer valid) Create new clustered index on freetext index table to improve query performance. Step 109 Increase length of Credentials.Secret and login.ns_secret.
  • Modify table Credentials secret
  • Modify table login ns_secret
Step 110 Workflow add 2 functional rights, moved from workflows Step 111 Remove user-specific unsafe file types. It should only be settable on the group level. Step 112 Clear bit 22 in ejUser.flags. It will be reused for storing ‘includeOwnTicketsInGetNext’. Step 113 Modify Message table to support new yellow banner messaging system
  • Modify table Message
Step 114 Update requiredModule for cs-listextratablecontent and cs-editextratablecontent to ‘superoffice.expander-services’ Step 115 Add ContentSetCount to Document table.
  • Modify table document contentSetCount
Step 116 As reporter is removed, customers with saved report documents want an easy way to retrieve them, so we give them a dynamic selection to do that Step 117 Update ejuser.num_expanded_messages Step 118 Add indexes for the search-criteria storage tables, which have become unexpectedly large
  • Modify table SearchCriteriaGroup
  • Modify table SearchCriterion
  • Modify table SearchCriterionValue
Step 119 Add OwnedExternally to Appointment.
  • Modify table appointment owned_externally
Step 120 Copy SR_ARCHIVE_NUMBER to SR_SALESARCHIVE_NUMBER and SR_PL_INTERESTS_PERSON to SR_PL_INTERESTS_1 in resourceoverride table to make different labelsubstitution possible for those two resources Step 121 Update RedLetterDays for Denmark, remove Store Bededag as red day from 2024, but keep it as named day Step 122 Add fields contactId and personId to the Notify table
  • Modify table notify contact_id, person_id
Step 123 Add table UtmParameters
  • Add table utm_parameters
Step 124 Add fields categorygroup and enable lead status
  • Modify table Category category_group, enable_lead_status
Step 125
  • Add table leadstatus
Step 126 Adding field leadstatus on contact and person table
  • Modify table contact leadstatus_id
  • Modify table person leadstatus_id
Step 127 Remove unused column leadstatus on contact table
  • Modify table contact leadstatus_id
  • Modify table person
Step 128 Corrects the DatabaseModel for three indexes that were incorrectly marked as unique after a previous upgrade. This step inspects the model for indexes on ‘target_revision_history.target_group_id’, ‘email_account.email_address’, and ‘email_folder.account_id’ and sets their IsUnique property to false if found to be true. Step 129 Remove ServiceAssociates rows from history. They are redundant and not used anymore. Step 130
  • Modify table sale stage_when_closed_id
  • Modify table SaleHist stage_when_closed_id
Step 131 Adding values for category_group, enable_lead_status in category table. (For new customers only) Step 132 This table will contain info on how to autoupdate category on contact and person when changing sale and leadstatus
  • Add table AutomatedCategoryUpdate
Step 133 This table will contain info on how to autoupdate category on contact and person when changing sale and leadstatus
  • Modify table AutomatedCategoryUpdate leadstatus_id
Step 134 Add column OwnerLock on table s_shipment_addr
  • Modify table s_shipment_addr owner_lock
Step 136 This step creates a table that contains all fonts selected to be available for external usage
  • Add table available_fonts
Step 137 Change attributes of the ‘parent’ fields on the Quote tables, to ensure that Sentry calculations are reset when these fields are changed
  • Modify table Quote SaleId
  • Modify table QuoteVersion QuoteId
  • Modify table QuoteAlternative QuoteVersionId
  • Modify table QuoteLine QuoteAlternativeId
Step 138 Add ExternalParticipants to Appointment.
  • Modify table appointment external_participants
Step 139 This step adds column deleted to table AvailableFonts to support soft delete of available fonts.
  • Modify table available_fonts deleted
Step 140 Add fonts for use in forms Step 141 Add fonts for use in forms, this time sorted alphabetically Step 142 Remove the ‘hide-reporter’ function right; it’s no longer needed since the Reporter product no longer exists. Drop all Reporter metadata tables.
  • Remove table OleField
  • Remove table OleFieldText
  • Remove table OleSubject
  • Remove table OleSubjectText
  • Remove table OleView
  • Remove table OleViewText
  • Remove table SORCRITERIA
  • Remove table SORFCT
  • Remove table SORFIELD
  • Remove table SOROPERATORS
  • Remove table SORPUBLISH
  • Remove table SORPUBLISHGROUPLINK
  • Remove table SORSECTION
  • Remove table SORTEMPLATE
  • Remove table REPORTERLISTDEF
Step 143 Add new project/projectmember fields for Lyyti events
  • Modify table project event_id, startDate
  • Modify table projectmember event_participant_status
Step 144 Remove eventual Reporter specific preferences from the UserPreference table Step 145 Remove unique index on productversion.(ownername, codename, version) that no longer makes sense
  • Modify table ProductVersion
Step 146 Remove obsolete (and empty) backup tables that only exists in One, after an earlier GDPR cleaning process that is no longer in use Step 147 Remove obsolete table ‘usagestats’, that contains usage statistics from the discontinued Windows Desktop client
  • Remove table UsageStats
Step 148 Add functional right ‘Can mark requests as Spam’ Step 149 Update translations for functional right ‘Can mark requests as Spam’ Step 150 Updated ZipToCity for Norway Step 151 Add sale.sale_cycle and the mirroring sale_hist.sale_cycle. Number of days from a sale being registered until it entered its current closed (Sold or Lost) state; 0/empty while open. Back-fills existing closed sales from salehist. Save-time maintenance lives in SaleRowImplementation.OnSaveAsync.
  • Modify table sale sale_cycle
  • Modify table SaleHist sale_cycle

ai

The ai_chat_turn table contains chat history for user’s chatbot sessions with GPT. Chats are keyed by the chat_id and associate_id, and ordered by timestamp. Chat Messages are automatically added to the history as the bot generates answers.
  • Add table ai_chat_turn
Step 2 Set default values for AI preferences.

chat

  • Modify table chat_topic
  • Modify table chat_topic_user can_respond, notifications, can_listen, manager
  • Modify table chat_session name, company_name, email, phone, first_message, last_message, flags
  • Modify table chat_message created_by
  • Modify table ejuser chat_status
Step 2
  • Modify table chat_topic widget_language
  • Modify table cust_lang iso_code
Step 3
  • Modify table chat_session project_id, sale_id, ticket_id, contact_id, transfer_to
  • Modify table config feature_toggle
Step 4
  • Modify table login_customer created_at
  • Add table quick_reply
Step 6
  • Modify table chat_session consented
Step 7
  • Modify table chat_topic
Step 8 Adding field for using a custom message in the chat widget queue message
  • Modify table chat_topic custom_queue_text
Step 9 Add CS language to chat_session table. Specify displayField to chat_topic table.
  • Modify table chat_session
  • Modify table chat_topic
Step 10 Add index on the chat_session table, to optimize the ‘anything happening now?’ requests that come in every 15 seconds, per service rep
  • Modify table chat_session
Step 11
  • Modify table chat_topic flags
Step 12
  • Modify table chat_session status
  • Modify table chat_message type, special_type
Step 13
  • Modify table chat_topic bot_enabled, bot_name, bot_register_trigger_id, bot_newsession_trigger_id, bot_statechange_trigger_id, bot_newmessage_trigger_id
  • Modify table chat_session chatbot_isactive
Step 14
  • Modify table chat_topic bot_register_trigger_id, bot_newsession_trigger_id, bot_statechange_trigger_id, bot_newmessage_trigger_id, bot_register_scriptid, bot_session_created_scriptid, bot_session_changed_scriptid, bot_message_received_scriptid
Step 15 Add fields for setting lunch hours on a chat topic.
  • Modify table chat_topic use_lunch_hours, lunch_start, lunch_stop
Step 16 Add more fields to chat_topic for agent use firstname.
  • Modify table chat_topic widget_agent_use_firstname
Step 17 Add suport for country in chat_session.
  • Modify table chat_session country
Step 18 Add notification interval for new chat messages in chat_topic.
  • Modify table chat_topic warning_chat_message, manager_warning_chat_message
Step 19 Add fields for enabling offline form capabilites when customer is in chat queue.
  • Modify table chat_topic offline_form_time_limit, offline_form_queue_length
Step 20 Add fields for support rating of a chat session.
  • Modify table chat_topic widget_enable_rating, widget_rating_text
  • Modify table chat_session rating
Step 21 Add field for chat widget badge color
  • Modify table chat_topic widget_badge_color
Step 22 Add field for chat widget styles
  • Modify table chat_topic widget_badge_text_color, widget_cust_msg_color, widget_cust_msg_text_color, widget_agent_msg_color, widget_agent_msg_text_color, widget_font_size, widget_button_color, widget_button_text_color

CollaborationMeeting

Add fields required for incoming VideoMeeting feature, and plan for outgoing too.
  • Modify table appointment join_videomeet_url, centralservice_videomeet_id
  • Modify table task default_videomeeting_status

configurablescreens

This table will contain deltas for configurable screens to add and remove from recipes in SCIL
  • Add table ConfigurableScreenDelta
Step 2 Added state enum for draft and published state for the json recipe deltas
  • Modify table ConfigurableScreenDelta deltaState
Step 3 Clear out all rows in SystemEvent, in preparation for a unique index to be defined Step 4 Create unique index on SystemEvent, to support multi-user-safe event locking
  • Modify table SystemEvent
Step 5 This table will contain a mapping on which type of data (appliesToKey) will be used to differ between layouts in the given recipeId
  • Add table ConfigurableScreenAppliesTo
Step 6 This table will contain list items for merging in as menu items in taskmenus
  • Add table TaskMenu
  • Add table TaskMenuGroupLink
  • Add table TaskMenuHeadingLink
Step 7 Added enocding enum ANSI UniCode or None
  • Modify table TaskMenu encoding
Step 8 Move webpanels that are actually task menu items to new table taskmenu Step 9 Update Ticket tab pane container ID from ‘CardPanes’ to ‘TicketTabPanes’ Step 10 Remove reference to FeatureToggle:NSTicketType Step 11 Update existing ticket status related CONFIGURABLESCREENDELTA because of the new TicketStatusComponent

ConsentManagement

This class is now empty, since step 5 nuked the consent tables
  • Modify table category family_id
Step 6
  • Modify table Category family_id
  • Remove table consent_person
  • Remove table consent_purpose
  • Remove table ConsentSource
  • Remove table LegalBase
  • Remove table category_family
  • Add table ConsentPurpose
  • Add table LegalBase
  • Add table ConsentSource
  • Add table ConsentPerson
  • Add table CategoryFamily
  • Modify table DocTmpl privacyDocType, emailSubject
  • Modify table Category CategoryFamily_id
Step 7
  • Modify table outbox rfc822_content
Step 9 One-time “migration” from person.nomailing and s_shipment_addr to become ConsentPerson rows Step 10 Make the person_id + consentPurpose_id index unique, this is an important constraint
  • Modify table ConsentPerson
Step 11 Make the person_id + consentPurpose_id index unique, this is an important constraint
  • Modify table ConsentPerson
  • Modify table ConsentPerson
  • Modify table ShipmentTypeReservation
  • Modify table ConsentPurpose
  • Modify table ConsentSource
  • Modify table LegalBase
  • Modify table ShipmentType
Step 12 Add to fields to ErpConnection table. ConsentSourceId and LegalBaseId. Both are foreign keys to GDPR tables. These fields will be set for all new persons synced to SuperOffice
  • Modify table ErpConnection ConsentSourceId, LegalBaseId
Step 13 Add to fields to ErpConnection table. ConsentSourceId and LegalBaseId. Both are foreign keys to GDPR tables. These fields will be set for all new persons synced to SuperOffice
  • Modify table ErpConnection ConsentSourceId, LegalBaseId
Step 14 Set the #STORE consent on all person records that do not already have it; we assume that all persons in the customers database are there for a legitimate reason Step 16 As we now set the #STORE consent on all person records that do not already have it, we also set a default consent and legal base for new persons, thus we set the Default legal base preference. Step 22 Remove confirmation mail links for consent sources where SuperOffice does not send privacy confirmation email by design. Step 23 Update document template to sync emailmode with privacytype Step 24 Improve GDPR field descriptions: adopt the more meaningful list-specific text for LegalBase and ConsentSource (name/rank/tooltip/key), and fix the copy/paste ConsentPerson.consentPurpose_id description (‘Legal base’ -> ‘Consent purpose’).
  • Modify table LegalBase name, tooltip, rank, key
  • Modify table ConsentSource name, tooltip, rank, key
  • Modify table ConsentPerson consentPurpose_id

Copilot

Add tables for Copilot
  • Add table copilot
  • Add table copilot_data_source
  • Add table copilot_data_source_setting
Step 2 Add initial Copilot

CRMScript

  • Add table script_trace
  • Add table script_trace_run
  • Modify table screen_chooser description, enabled
Step 2
  • Modify table ejscript extra_menus_id
Step 3
  • Modify table ejscript unique_identifier, registered, registered_associate_id, updated, updated_associate_id, updatedCount
  • Modify table screen_chooser unique_identifier, registered, registered_associate_id, updated, updated_associate_id, updatedCount
Step 4 Flag unique_identfier fields that they should be auto-populated with a GUID on creation; and populate existing rows with GUID’s
  • Modify table ejscript unique_identifier
  • Modify table screen_chooser unique_identifier
Step 5 Create unique indexes for GUID identifiers
  • Modify table ejscript unique_identifier
  • Modify table screen_chooser unique_identifier
Step 6 New flag field in screen_definition: autosave
  • Modify table screen_definition autosave
Step 7 Fix triggers with screen_type = 130. Set to 113 and disable. Step 8 Adds a type field to the ej_script table, to indicate what type of script this is.
  • Modify table ejscript type
Step 9 Adds a frames field to the script_trace_run table to contain the JSON frames of the trace.
  • Modify table script_trace_run frames
Step 10 Support for email notification and exceptions only for script trace.
  • Modify table script_trace notification_email, notify, num_notifications, exception_only, sum_runs, sum_size
Step 11 Adds a fk from screen_chooser to ejscript for TypeScript triggers.
  • Modify table screen_chooser ejscript_id

CS

  • Modify table ticket from_address
Step 3
  • Modify table s_message long_description
Step 4
  • Modify table ticket_status status
  • Modify table ticket_priority status, flags, ticket_read, changed_owner, ticket_newinfo, ticket_closed, ticket_changed_priority, ticket_new
  • Modify table ej_category delegate_method, closing_status, msg_closing_status, flags
Step 5
  • Modify table ticket status, slevel, origin, read_status
  • Modify table ticket_status status
Step 6
  • Modify table ej_message slevel, type, message_category
Step 7 Adding a field to ej_message, allowing the user to filter and view only important messages
  • Modify table ej_message important
Step 8 Add a ForeignKeyArray field to the ticket table as the first entity to use Tags; and add a contact_id to start off that project
  • Modify table Ticket tags, contact_id
Step 9 Transfer mobile phone from ticket to person if no phone on person Step 10 Set ticket.contact_id to be consistent with ticket.cust_id.contact_id; and copy the person classifiers (associate_id, group_id, business_idx, category_idx) from contact to person unless person.contact_id = 0 Step 11 Add flags to s_list_element table.
  • Modify table s_list_element status
Step 12 Create new table, attachment_location, to be able to store attachments in multiple locations
  • Add table attachment_location
  • Modify table attachment attachment_location_id
Step 13 Create and enable password rules if they have not been changed from the default Step 14 Add field for storing Mailgun DSN setting for each mailbox
  • Modify table mail_in_filter mailgun_dsn
Step 15 Add sentiment and language values to ticket table. Add index on ej_message.created_at
  • Modify table ej_message
  • Modify table ticket language, sentiment, sentimentConfidence
Step 16 Move ej_message.suggestedCategory_id to the ticket table. Add ticket.orig_human_category_id
  • Modify table ej_message suggestedCategory_id
  • Modify table ticket suggestedCategory_id, origHumanCategory_id
Step 17 Add details clob to ticket_log_action table for JSON logging Step 18 Change type of mail_in_filter.server_type to a defined enum called MailboxType
  • Modify table mail_in_filter server_type
Step 19 Stage 1 of 3: Introduce proper ForeignKey fields for ej_category: closing_status and msg_closing_status, and populate them
  • Modify table ej_category closing_status_temp, msg_closing_status_temp
Step 20 Stage 2 of 3: Drop old fields for ej_category: closing_status and msg_closing_status
  • Modify table ej_category closing_status, msg_closing_status
Step 21 Stage 3 of 3: Rename new fields for ej_category: closing_status_temp and msg_closing_status_temp to original names
  • Modify table ej_category closing_status_temp, msg_closing_status_temp
Step 22 Add fields for enabling/disabling AI operations on a Service mailbox
  • Modify table mail_in_filter ai_suggest_category, ai_text_analysis
Step 23 Change ticket notification expiry from 10 minutes to 24 hours Step 24 Add support for setting tags on email filter
  • Modify table ms_filter new_tags
Step 25 Add field for setting an URL on custom notifications
  • Modify table notify custom_url
Step 26 Increase the length of the field inbox.uidl
  • Modify table inbox uidl
Step 28
  • Modify table reply_template_body flags
  • Modify table reply_template flags
Step 29 Mark Ticket fields as freetext indexable.
  • Modify table ticket title, author, from_address
Step 30 Add changed_at and changed_by fields to EjMessage table.
  • Modify table ej_message changed_at
  • Modify table ej_message changed_by
Step 31 Add sale_id, project_id to Ticket table.
  • Modify table ticket sale_id, project_id
Step 32 Add IsDefinedByUserGroup field to CATEGORY_MEMBERSHIP table.
  • Modify table category_membership is_defined_by_usergroup, weight
Step 33 Increase the length of the field ej_message.message_id to 850 (as this is max size for an indexed field).
  • Modify table ej_message message_id
Step 34 Interprets TicketLogAction table’s LogAction field as enum instead of int
  • Modify table ticket_log_action log_action
Step 35 Adds badge column to explicitly determine how a message was generated
  • Modify table ej_message badge
Step 36 Add registered and registered_associate_id fields to Notify table
  • Modify table notify registered, registered_associate_id
Step 37 Mark Ticket status field as freetext indexable.
  • Modify table ticket status
Step 38 Add time_spent field to Ticket table
  • Modify table ticket time_spent
Step 39 This step has been superseded by a later step
  • Modify table ticket ticket_type, request_type
Step 40 Remove priming data for RequestType list that we wish to move to another table Step 41 Remove tables for never-implemented TicketType functionality. The motivation is to clear out junk, as well as keep a consistent naming scheme for ticket functionality
  • Modify table ticket_type
  • Modify table ticket_relation_type
  • Modify table ticket_relation_action
  • Modify table ticket_relation source, target, relation_type, registered, registered_associate_id, updated, updated_associate_id, updatedCount
  • Remove table request_type
  • Remove table request_type_priority
  • Remove table request_type_status
  • Modify table ticket request_type
  • Rename table ticket_type to obsolete_1
  • Rename table ticket_relation_type to obsolete_2
  • Rename table ticket_relation_action to obsolete_3
  • Rename table ticket_relation to obsolete_4
Step 42 Re-create the tables needed for the new ticket_type functionality
  • Add table ticket_type
  • Add table ticket_type_priority
  • Add table ticket_type_status
  • Modify table ticket ticket_type
Step 43 Adjust tables and priming data needed for the new ticket_type functionality
  • Modify table ticket_type deleted
Step 44 Add TimeSpan=Minutes marker to ticket.time_spent column; controls behaviour in Archives including Selection
  • Modify table ticket time_spent
Step 45 Remove primary key constraint from now-obsolete tables, to prevent faults during Database Mirroring. Only relevant for Online Step 46 Add ticket_type.is_default column and insert the first, default, request type
  • Modify table ticket_type is_default
Step 47 Add ticket_type as fields on mail_in_filter and ms_filter
  • Modify table mail_in_filter ticket_type
  • Modify table ms_filter new_ticket_type
Step 48 This step has been superseded by a later step Step 49 Update ticket_type.icon column with default icon value
  • Modify table ticket_type icon
Step 50 Ticket type priming data used to set default tooltip. We remove it by setting tooltip empty where ticket_type_id = 1 Step 51 Change CreatedBy criteria to be based on EjUser instead of Associate Step 52 Add dates for last execution over HTTP to Ejscript table
  • Modify table ejscript last_exec_http, last_exec_anon_http
Step 53 Add field for storing an id for icons on a extra table
  • Modify table extra_tables icon_id
Step 54 Add ticket_type.show_in_new, ticket_type.exclude_signature, ticket_type.exclude_email_recipients, ticket_type.external_as_default columns and insert the first, default, request type
  • Modify table ticket_type show_in_new, exclude_signature, exclude_email_recipients, external_as_default
Step 55 Add ticket_type.visible_for_groups field.
  • Modify table ticket_type visible_for_groups
Step 56 Add ticket_type.reply_forward_no_signature
  • Modify table ticket_type reply_forward_no_signature
Step 57 Add field source_code, which will contain the source code for the script, for example in Typescript.
  • Modify table ejscript source_code
Step 58 Add fields includes and last_compiled, which will be used to check if we need to just-in-time compile again.
  • Modify table ejscript includes, last_compiled
Step 59 Add ticket_type.reply_external_as_default
  • Modify table ticket_type reply_external_as_default
Step 60 Add field source_maps, which will contain mappings from location in body to source_code (with includes).
  • Modify table ejscript source_maps
Step 61 Adds ejscript HTTP verb access field
  • Modify table ejscript blocked_verbs
Step 62 Add a table number field
  • Modify table extra_tables table_number
Step 63 Fill extra_tables.table_number Step 64 Recalculate Model.NextTableNumber Step 65 Recalculate Model.NextTableNumber Step 66 Generate Dataright rows for CustomObjects for all applicable roles Step 67 Updates custom object selection table number to correct one Step 68 Create tables for ticket relations
  • Add table ticket_relation_def
  • Add table ticket_rel_def_ticket_type
  • Add table ticket_relation
Step 69 Update tables for ticket relations; truncate ticket relation table data
  • Modify table ticket_relation relation_type
  • Modify table ticket_relation_def name_passive, isBuiltIn
Step 70 Alter ticket_relation.ticket_relation_def_id NOT NULL. (Note, the data was truncated in previous DB step)
  • Modify table ticket_relation ticket_relation_def_id
Step 71 Drop tables previously made obsolete (we couldn’t delete them in earlier versions)
  • Remove table obsolete_1
  • Remove table obsolete_2
  • Remove table obsolete_3
  • Remove table obsolete_4
Step 72 Insert new default status for TicketBaseStatus.Spam. Insert new registry row

customerCenter

Create new table for storing customer center styling and configuration options
  • Add table cust_config
Step 2 Prime in default Customer Center Config Step 3 Create cc_template table for customer center templates
  • Add table cc_template
Step 4 Add payload column to the TemporaryKey table
  • Modify table TemporaryKey payload
Step 5 Upgrade cc_template formFrame2.html Step 6 Upgrade cc_template formFrame2.html Step 7 Upgrade cc_template formFrame2.html Step 8 Upgrade cc_template formFrame2.html Step 9 Upgrade cc_template formFrame2.html, form.js Step 10 Delete cc_template formFrame2.html, form.js with type=1 Step 11 Upgrade cc_template formFrame2.html, form.js Step 12 Upgrade cc_template formFrame2.html, form.js Step 13 Upgrade cc_template formFrame2.html Step 14 Upgrade cc_template formFrame2.html Step 15 Upgrade cc_template formFrame2.html Step 16 Upgrade cc_template updateSubscriptionsFrame2.html Step 17 Upgrade cc_template updateSubscriptionsFrame2.html Step 18 Upgrade cc_template updateSubscriptionsFrame2.html Step 19 Upgrade cc_template updateSubscriptionsFrame2.html Step 20 Upgrade cc_template formFrame2.html Step 21 Upgrade cc_template updateSubscriptionsFrame2.html Step 22 Upgrade cc_template updateSubscriptionsFrame2.html Step 23 Upgrade cc_template formFrame2.html Step 24 Upgrade cc_template formFrame2.html Step 25 Upgrade cc_template formFrame2.html Step 26 Upgrade cc_template formFrame2.html Step 27 Upgrade cc_template formFrame2.html Step 28 Upgrade cc_template formFrame2.html

dashboard

Add tables for Dashboard V2, these will store info about dashboards and dashboard tiles
  • Add table dashboard
  • Add table dashboard_theme
  • Add table dashboard_tile_definition
  • Add table dashboard_tile
  • Add table dashboard_tile_field
Step 2 Add rank to tiles
  • Modify table dashboard_tile rank
Step 3 Add selection foreign key, currency and more to tile definition
  • Modify table dashboard_tile_definition selection_id, currency_id, currency_mode, sort_by, measure, measure_field
Step 4 Add visible for, pinning, and more
  • Modify table dashboard_tile_definition secondary_selection_id, layout_config, entity_name
  • Modify table dashboard visible_for_all, visible_for_associates, visible_for_groups, pin_for_all, pin_for_associates, pin_for_groups
Step 5 Add rank to DashboardTheme
  • Modify table dashboard_theme rank
Step 6 Add functional right Step 7 Remove fulltext indexing generated by the FkArray datatype. FT indexing is good for large tables, but is asynchronous and that creates some headaches
  • Modify table dashboard
Step 8 Add columns to dashboard
  • Modify table dashboard columns
Step 9 Add measure_by_field column to dashboard
  • Modify table dashboard_tile_definition measure_by_field
Step 10 Add dashboard_tile_definition_id foreign key to selection
  • Modify table selection dashboard_tile_definition_id
Step 11 Add client column to dashboard_theme table
  • Modify table dashboard_theme client
Step 12 Prime default data
  • Modify table dashboard_theme isBuiltIn
  • Modify table dashboard guid
Step 13 Add currency_code to DashboardTileDefinition
  • Modify table dashboard_tile_definition currency_id, currency_code
Step 14 Set the required attributes to activate Sentry functionality on dashboard, dashboard_tile and dashboard_tile_definition. Update DashboardTheme with new font colors for dark themes.
  • Modify table dashboard
  • Modify table dashboard_tile
  • Modify table dashboard_tile_definition
Step 15 Update dashboard theme data with fixed IDs Step 16 Generate Dataright rows for the new Dashboard, in the data right matrix in Admin Step 17 Add ‘style’ to DashTheme
  • Modify table dashboard_theme style
Step 18 Update big number colors in dark mode for built-in dashboard themes Step 19 Update DashboardTileDefinition with information about where it can be used
  • Modify table dashboard_tile_definition usage
Step 20 Update colors for stalled and open sales in dashboards. Step 21 Update DashboardTheme with resource symbols. Step 22 Add table for QuickFilters
  • Add table quick_filter_info
Step 23 Superseded by DashboardStep24_DefaultDashboardNoOwner Step 24 Change associate_id of existing default dashboards to -1.

ExternalOwner

Adds support for external_owner system, used to keep track of external data that gets imported (e.g. BusinessTemplates)
  • Add table external_owner

forms

  • Add table form
  • Add table form_submission
Step 2
  • Modify table form active, expires, maxSubmits
Step 3
  • Modify table form type
Step 4
  • Modify table form recipe
Step 5
  • Modify table form_submission is_submitted
Step 6
  • Modify table form_submission is_submitted, status, processing_log
Step 7
  • Modify table form group_id
Step 8
  • Modify table ticket form_submission_id
Step 9
  • Modify table form form_key
Step 10 Create new field to be able to filter out forms that are used to creating tickets
  • Modify table form new_ticket
Step 11 Create new table FormFieldRestriction, used for saving restrictions for fields used in forms
  • Add table form_field_restriction

inbox

  • Add table email_account
  • Add table email_folder
  • Add table service_auth
  • Add table email_item
Step 2
  • Modify table email_item
Step 3
  • Modify table email_item replied_at, in_reply_to, messageId
  • Modify table email_account default
Step 4
  • Modify table email_account account_status
  • Modify table email_item cc
  • Modify table service_auth associate_id, auth_status
Step 5
  • Modify table timestamps mailsync
Step 6
  • Modify table email_account email_address
  • Modify table email_folder account_id
Step 7
  • Modify table email_account encryptedCheck, associate_id, incoming_auth, outgoing_auth
  • Modify table service_auth encryptedCheck, associate_id, server, port, auth_type, username, password
Step 8
  • Modify table email_account error_count, error_reason
  • Modify table email_item
  • Add table email_attachment
Step 9
  • Modify table email_folder folder_separator
Step 10
  • Modify table email_item cal_data
Step 11 Ensure all email-IDs used as foreignkeys in the foreignkey-table are enclosed in tags. Update all rows as needed, in one operation Step 12
  • Modify table email_account simple_mode, last_fetch
Step 13 Add string server_identifier on email_item, and bool use_graph_api on email_account
  • Modify table email_item server_identifier
  • Modify table email_account use_graph_api
Step 14 Delete obsolete field simple_mode on email_account (superseded by the user preference), and remove the obsolete Mail preferences (EnableMailSync, FirstMailSync, MailSyncTimer, CheckForDuplicates, RemoveAfterArchive, IsEmailInstalled, IsFaxInstalled) from prefdesc and userpreference.
  • Modify table email_account simple_mode

invitation

Adds support for invitations (iCal) leading to appointments
  • Add table invitation
  • Modify table email appointment_id
Step 2 Allows for storage of the organizer’s email and full name in the table; Adds support for recurring invitations.
  • Modify table invitation organizer_email, organizer_fullname, recurring_end_date
Step 3 Set preference “Diary sync active” if Infobridge synchronizer seem to be in use. Step 4 Adds support for modifications of single appointments in a recurring series.
  • Modify table invitation recurring_start_date
  • Modify table erpexternalkey
Step 5 Adds better support for modifications of single appointments in a recurring series.
  • Modify table appointment original_start_date
Step 6 Adds support for storing a chosen template language for email invitations.
  • Modify table invitation template_language

LandingPage

Add table for landing pages. One row per associate per entity (table number) storing which selection to show.
  • Add table landing_page
  • Add table landing_page_pin
Step 2 Rename table landing_page_pin to landing_page_tab and its primary key landing_page_pin_id to landing_page_tab_id.
  • Rename table landing_page_pin to landing_page_tab
  • Modify table landing_page_tab landing_page_pin_id
Step 3 Add columns pinned, rank and tab_type to landing_page_tab, now that it stores all tabs (not only pinned ones).
  • Modify table landing_page_tab pinned, rank, tab_type
Step 4 Add provider_name to landing_page_tab (and widen its unique index to include it) so hardcoded provider tabs (e.g. LastTickets, FavouriteTickets) can be stored alongside selection and entity tabs.
  • Modify table landing_page_tab provider_name

Mailings

Adding field to store the document mailing recipient sort order
  • Modify table s_shipment sorting
Step 2 Add fields for storing the design of a mailing message and mailing design type
  • Modify table s_message design, designtype
  • Add table s_messageblock
  • Modify table s_message flags
Step 3 Remove the old SOEditor mailing templates for new Online installations Step 4 Change type of S_Shipment.Status to a defined enum called ShipmentStatus and change type of (S_Link_Customer/S_Link_Customer_Statical).LinkType to ShipmentLinkType.
  • Modify table s_shipment status
  • Modify table s_link_customer link_type
  • Modify table s_link_customer_statical link_type
Step 5 Add field for storing foreign key to form_submission in s_shipment_addr. This is used to connect a mailing recipient with a form_submission, to be used to populate the parser.
  • Modify table s_shipment_addr form_submission_id
Step 6 Add two new fields so s_shipment_addr and Email for storing bounce code and bounce reason as separate fields.
  • Modify table s_shipment_addr bounce_code, bounce_reasontag, cleaned
  • Modify table Email lastBounceCode, lastBounceReason
Step 7 Add fields to s_shipment for cached statistical values
  • Modify table s_shipment
  • Modify table s_link_customer_statical
  • Modify table s_link_customer
  • Modify table s_shipment_addr
Step 8 Remove are_statistics_dirty from s_shipment, we want it to be NOT NULL with a DEFAULT (see next step)
  • Modify table s_shipment are_statistics_dirty
Step 9 Add are_statistics_dirty to s_shipment, with a NOT NULL and a DEFAULT of 1 (true)
  • Modify table s_shipment are_statistics_dirty
Step 10 Creates a new List called MailingDomains. The table will contain entries consisting of domain addresses, which can be used for enforcing a mailing to use one of these in the senders email address.
  • Add table MailingDomains
Step 11 Add sent_num field to s_shipment for cached statistical values
  • Modify table s_shipment sent_num
Step 12 Add a foreign key to s_message from s_link, to denote that a link is a local link, belonging to that particular message
  • Modify table s_link local_link
Step 13 Increase length of url column from 255 to 4000 characters
  • Modify table s_link url
Step 14 Move Bool redirect_is_url to a new enum field: redirect_kind
  • Modify table s_link redirect_kind, link_parameters
Step 15 Delete obsolete field redirect_is_url (moved to redirect_kind)
  • Modify table s_link redirect_is_url
Step 16 Add additional fields for form redirects
  • Modify table s_link form_id, form_parameters

Metering

Create table for metering service use
  • Add table metering_log
Create the navigation_history table, holding per-associate Current (persisted soprotocol) and Recent navigation entries, and migrate individual-level SuperMode navigation values out of the userpreference table.
  • Add table navigation_history

NewFollowupDialog

Changes length of text-field in Text-table, and adds html_text-field. Adds agenda_text_id and internal_notes_text_id to appointment.
  • Modify table text text, html_text
  • Modify table appointment agenda_text_id, internal_notes_text_id
Step 2 Add SendEmail field to Appointment table.
  • Modify table appointment SendEmail
Step 3 Add index on appointment agenda_text_id
  • Modify table appointment
Step 4 Add sentry to html text
  • Modify table text html_text

NewSelection

The typical search table is an owner of a set of predefined selection criteria Step 2 Cleanup after initial (obsolete) table definition
  • Remove table TypicalSearch
Step 3 Define the TypicalSearch table from scratch
  • Add table TypicalSearch
Step 4 Cleanup ‘temporary selection’ marking by introducing the IsTemporary field
  • Modify table selection SystemType
Step 5 Add fields to table selection for more functionality. Also update the default sidepanel view for all pages, in userpreference
  • Modify table selection chartKey, lastLoaded, lastLoadedBy, lastMembershipChange, lastMembershipChangeBy
Step 6 SelectionForFind creates a dynamic selection for each entity/associate as needed; they were missing the required VisibleFor row; those are added here Step 7 Update targetTableNumber to 5 where it was 0, and reset membercounts to -1 where we have no recent data Step 8 Due to limitations in the Windows code stack, the chartKey field is shortened to 254 characters
  • Modify table selection chartKey
Step 9 Board view settings
  • Add table board_view_settings
Step 10 Board view badge statistics (and other time accumulation statistics)
  • Add table time_keeping
Step 11 Making time_keeping table compatible with our standard generated code, easier cleanup of orphan records, and easier db merge
  • Modify table time_keeping ownerTable, ownerRecord, entity_id
Step 12 Bug 105828: migrate the ‘Owned by user group’ criterion from ‘<prefix>/otherGroups’ (matched any group membership via usergrouplink) to ‘<prefix>/usergroup’ (the owner’s primary group, associate.group_idx) for the associate, contactAssociate, contactSupportAssociate, personAssociate and projectAssociate prefixes. Only the stored criterion column name changes; operators and values are unaffected. Bare ‘otherGroups’ is not migrated. Bug 105828: the “Owned by user group” criterion must filter on the owner’s current PRIMARY group. It used to be bound to the ’…/otherGroups’ column, which restricts via the usergrouplink table and therefore also matched owners that merely had the group as a secondary group. The criterion is now bound to ’…/usergroup’ (associate.group_idx, the owner’s primary group). This step migrates every already-saved criterion, rewriting the stored criterion column from ‘<prefix>/otherGroups’ to ‘<prefix>/usergroup’ for each associate-owner prefix used by the archive providers. Both columns use the same UserGroup operators and store a user-group id as the value, so only the column name changes - operators, operatorId and the SearchCriterionValue rows are untouched. The bare ‘otherGroups’ column is intentionally NOT migrated.

NewsFeed

The NewsFeedItem and related tables allow agents and other systems to post news items to a user-oriented feed that can be rendered in start pages and dashboards.
  • Add table NewsFeedItem
  • Add table NewsFeedItemHtml
  • Add table NewsFeedItemCta
  • Add table NewsFeedItemRecipient
Step 2 Add Location and RatingPercent to NewsFeedItem. Bump CTA Identifier length to 1000.
  • Modify table NewsFeedItem Location, RatingPercent
  • Modify table NewsFeedItemCta Identifier

Notifications

Adds modified_appointment_fields field to appointment, and defines related ModifiedAppointmentFields enum.
  • Modify table appointment modified_appointment_fields
Step 2 Add index on appointment, fields: type, activeDate for efficient queries
  • Modify table appointment

Online

Add table OnlineApp, to echo information about authorizations and usage. Optimize indexes for userpreference table, based on Ops data
  • Add table OnlineApp
  • Modify table userpreference
  • Modify table userpreference

Optimization

  • Modify table TravelTransactionLog
  • Modify table ForeignKey
Step 2 Deleting obsolete counter-preferences

Pocket

  • Add table PushNotificationService
Step 2
  • Modify table PushNotificationService Language
Step 3
  • Modify table PushNotificationService PocketVersion, OSVersion
Step 5 Adding rank field to favourites
  • Modify table Favourite Rank
Step 6 Add TimeZoneId field to PushNotificationService, so notifications can use the recipients preferred timezone
  • Modify table PushNotificationService TimeZoneId

R_Service

Add field for storing flags on a service login session
  • Modify table login flags
Step 2 Change value of registry entry for maximum width of components Step 3 Make sure the row with id=1 in ejuser contains the ‘(System)’ user

SubscriptionMgmt

  • Add table MailingType
  • Add table MailingTypeReservation
  • Modify table s_shipment mailingtype_id
Step 3
  • Add table TemporaryKey
Step 5 The “MailingType” list conflicts with an existing, hard-coded list in NetServer with the same name. Not good.
  • Modify table MailingTypeReservation MailingType_id
  • Modify table s_shipment mailingtype_id
  • Rename table MailingType to ShipmentType
  • Modify table ShipmentType MailingType_id
  • Rename table MailingTypeReservation to ShipmentTypeReservation
  • Modify table ShipmentTypeReservation MailingTypeReservation_id, MailingType_id
  • Modify table s_shipment mailingtype_id
Step 6 The “MailingType” list conflicts with an existing, hard-coded list in NetServer with the same name. Not good.
  • Modify table ShipmentTypeReservation

SuperId

  • Modify table associate waiting_for_approval
Step 2
  • Modify table associate waiting_for_approval
Step 3
  • Modify table associate waiting_for_approval

targets

Add tables for Targets (Sales, Project, Selection… Step 2 Some further normalization
  • Remove table target_group
  • Remove table target_period
  • Remove table target_period_assignment
  • Add table target_group
  • Add table target_period
  • Add table target_assignment_info
  • Add table target_assignment_value
Step 3 Generate Dataright rows for Targets, in the data right matrix in Admin Step 4 Add tables for Targets revision history
  • Add table target_revision_history
  • Add table target_revision
  • Add table target_change
Step 5 Support larger values than 2 billion and log more revision details
  • Modify table target_revision_history target_assignment_info_id, target_group_id
  • Modify table target_assignment_value target_value2
  • Modify table target_change value_change_from2, value_change_to2
Step 6 Remove old value fields
  • Modify table target_assignment_value target_value, target_value2
  • Modify table target_change value_change_from, value_change_to, value_change_from2, value_change_to2
Step 7 Support for new dimensions in targets system
  • Add table target_dimension
  • Modify table target_group target_dimension_id
  • Modify table target_assignment_info target_dimension_item_id
Step 8 List field rename
  • Modify table target_dimension dimension_list

TechnicalDebt

In this step we would like to remove userpreference entries with duplicate primary key!

UserPreference

Migrate EjUser.num_expanded_messaged to UserPreference table Step 2 Migrate EjUser default_status_new_ticket, default_status_add_message, default_category, default_user to UserPreference table Step 3 Migrate EjUser flags to UserPreference table Step 4 Migrate EjUser NotifyMask to UserPreference table

Webhooks

The Webhook table keeps track of the Target_URL where we will dispatch HTTP POST notificationsof events that happen in SuperOffice. The webhook state should be ACTIVE(1). If too many errors are received when we try to POST to the TargetUrl, then the webhook state is changed to TOO-MANY-ERRORS(3). Define the new Webhook table to keep track of where we will dispatch HTTP POST notifications of events that happen in SuperOffice.
  • Add table Webhook
Step 2 The Webhook_usage table keeps track of How many calls/errors a webhook has encountered. Moved off the main Webhook table to avoid disturbing Webhook cache. Define the new WebhookUsage table to keep track of how much a webhook is used. Move these fields off the webhook table so we can update without bothering webhook cache
  • Add table Webhook_usage
Step 3 Remove the old usage fields from the webhooks table after the usage has been copied to the new webhook_usage table. Define the new WebhookUsage table to keep track of how much a webhook is used. Move these fields off the webhook table so we can update without bothering webhook cache
  • Modify table Webhook total_calls, total_errors, consecutive_errors, last_error
Step 4 The errors_email field tracks where to send an e-mail when NetServer receives too many errors trying to notify a webhook. Add error e-mail field to webhooks Allow e-mail to be sent to maintainer when webhook errors out
  • Modify table Webhook errors_email
Step 5 The Webhook_notify table allows multiple associates or ad-hoc email addresses to be notified when a webhook fails. The notify_via and notify_when columns on Webhook control how and when those notifications are sent. Existing errors_email values are migrated to Webhook_notify rows. Add Webhook_notify table for notifying multiple associates/emails on webhook failure. Add description, notify_via and notify_when columns to Webhook. Migrate existing errors_email data to Webhook_notify.
  • Modify table Webhook description, notify_via, notify_when
  • Add table Webhook_notify

Workflows

Add tables for Workflows (email flows etc.)
  • Add table workflow
  • Add table email_flow
  • Add table workflow_instance
  • Add table workflow_goal
  • Add table workflow_step
  • Add table workflow_trigger
Step 2 Add step rank
  • Modify table workflow_step Rank
Step 3 Add hierarchy_id (folder structure)
  • Modify table email_flow hierarchy_id
Step 4 Email settings on email flow
  • Modify table email_flow
  • Modify table workflow_instance next_step, wait_until
Step 5 Workflow settings for start, stop, remove from flow
  • Modify table workflow use_workflow_start, workflow_start, use_enrollment_end, enrollment_end, tzLocationId, remove_from_flows
  • Modify table email_flow tzLocationId
Step 6 Workflow blocklist and more
  • Modify table workflow block_lists
  • Modify table email_flow from_type, reply_to_type
Step 7 WorkflowStepOptions and Reply-To name
  • Modify table workflow_step parent_workflow_step_id
  • Modify table email_flow reply_to_name
  • Add table workflow_step_option
  • Add table workflow_step_option_link
Step 8 Email flow content (connected message assets)
  • Add table email_flow_content_link
Step 9 Store datetimes as UTC and disable automatic time zone conversion Step 10 Locking system for concurrency control needed by workflows (and others)
  • Add table temp_db_lock
Step 11 Workflow instance fields added
  • Modify table workflow_instance next_step, last_communication_step, dropout_reason, step_started, step_level
Step 12 Linking s_shipment_addr to workflow step and workflow instance to track responses
  • Modify table s_shipment_addr workflow_step_id, workflow_instance_id
Step 13 Indexing new foreign keys on s_shipment_addr
  • Modify table s_shipment_addr
Step 14 Change the key field from string to int
  • Modify table workflow_step_option key, key_id
Step 15 Exit settings for flow
  • Modify table workflow exit_flow_id, exit_success_flow_id
Step 16 WorkflowWaitForAction new table
  • Add table workflow_wait_for_action
Step 17 Workflow add 2 functional rights (obsolete) Step 18 Email flow content (more assets)
  • Modify table email_flow_content_link s_message_id, email_flow_id, form_id, s_link_id
Step 19 Workflow id elimination, simplification, optimization
  • Modify table email_flow workflow_id, main_message_id
  • Modify table workflow_step_option_link Rank
  • Add table workflow_root_step_link
Step 20 Workflow id elimination, and simplification
  • Modify table workflow_step workflow_id, rank
  • Modify table workflow_wait_for_action workflow_id
  • Modify table workflow_step_option workflow_id
Step 21 Searchable form fields
  • Add table form_field_value
Step 22 Add references to flow from other entities to track them (and some more)
  • Modify table person created_by_form_id, modified_by_workflow_id, modified_by_workflow_when
  • Modify table sale created_by_workflow_id
  • Modify table ticket created_by_workflow_id
  • Modify table appointment created_by_workflow_id