Stateflow, State and Reason on Datanodes

:warning: Subject to change!
Case Sale Stateflow an reasons described in this topic, has been depricated in November 2023. Older cases, without recent activity, may however still use the depricated stateflows, which can be identified by the stateflowNamespace property having the value dk.realequity.stateflow.salecase.

Currently valid stateflows are desribed here: Stateflows, states and endresults on cases.

:information_source: C&B Classic and States
RealEquity have many new possibilities and not all can be used by C&B Classic. Only a subset of the Stateflow framwork is in motion when using C&B Classic and RealEquity together. The standard Stateflows will be updated over time to better reflect the new possibilities in RealEquity.

Stateflows

Each Datanode have a Stateflow specified that defines the different states and reasons that can be used for the specific Datanode.

Each Datanode Instance Type have configured a default Stateflow for that Instance Type. When a Datanode instance have been created, the default Stateflow can be overridden by calling the SetStateFlow.

Custom Stateflows can be added through COCO JSON Import. This will require planning and thoroughly knowledge about the consequences of implementing custom flows for a Datanode.

There are some default Stateflows in the system.

Standard Stateflows

Default State Flow

Namespace: dk.realequity.stateflow.default
This Stateflow is the default for any Datanode. If no other Stateflow is specified, the Datanode will be using this Stateflow.

State Namespace Reasons
Draft dk.realequity.state.draft Initial Reason
Moved out of draft state
Abandoned
Active dk.realequity.state.active Moved out of active state
Moved back to draft state
Completed dk.realequity.state.complete Moved back to active state

Appointment Default State Flow

Namespace: dk.realequity.stateflow.appointment.default
This Stateflow is used to define the flow for an Appointment Datanode.

State Namespace Reasons (exit) State Category
Ikke bekræftet dk.realequity.state.notconfirmed Bekræftet
Reason namespace: dk.realequity.stateflow.reason.appointment.confirmed
Target state:
dk.realequity.state.confirmed


Aflyst
Reason namespace: dk.realequity.stateflow.reason.appointment.canceled
Target state:
dk.realequity.state.canceled
dk.realequity.statecategory.preprocessing
Bekræftet dk.realequity.state.confirmed Ikke bekræftet
Reason namespace: dk.realequity.stateflow.reason.appointment.notconfirmed
Target state:
dk.realequity.state.notconfirmed


Aflyst
*Reason namespace: dk.realequity.stateflow.reason.appointment.canceled
Target state:
dk.realequity.state.canceled
dk.realequity.statecategory.inprogress
Aflyst dk.realequity.state.canceled Bekræftet
_Reason namespace: dk.realequity.stateflow.reason.appointment.confirmed
Target state: dk.realequity.state.confirmed

Ikke bekræftet
_Reason namespace: dk.realequity.stateflow.reason.appointment.notconfirmed
Target state:
dk.realequity.state.notconfirmed*
dk.realequity.statecategory.removed

Case Sale State Flow

Namespace: dk.realequity.stateflow.salecase

:information_source: This stateflow is depricated. It may however, still be in use on older cases without recent activity. (Any Classic activity on a case will update the stateflow).

Click here to expand description

This Stateflow is used to define the flow for a Case Datanode.

:information_source: Reasons and the States in the State Flow
The Reasons defined in the list below is possible Reasons to move FROM the current State to a NEW State.

State Namespace Reasons (exit) State Category
Kladde dk.realequity.state.draft Forhandling igang
Reason namespace:
dk.realequity.stateflow.case.reason.negotiation
Target state: dk.realequity.state.negotiation

Aftale indgået
Reason namespace: dk.realequity.stateflow.case.reason.agreement-signed
Target state: dk.realequity.state.accepted

Aktiv i markedet
Reason namespace: dk.realequity.stateflow.case.reason.active-in-market
Target state: dk.realequity.state.active

Afsluttet uden aftale
Reason Namespace: dk.realequity.stateflow.case.reason.no-agreement
Target state: dk.realequity.state.completed

Erstattet af anden ydelse
Reason Namespace: dk.realequity.stateflow.case.reason.replaced-by-other-offer
Target state: dk.realequity.state.completed
dk.realequity.statecategory.preprocessing
Forhandling dk.realequity.state.negotiation Flyttet til kladde
Reason namespace: dk.realequity.stateflow.case.reason.moved-to-draft
Target state: dk.realequity.state.draft

Aftale indgået
Reason namespace: dk.realequity.stateflow.case.reason.agreement-signed
Target state: dk.realequity.state.accepted

Aktiv i markedet
Reason namespace: dk.realequity.stateflow.case.reason.active-in-market
Target state: dk.realequity.state.active
dk.realequity.statecategory.preprocessing
Accepteret dk.realequity.state.accepted Yderligere forhandlinger nødvendigt
Reason namespace: dk.realequity.stateflow.case.reason.more-negotiation-needed
Target state: dk.realequity.state.negotiation

Aktiv i markedet
Reason namespace: dk.realequity.stateflow.case.reason.active-in-market
Target state: dk.realequity.state.active

Erstattet af anden ydelse
Reason namespace: dk.realequity.stateflow.case.reason.replaced-by-other-offer
Target state: dk.realequity.state.completed

Afsluttet uden handel
Reason namespace: dk.realequity.stateflow.case.reason.no-deal
Target state: dk.realequity.state.completed

Afsluttet med handel
Reason namespace: dk.realequity.stateflow.case.reason.yes-deal
Target state: dk.realequity.state.completed
dk.realequity.statecategory.preprocessing
Aktiv dk.realequity.state.active Fjernet fra markedet
Reason namespace: dk.realequity.stateflow.case.reason.removed-from-market
Target state: dk.realequity.state.accepted

Yderligere forhandlinger nødvendigt
Reason namespace: dk.realequity.stateflow.case.reason.more-negotiation-needed
Target state: dk.realequity.state.negotiation

Afsluttet uden handel
Reason namespace: dk.realequity.stateflow.case.reason.completed-no-deal
Target state: dk.realequity.state.completed

Afsluttet med handel
Reason namespace: dk.realequity.stateflow.case.reason.completed-yes-deal
Target state: dk.realequity.state.completed

Handel indgået
Reason namespace: dk.realequity.stateflow.case.reason.yes-deal
Target state: dk.realequity.state.completed
dk.realequity.statecategory.inprogress
Efterbehandling dk.realequity.state.postprocessing Handel endeligt afsluttet
Reason namespace: dk.realequity.stateflow.case.reason.completed-yes-deal
Target state: dk.realequity.state.completed

Genaktiveret i markedet
Reason namespace: dk.realequity.stateflow.case.reason.reactivated-in-market
Target state: dk.realequity.state.active
dk.realequity.statecategory.postprocessing
Afsluttet dk.realequity.state.completed Genaktiveret i markedet
Reason namespace: dk.realequity.stateflow.case.reason.reactivated-in-market
Target state: dk.realequity.state.active
dk.realequity.statecategory.completed
Fjernet dk.realequity.state.removed dk.realequity.statecategory.removed

To get detailed information about Stateflows, States, Reasons and State Categories, download the Core Configuration from the Admin portal.

Mapping from Classic States

Classic sagstatus statenamespace statereason (entry) statecategory
V = Blank dk.realequity.state.draft dk.realequity.stateflow.case.reason.new preprocessing
G = Salgsvurdering dk.realequity.state.negotiation dk.realequity.stateflow.case.reason.negotiation preprocessing
U = Formidlingsaftale indgået dk.realequity.state.accepted dk.realequity.stateflow.case.reason.agreement-signed preprocessing
A = Salgsaktiv dk.realequity.state.active dk.realequity.stateflow.case.reason.active-in-market inprogress
N = Købsaftale underskrevet dk.realequity.state.postprocessing dk.realequity.stateflow.case.reason.yes-deal postprocessing
S = Handlen er endelig dk.realequity.state.completed dk.realequity.stateflow.case.reason.completed-yes-deal completed
O = Lukket uden formidlingsaftale dk.realequity.state.completed dk.realequity.stateflow.case.reason.no-agreement completed
H = Lukket uden handel dk.realequity.state.completed dk.realequity.stateflow.case.reason.completed-no-deal completed
C = Berigtigelse annulleret dk.realequity.state.postprocessing dk.realequity.stateflow.case.reason.rectification-canceled postprocessing
B = Berigtigelse igangsat dk.realequity.state.rectification dk.realequity.stateflow.case.reason.rectification-started postprocessing
D = Berigtigelse gennemført dk.realequity.state.completed dk.realequity.stateflow.case.reason.completed-yes-deal completed
Z = Sat i bero dk.realequity.state.accepted dk.realequity.stateflow.case.reason.removed-from-market preprocessing

States and Reasons

Stateflows contain definitions for a number of States and how it is possible to move between each of the States. To move from one state to another, at least one Reason needs to exist, that makes the move possible. A Reason is defined on a State and points to a different State.
A State and Reason can be set on a Datanode by calling the UpdateState

:warning: A State is always a part of ONE State Category
All States defines what State Category they are a part of. It is not possible for a State to be in more than one State Category or be without a State Category.

State Categories

State Categories are system wide known by the RealEquity platform. Unlike States, State Categories cannot be changed or extended. A State Category defines the generalized place in any Stateflow. An example: If a Case is in the StateCategory: InProgress, the Case must be active in the market.

State Category Namespace Description
PreProcessing dk.realequity.statecategory.preprocessing The Datanode is in a state before the “active” period. A Datanode in this category could be (as an example) in a Draft State or in Negotiation State.
InProgress dk.realequity.statecategory.inprogress The Datanode is in the “active” period of its life. A Datanode in this category could be (as an example) in an Active State. If this was the case for a Case Datanode Instance Type, the Case would be available in the market.
InitPostProcessing dk.realequity.statecategory.initpostprocessing The Datanode in this category would be in an evaluation state before going into the PostProcessing State Category. As an example: A Case Datanode with this category would be waiting for a number of requirements or deadlines to be expired, so the Case can move on to the PostProcessing State Category.
PostProcessing dk.realequity.statecategory.postprocessing Datanodes in this category have come to the point where the Datanode is getting finished up to move on to the Completed State category. As an example: A Case datanode would be in this category when a buyer is found and the work to finalize the deal is going on.
Completed dk.realequity.statecategory.completed Datanodes in this category would have come to the end of its life. As an example, a Case Datanode would be in this state, if the deal was finalized or if the case was lost.
Failed dk.realequity.statecategory.failed The Datanode is in some form of failed State. This will only happen if the system ends up resolving the state category to a unknown type.
Removed dk.realequity.statecategory.removed The Datanode is no longer relevant, and have been removed from normal list views. Datanodes in the Removed category will not be shown when doing standard searches or lists for the Datanode.