From a4f67eb8522e999481d40846289568c34acfbdf9 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Tue, 8 Jun 2021 13:49:46 +0200 Subject: [PATCH] IDEMPIERE-4782 Multi-factor authentication (FHCA-2034) (#705) * IDEMPIERE-4782 Multi-factor authentication (FHCA-2034) Implement suggestions from Heng Sin * IDEMPIERE-4782 Multi-factor authentication (FHCA-2034) Fix security warning advised by github/CodeQL * IDEMPIERE-4782 Multi-factor authentication (FHCA-2034) Implement an incremental delay in zk when the validation code is wrong (to avoid brute-force attacks) As suggested by Ricardo Santana: * ensures one-time only use of an OTP * Log failures in AuthFailure.log * IDEMPIERE-4782 Multi-factor authentication (FHCA-2034) * Log failures in AuthFailure.log - add case for login with email * Implement incremental delay also for login panel --- .../oracle/202105301448_IDEMPIERE-4782.sql | 1496 +++++++++++++++++ .../202105301448_IDEMPIERE-4782.sql | 1493 ++++++++++++++++ .../oracle/202106072201_IDEMPIERE-4782.sql | 95 ++ .../202106072201_IDEMPIERE-4782.sql | 92 + .../model.generator.launch | 2 + .../packinfolder.app.launch | 2 + .../sign.database.build.launch | 2 + .../synchronize-terminology.app.launch | 2 + .../translation.app.launch | 2 + org.adempiere.base/.project | 5 + org.adempiere.base/META-INF/MANIFEST.MF | 4 +- .../OSGI-INF/MFAEMailMechanism.xml | 8 + .../OSGI-INF/MFATOTPMechanism.xml | 8 + org.adempiere.base/build.properties | 15 - .../src/org/compiere/model/IMFAMechanism.java | 76 + .../src/org/compiere/model/I_MFA_Method.java | 263 +++ .../model/I_MFA_RegisteredDevice.java | 181 ++ .../compiere/model/I_MFA_Registration.java | 294 ++++ .../src/org/compiere/model/I_MFA_Rule.java | 159 ++ .../src/org/compiere/model/MMFAMethod.java | 110 ++ .../compiere/model/MMFARegisteredDevice.java | 94 ++ .../org/compiere/model/MMFARegistration.java | 208 +++ .../src/org/compiere/model/MSysConfig.java | 4 +- .../src/org/compiere/model/SystemIDs.java | 1 + .../src/org/compiere/model/X_MFA_Method.java | 355 ++++ .../model/X_MFA_RegisteredDevice.java | 187 +++ .../compiere/model/X_MFA_Registration.java | 391 +++++ .../src/org/compiere/model/X_MFA_Rule.java | 154 ++ .../process/MFACompleteRegistration.java | 103 ++ .../src/org/compiere/process/MFARegister.java | 103 ++ .../org/compiere/process/MFARevokeDevice.java | 96 ++ .../org/compiere/process/MFAUnregister.java | 75 + .../src/org/compiere/util/Login.java | 17 +- .../src/org/idempiere/mfa/EMailMechanism.java | 290 ++++ .../src/org/idempiere/mfa/TOTPMechanism.java | 255 +++ org.adempiere.install/install.app.launch | 2 + .../install.console.app.launch | 2 + .../install.silent.app.launch | 2 + .../server.product.functionaltest.launch | 2 + .../server.product.launch | 2 + .../setup/configuration/config.ini | 4 +- .../mfaregisterparameterslistener.xml | 9 + .../webui/apps/form/MFARegisterForm.java | 250 +++ .../webui/desktop/DefaultDesktop.java | 4 +- .../org/adempiere/webui/panel/LoginPanel.java | 8 + .../org/adempiere/webui/panel/RolePanel.java | 67 +- .../webui/panel/ValidateMFAPanel.java | 439 +++++ .../adempiere/webui/process/MFARegister.java | 68 + .../process/MFARegisterParameterListener.java | 58 + .../webui/session/SessionManager.java | 8 +- .../adempiere/webui/util/UserPreference.java | 34 +- .../adempiere/webui/window/LoginWindow.java | 31 +- .../maven.locations.xml | 17 +- .../org.idempiere.p2.targetplatform.target | 16 +- org.idempiere.test/idempiere.unit.test.launch | 2 + 55 files changed, 7578 insertions(+), 89 deletions(-) create mode 100644 migration/i8.2/oracle/202105301448_IDEMPIERE-4782.sql create mode 100644 migration/i8.2/postgresql/202105301448_IDEMPIERE-4782.sql create mode 100644 migration/i8.2z/oracle/202106072201_IDEMPIERE-4782.sql create mode 100644 migration/i8.2z/postgresql/202106072201_IDEMPIERE-4782.sql create mode 100644 org.adempiere.base/OSGI-INF/MFAEMailMechanism.xml create mode 100644 org.adempiere.base/OSGI-INF/MFATOTPMechanism.xml create mode 100644 org.adempiere.base/src/org/compiere/model/IMFAMechanism.java create mode 100644 org.adempiere.base/src/org/compiere/model/I_MFA_Method.java create mode 100644 org.adempiere.base/src/org/compiere/model/I_MFA_RegisteredDevice.java create mode 100644 org.adempiere.base/src/org/compiere/model/I_MFA_Registration.java create mode 100644 org.adempiere.base/src/org/compiere/model/I_MFA_Rule.java create mode 100644 org.adempiere.base/src/org/compiere/model/MMFAMethod.java create mode 100644 org.adempiere.base/src/org/compiere/model/MMFARegisteredDevice.java create mode 100644 org.adempiere.base/src/org/compiere/model/MMFARegistration.java create mode 100644 org.adempiere.base/src/org/compiere/model/X_MFA_Method.java create mode 100644 org.adempiere.base/src/org/compiere/model/X_MFA_RegisteredDevice.java create mode 100644 org.adempiere.base/src/org/compiere/model/X_MFA_Registration.java create mode 100644 org.adempiere.base/src/org/compiere/model/X_MFA_Rule.java create mode 100644 org.adempiere.base/src/org/compiere/process/MFACompleteRegistration.java create mode 100644 org.adempiere.base/src/org/compiere/process/MFARegister.java create mode 100644 org.adempiere.base/src/org/compiere/process/MFARevokeDevice.java create mode 100644 org.adempiere.base/src/org/compiere/process/MFAUnregister.java create mode 100644 org.adempiere.base/src/org/idempiere/mfa/EMailMechanism.java create mode 100644 org.adempiere.base/src/org/idempiere/mfa/TOTPMechanism.java create mode 100644 org.adempiere.ui.zk/OSGI-INF/mfaregisterparameterslistener.xml create mode 100644 org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/MFARegisterForm.java create mode 100644 org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/ValidateMFAPanel.java create mode 100644 org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/process/MFARegister.java create mode 100644 org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/process/MFARegisterParameterListener.java diff --git a/migration/i8.2/oracle/202105301448_IDEMPIERE-4782.sql b/migration/i8.2/oracle/202105301448_IDEMPIERE-4782.sql new file mode 100644 index 0000000000..70fde3282f --- /dev/null +++ b/migration/i8.2/oracle/202105301448_IDEMPIERE-4782.sql @@ -0,0 +1,1496 @@ +SET SQLBLANKLINES ON +SET DEFINE OFF + +-- IDEMPIERE-4782 Multi-factor authentication (FHCA-2034) +-- May 30, 2021, 2:44:22 PM CEST +INSERT INTO AD_Menu (AD_Menu_ID,Name,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsSummary,IsSOTrx,IsReadOnly,EntityType,IsCentrallyMaintained,AD_Menu_UU) VALUES (200184,'Multi Factor Authentication',0,0,'Y',TO_DATE('2021-05-30 14:44:21','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:21','YYYY-MM-DD HH24:MI:SS'),100,'Y','Y','N','D','N','c40cde28-5062-4990-89e1-187e9991ee68') +; + +-- May 30, 2021, 2:44:22 PM CEST +INSERT INTO AD_TREENODEMM(AD_Client_ID, AD_Org_ID, CreatedBy, UpdatedBy, Parent_ID, SeqNo, AD_Tree_ID, Node_ID)VALUES(0, 0, 0, 0, 0,15, 10, 200184) +; + +-- May 30, 2021, 2:44:22 PM CEST +INSERT INTO AD_Process (AD_Process_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,Description,IsReport,Value,IsDirectPrint,Classname,AccessLevel,EntityType,Statistic_Count,Statistic_Seconds,IsBetaFunctionality,ShowHelp,CopyFromProcess,AD_Process_UU,AllowMultipleExecution) VALUES (200129,0,0,'Y',TO_DATE('2021-05-30 14:44:22','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:22','YYYY-MM-DD HH24:MI:SS'),100,'Unregister MFA Mechanism','Unregister a multi-factor authentication registration','N','MFAUnregister','N','org.idempiere.process.MFAUnregister','7','D',0,0,'N','Y','N','69f1a324-48dd-46be-ba96-0a6a7606dd4d','P') +; + +-- May 30, 2021, 2:44:23 PM CEST +INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,PrintName,EntityType,AD_Element_UU) VALUES (203487,0,0,'Y',TO_DATE('2021-05-30 14:44:22','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:22','YYYY-MM-DD HH24:MI:SS'),100,'MFA_Registration_ID','MFA Registration','MFA Registration','D','828f84d2-2a9c-4002-bd8e-9b447181699f') +; + +-- May 30, 2021, 2:44:23 PM CEST +INSERT INTO AD_Process_Para (AD_Process_Para_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,AD_Process_ID,SeqNo,AD_Reference_ID,IsRange,FieldLength,IsMandatory,ColumnName,IsCentrallyMaintained,EntityType,AD_Element_ID,AD_Process_Para_UU,IsEncrypted,IsAutocomplete) VALUES (200343,0,0,'Y',TO_DATE('2021-05-30 14:44:23','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:23','YYYY-MM-DD HH24:MI:SS'),100,'MFA Registration',200129,10,19,'N',22,'Y','MFA_Registration_ID','Y','D',203487,'48527fb9-5623-4dc2-9383-e29f22e5e709','N','N') +; + +-- May 30, 2021, 2:44:23 PM CEST +INSERT INTO AD_Process (AD_Process_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,Description,IsReport,Value,IsDirectPrint,Classname,AccessLevel,EntityType,Statistic_Count,Statistic_Seconds,IsBetaFunctionality,ShowHelp,CopyFromProcess,AD_Process_UU,AllowMultipleExecution) VALUES (200130,0,0,'Y',TO_DATE('2021-05-30 14:44:23','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:23','YYYY-MM-DD HH24:MI:SS'),100,'Complete MFA Registration','Complete a registration for a multi-factor authentication mechanism','N','MFACompleteRegistration','N','org.idempiere.process.MFACompleteRegistration','7','D',15,101,'N','Y','N','8f788304-5bcb-4a5d-af28-11b56923995b','P') +; + +-- May 30, 2021, 2:44:24 PM CEST +INSERT INTO AD_Val_Rule (AD_Val_Rule_ID,Name,Type,Code,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Val_Rule_UU) VALUES (200149,'MFA_Registration - Pending to Complete','S','MFA_Registration.IsValid=''N'' AND MFA_Registration.IsActive=''Y''',0,0,'Y',TO_DATE('2021-05-30 14:44:23','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:23','YYYY-MM-DD HH24:MI:SS'),100,'D','195ee644-3a97-4f53-a903-117a3975ea61') +; + +-- May 30, 2021, 2:44:24 PM CEST +INSERT INTO AD_Process_Para (AD_Process_Para_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,AD_Process_ID,SeqNo,AD_Reference_ID,IsRange,AD_Val_Rule_ID,FieldLength,IsMandatory,ColumnName,IsCentrallyMaintained,EntityType,AD_Element_ID,AD_Process_Para_UU,IsEncrypted,IsAutocomplete) VALUES (200344,0,0,'Y',TO_DATE('2021-05-30 14:44:24','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:24','YYYY-MM-DD HH24:MI:SS'),100,'MFA Registration',200130,10,18,'N',200149,22,'Y','MFA_Registration_ID','Y','D',203487,'60c97d2a-d429-4272-a218-c5dc33bb6200','N','N') +; + +-- May 30, 2021, 2:44:24 PM CEST +INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,PrintName,EntityType,AD_Element_UU) VALUES (203488,0,0,'Y',TO_DATE('2021-05-30 14:44:24','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:24','YYYY-MM-DD HH24:MI:SS'),100,'MFAValidationCode','Validation Code','Validation Code','D','7e4caab2-1095-4996-8d00-e5fa7e7917c5') +; + +-- May 30, 2021, 2:44:25 PM CEST +INSERT INTO AD_Process_Para (AD_Process_Para_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,AD_Process_ID,SeqNo,AD_Reference_ID,IsRange,FieldLength,IsMandatory,ColumnName,IsCentrallyMaintained,EntityType,AD_Element_ID,AD_Process_Para_UU,IsEncrypted,IsAutocomplete) VALUES (200345,0,0,'Y',TO_DATE('2021-05-30 14:44:24','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:24','YYYY-MM-DD HH24:MI:SS'),100,'Validation Code',200130,20,10,'N',2000,'Y','MFAValidationCode','Y','D',203488,'b4242496-e7b5-4806-98da-e27861884487','N','N') +; + +-- May 30, 2021, 2:44:25 PM CEST +INSERT INTO AD_Process_Para (AD_Process_Para_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,Description,Help,AD_Process_ID,SeqNo,AD_Reference_ID,IsRange,FieldLength,IsMandatory,ColumnName,IsCentrallyMaintained,EntityType,AD_Element_ID,AD_Process_Para_UU,IsEncrypted,IsAutocomplete) VALUES (200346,0,0,'Y',TO_DATE('2021-05-30 14:44:25','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:25','YYYY-MM-DD HH24:MI:SS'),100,'Name','Alphanumeric identifier of the entity','The name of an entity (record) is used as an default search option in addition to the search key. The name is up to 60 characters in length.',200130,30,10,'N',60,'N','Name','Y','D',469,'40f4aaf0-4315-4d49-b7b2-65dc50aaa65d','N','N') +; + +-- May 30, 2021, 2:44:25 PM CEST +INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,PrintName,EntityType,AD_Element_UU) VALUES (203489,0,0,'Y',TO_DATE('2021-05-30 14:44:25','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:25','YYYY-MM-DD HH24:MI:SS'),100,'IsUserMFAPreferred','Preferred','Preferred','D','aa3d11ca-e0bf-4e0d-985c-ebba224c048c') +; + +-- May 30, 2021, 2:44:26 PM CEST +INSERT INTO AD_Process_Para (AD_Process_Para_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,AD_Process_ID,SeqNo,AD_Reference_ID,IsRange,FieldLength,IsMandatory,DefaultValue,ColumnName,IsCentrallyMaintained,EntityType,AD_Element_ID,AD_Process_Para_UU,IsEncrypted,IsAutocomplete) VALUES (200347,0,0,'Y',TO_DATE('2021-05-30 14:44:25','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:25','YYYY-MM-DD HH24:MI:SS'),100,'Preferred',200130,40,20,'N',1,'Y','N','IsUserMFAPreferred','Y','D',203489,'583697b4-1448-414d-bfd8-c1ce9aef65d7','N','N') +; + +-- May 30, 2021, 2:44:26 PM CEST +INSERT INTO AD_Window (AD_Window_ID,Name,Description,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,WindowType,Processing,EntityType,IsSOTrx,IsDefault,IsBetaFunctionality,AD_Window_UU) VALUES (200114,'MFA Method','Multi-factor Authentication Method',0,0,'Y',TO_DATE('2021-05-30 14:44:26','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:26','YYYY-MM-DD HH24:MI:SS'),100,'M','N','D','Y','N','N','a23a7b83-7c8f-4fdd-8417-17cb06d078f1') +; + +-- May 30, 2021, 2:44:26 PM CEST +INSERT INTO AD_Table (AD_Table_ID,Name,Description,AD_Window_ID,TableName,LoadSeq,AccessLevel,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsSecurityEnabled,IsDeleteable,IsHighVolume,IsView,EntityType,ImportTable,IsChangeLog,ReplicationType,CopyColumnsFromTable,IsCentrallyMaintained,AD_Table_UU,Processing,DatabaseViewDrop,CopyComponentsFromView,CreateWindowFromTable) VALUES (200273,'MFA Method','Multi-factor Authentication Method',200114,'MFA_Method',0,'4',0,0,'Y',TO_DATE('2021-05-30 14:44:26','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:26','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','N','N','D','N','Y','L','N','Y','52a472cb-eb8a-4a3e-a0f4-5631a0e564c2','N','N','N','N') +; + +-- May 30, 2021, 2:44:27 PM CEST +INSERT INTO AD_Sequence (Name,CurrentNext,IsAudited,StartNewYear,Description,IsActive,IsTableID,AD_Client_ID,AD_Org_ID,Created,CreatedBy,Updated,UpdatedBy,AD_Sequence_ID,IsAutoSequence,StartNo,IncrementNo,CurrentNextSys,AD_Sequence_UU) VALUES ('MFA_Method',1000000,'N','N','Table MFA_Method','Y','Y',0,0,TO_DATE('2021-05-30 14:44:27','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:27','YYYY-MM-DD HH24:MI:SS'),100,200342,'Y',1000000,1,200000,'d2bc703d-8b95-4e07-bd97-166f4b33ac84') +; + +-- May 30, 2021, 2:44:27 PM CEST +INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,Description,PrintName,EntityType,AD_Element_UU) VALUES (203490,0,0,'Y',TO_DATE('2021-05-30 14:44:27','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:27','YYYY-MM-DD HH24:MI:SS'),100,'MFA_Method_ID','MFA Method','Multi-factor Authentication Method','MFA Method','D','948b99e9-b928-4fca-b57f-660cbd9d9a22') +; + +-- May 30, 2021, 2:44:28 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214429,1,'MFA Method','Multi-factor Authentication Method',200273,'MFA_Method_ID',22,'Y','N','Y','N','N',0,'N',13,0,0,'Y',TO_DATE('2021-05-30 14:44:27','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:27','YYYY-MM-DD HH24:MI:SS'),100,203490,'N','N','D','Y','N','N','Y','d98419f9-35b5-4232-9ef1-3589dab0ed49','N','N','N','N','N') +; + +-- May 30, 2021, 2:44:28 PM CEST +CREATE TABLE MFA_Method (MFA_Method_ID NUMBER(10) NOT NULL, CONSTRAINT MFA_Method_Key PRIMARY KEY (MFA_Method_ID)) +; + +-- May 30, 2021, 2:44:28 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,AD_Val_Rule_ID,ColumnName,DefaultValue,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214430,1,'Client','Client/Tenant for this installation.','A Client is a company or a legal entity. You cannot share data between Clients. Tenant is a synonym for Client.',200273,129,'AD_Client_ID','@#AD_Client_ID@',22,'N','N','Y','N','N',0,'N',19,0,0,'Y',TO_DATE('2021-05-30 14:44:28','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:28','YYYY-MM-DD HH24:MI:SS'),100,102,'N','N','D','Y','N','N','Y','0af99da2-d540-4b44-8528-c9f319f86dfc','N','N','N','D','N') +; + +-- May 30, 2021, 2:44:28 PM CEST +ALTER TABLE MFA_Method ADD AD_Client_ID NUMBER(10) NOT NULL +; + +-- May 30, 2021, 2:44:28 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,AD_Val_Rule_ID,ColumnName,DefaultValue,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214431,1,'Organization','Organizational entity within client','An organization is a unit of your client or legal entity - examples are store, department. You can share data between organizations.',200273,104,'AD_Org_ID','@#AD_Org_ID@',22,'N','N','Y','N','N',0,'N',19,0,0,'Y',TO_DATE('2021-05-30 14:44:28','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:28','YYYY-MM-DD HH24:MI:SS'),100,113,'N','N','D','Y','N','N','Y','4eaef723-4c38-47b6-a857-0ee776cadb43','N','N','N','D','N') +; + +-- May 30, 2021, 2:44:28 PM CEST +ALTER TABLE MFA_Method ADD AD_Org_ID NUMBER(10) NOT NULL +; + +-- May 30, 2021, 2:44:28 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,DefaultValue,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214432,1,'Created','Date this record was created','The Created field indicates the date that this record was created.',200273,'Created','SYSDATE',7,'N','N','Y','N','N',0,'N',16,0,0,'Y',TO_DATE('2021-05-30 14:44:28','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:28','YYYY-MM-DD HH24:MI:SS'),100,245,'N','N','D','Y','N','N','Y','ade4c655-7810-43b6-827b-f522b0144ac3','N','N','N','N','N') +; + +-- May 30, 2021, 2:44:29 PM CEST +ALTER TABLE MFA_Method ADD Created DATE DEFAULT SYSDATE NOT NULL +; + +-- May 30, 2021, 2:44:29 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Reference_Value_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214433,1,'Created By','User who created this records','The Created By field indicates the user who created this record.',200273,'CreatedBy',22,'N','N','Y','N','N',0,'N',30,110,0,0,'Y',TO_DATE('2021-05-30 14:44:29','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:29','YYYY-MM-DD HH24:MI:SS'),100,246,'N','N','D','Y','N','N','Y','5dd143de-8630-403c-8e59-23af5b48c76c','N','N','N','D','N') +; + +-- May 30, 2021, 2:44:29 PM CEST +ALTER TABLE MFA_Method ADD CreatedBy NUMBER(10) NOT NULL +; + +-- May 30, 2021, 2:44:29 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214434,1,'Description','Optional short description of the record','A description is limited to 255 characters.',200273,'Description',255,'N','N','N','N','N',0,'N',10,0,0,'Y',TO_DATE('2021-05-30 14:44:29','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:29','YYYY-MM-DD HH24:MI:SS'),100,275,'Y','Y','D','Y','N','N','Y','8b767dc0-1c41-40f8-8ccf-7c45f893b06b','Y',10,'N','N','N','N') +; + +-- May 30, 2021, 2:44:29 PM CEST +ALTER TABLE MFA_Method ADD Description VARCHAR2(255 CHAR) DEFAULT NULL +; + +-- May 30, 2021, 2:44:30 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214435,1,'Comment/Help','Comment or Hint','The Help field contains a hint, comment or help about the use of this item.',200273,'Help',2000,'N','N','N','N','N',0,'N',14,0,0,'Y',TO_DATE('2021-05-30 14:44:29','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:29','YYYY-MM-DD HH24:MI:SS'),100,326,'Y','N','D','Y','N','N','Y','07e2d516-3c1a-4a72-a6f1-2abaa73151c9','Y','N','N','N','N') +; + +-- May 30, 2021, 2:44:30 PM CEST +ALTER TABLE MFA_Method ADD Help VARCHAR2(2000 CHAR) DEFAULT NULL +; + +-- May 30, 2021, 2:44:30 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,DefaultValue,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214436,1,'Active','The record is active in the system','There are two methods of making records unavailable in the system: One is to delete the record, the other is to de-activate the record. A de-activated record is not available for selection, but available for reports. +There are two reasons for de-activating and not deleting records: +(1) The system requires the record for audit purposes. +(2) The record is referenced by other records. E.g., you cannot delete a Business Partner, if there are invoices for this partner record existing. You de-activate the Business Partner and prevent that this record is used for future entries.',200273,'IsActive','Y',1,'N','N','Y','N','N',0,'N',20,0,0,'Y',TO_DATE('2021-05-30 14:44:30','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:30','YYYY-MM-DD HH24:MI:SS'),100,348,'Y','N','D','Y','N','N','Y','fedeb044-8209-44c2-b937-395b8006556f','N','N','N','N','N') +; + +-- May 30, 2021, 2:44:30 PM CEST +ALTER TABLE MFA_Method ADD IsActive CHAR(1) DEFAULT 'Y' CHECK (IsActive IN ('Y','N')) NOT NULL +; + +-- May 30, 2021, 2:44:30 PM CEST +INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,PrintName,EntityType,AD_Element_UU) VALUES (203491,0,0,'Y',TO_DATE('2021-05-30 14:44:30','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:30','YYYY-MM-DD HH24:MI:SS'),100,'MFA_Method_UU','MFA_Method_UU','MFA_Method_UU','D','74581244-f581-417e-a0d5-9deb86914bd6') +; + +-- May 30, 2021, 2:44:31 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214437,1.00,'MFA_Method_UU',200273,'MFA_Method_UU',36,'N','N','N','N','N','N',10,0,0,'Y',TO_DATE('2021-05-30 14:44:30','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:30','YYYY-MM-DD HH24:MI:SS'),100,203491,'Y','N','D','Y','N','N','Y','225f76bb-131a-49dc-9e52-cd715cdf3fb7','N','N','N','N','N') +; + +-- May 30, 2021, 2:44:31 PM CEST +ALTER TABLE MFA_Method ADD MFA_Method_UU VARCHAR2(36 CHAR) DEFAULT NULL +; + +-- May 30, 2021, 2:44:31 PM CEST +ALTER TABLE MFA_Method ADD CONSTRAINT MFA_Method_UU_idx UNIQUE (MFA_Method_UU) +; + +-- May 30, 2021, 2:44:31 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214438,1,'Name','Alphanumeric identifier of the entity','The name of an entity (record) is used as an default search option in addition to the search key. The name is up to 60 characters in length.',200273,'Name',60,'N','N','Y','N','Y',1,'N',10,0,0,'Y',TO_DATE('2021-05-30 14:44:31','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:31','YYYY-MM-DD HH24:MI:SS'),100,469,'Y','Y','D','Y','N','N','Y','9bd6de21-f93a-468d-a9ec-5e9dec166aa2','Y',20,'N','N','N','N') +; + +-- May 30, 2021, 2:44:31 PM CEST +ALTER TABLE MFA_Method ADD Name VARCHAR2(60 CHAR) NOT NULL +; + +-- May 30, 2021, 2:44:31 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,DefaultValue,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214439,1,'Updated','Date this record was updated','The Updated field indicates the date that this record was updated.',200273,'Updated','SYSDATE',7,'N','N','Y','N','N',0,'N',16,0,0,'Y',TO_DATE('2021-05-30 14:44:31','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:31','YYYY-MM-DD HH24:MI:SS'),100,607,'N','N','D','Y','N','N','Y','c239ccb4-c6df-4669-97cd-81c11f4bd4a2','N','N','N','N','N') +; + +-- May 30, 2021, 2:44:31 PM CEST +ALTER TABLE MFA_Method ADD Updated DATE DEFAULT SYSDATE NOT NULL +; + +-- May 30, 2021, 2:44:32 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Reference_Value_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214440,1,'Updated By','User who updated this records','The Updated By field indicates the user who updated this record.',200273,'UpdatedBy',22,'N','N','Y','N','N',0,'N',30,110,0,0,'Y',TO_DATE('2021-05-30 14:44:31','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:31','YYYY-MM-DD HH24:MI:SS'),100,608,'N','N','D','Y','N','N','Y','c77bab50-72c6-4323-9192-18488156171e','N','N','N','D','N') +; + +-- May 30, 2021, 2:44:32 PM CEST +ALTER TABLE MFA_Method ADD UpdatedBy NUMBER(10) NOT NULL +; + +-- May 30, 2021, 2:44:32 PM CEST +INSERT INTO AD_Reference (AD_Reference_ID,Name,ValidationType,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,IsOrderByValue,AD_Reference_UU) VALUES (200187,'MFA_Method','L',0,0,'Y',TO_DATE('2021-05-30 14:44:32','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:32','YYYY-MM-DD HH24:MI:SS'),100,'D','N','6d3d1f40-0e38-4adf-93d6-b1bb2c44e93c') +; + +-- May 30, 2021, 2:44:32 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200507,'Time-Based One-Time Password',200187,'TOTP',0,0,'Y',TO_DATE('2021-05-30 14:44:32','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:32','YYYY-MM-DD HH24:MI:SS'),100,'D','9c6b8ffe-5d00-40d3-a511-d61238602654') +; + +-- May 30, 2021, 2:44:33 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200508,'EMail',200187,'EMail',0,0,'Y',TO_DATE('2021-05-30 14:44:32','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:32','YYYY-MM-DD HH24:MI:SS'),100,'D','45a33854-e3bd-407b-bda5-ff48e58a2eea') +; + +-- May 30, 2021, 2:44:33 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Reference_Value_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214441,0,'Method',200273,'Method',60,'N','N','Y','N','N',0,'N',17,200187,0,0,'Y',TO_DATE('2021-05-30 14:44:33','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:33','YYYY-MM-DD HH24:MI:SS'),100,200239,'Y','N','D','Y','N','N','Y','ed1f244e-22d4-4606-addd-e4855adeb8a7','Y',0,'N','N','N','N') +; + +-- May 30, 2021, 2:44:33 PM CEST +ALTER TABLE MFA_Method ADD Method VARCHAR2(60 CHAR) NOT NULL +; + +-- May 30, 2021, 2:44:34 PM CEST +INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,Description,PrintName,EntityType,AD_Element_UU) VALUES (203492,0,0,'Y',TO_DATE('2021-05-30 14:44:33','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:33','YYYY-MM-DD HH24:MI:SS'),100,'MFAType','MFA Type','Multi-factor authentication type (Something you Know/Have/Are, Location)','MFA Type','D','8ac35e88-dfeb-4103-8ea8-f2ae4d7fe3c2') +; + +-- May 30, 2021, 2:44:34 PM CEST +INSERT INTO AD_Reference (AD_Reference_ID,Name,ValidationType,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,IsOrderByValue,AD_Reference_UU) VALUES (200188,'MFAType','L',0,0,'Y',TO_DATE('2021-05-30 14:44:34','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:34','YYYY-MM-DD HH24:MI:SS'),100,'D','N','c1fc1d9c-6b42-45e9-a9d1-67aa9a8e77f1') +; + +-- May 30, 2021, 2:44:34 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200510,'Something you Know',200188,'K',0,0,'Y',TO_DATE('2021-05-30 14:44:34','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:34','YYYY-MM-DD HH24:MI:SS'),100,'D','dad0212a-776c-476f-8ee1-f36d223b9899') +; + +-- May 30, 2021, 2:44:35 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200511,'Something you Have',200188,'H',0,0,'Y',TO_DATE('2021-05-30 14:44:34','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:34','YYYY-MM-DD HH24:MI:SS'),100,'D','e9f47e72-2282-4363-aaf2-5decec4d390b') +; + +-- May 30, 2021, 2:44:35 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200512,'Something you Are (Biometrics)',200188,'A',0,0,'Y',TO_DATE('2021-05-30 14:44:35','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:35','YYYY-MM-DD HH24:MI:SS'),100,'D','032e4006-0523-4f4b-bd01-50345a2476e5') +; + +-- May 30, 2021, 2:44:35 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200513,'Location',200188,'L',0,0,'Y',TO_DATE('2021-05-30 14:44:35','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:35','YYYY-MM-DD HH24:MI:SS'),100,'D','3c49620f-54d9-41cf-94a9-9c951f1ab271') +; + +-- May 30, 2021, 2:44:36 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Reference_Value_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214442,0,'MFA Type','Multi-factor authentication type (Something you Know/Have/Are, Location)',200273,'MFAType',1,'N','N','N','N','N',0,'N',17,200188,0,0,'Y',TO_DATE('2021-05-30 14:44:35','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:35','YYYY-MM-DD HH24:MI:SS'),100,203492,'Y','N','D','Y','N','N','Y','0a1e1c0f-4b22-4638-b03a-82fba98f65f6','Y',0,'N','N','N','N') +; + +-- May 30, 2021, 2:44:36 PM CEST +ALTER TABLE MFA_Method ADD MFAType CHAR(1) DEFAULT NULL +; + +-- May 30, 2021, 2:44:36 PM CEST +INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,PrintName,EntityType,AD_Element_UU) VALUES (203493,0,0,'Y',TO_DATE('2021-05-30 14:44:36','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:36','YYYY-MM-DD HH24:MI:SS'),100,'MFAIssuer','Issuer','Issuer','D','4b7bdf09-91b0-4cac-be32-3b2ed8b3124a') +; + +-- May 30, 2021, 2:44:36 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214443,0,'Issuer',200273,'MFAIssuer',2000,'N','N','N','N','N',0,'N',10,0,0,'Y',TO_DATE('2021-05-30 14:44:36','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:36','YYYY-MM-DD HH24:MI:SS'),100,203493,'Y','N','D','Y','N','N','Y','19519991-f0b8-435d-bc36-595265244cbd','Y',0,'N','N','N','N') +; + +-- May 30, 2021, 2:44:36 PM CEST +ALTER TABLE MFA_Method ADD MFAIssuer VARCHAR2(2000 CHAR) DEFAULT NULL +; + +-- May 30, 2021, 2:44:37 PM CEST +INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,PrintName,EntityType,AD_Element_UU) VALUES (203494,0,0,'Y',TO_DATE('2021-05-30 14:44:36','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:36','YYYY-MM-DD HH24:MI:SS'),100,'MFAAllowedTimeDiscrepancy','Allowed Time Period Discrepancy','Allowed Time Period Discrepancy','D','5aab867e-1e0c-4e50-93d0-bf3a9a37c5e8') +; + +-- May 30, 2021, 2:44:37 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214444,0,'Allowed Time Period Discrepancy',200273,'MFAAllowedTimeDiscrepancy',14,'N','N','N','N','N',0,'N',11,0,0,'Y',TO_DATE('2021-05-30 14:44:37','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:37','YYYY-MM-DD HH24:MI:SS'),100,203494,'Y','N','D','Y','N','N','Y','64c621a3-580a-4d16-85c6-7429ab6147dd','Y',0,'N','N','N','N') +; + +-- May 30, 2021, 2:44:37 PM CEST +ALTER TABLE MFA_Method ADD MFAAllowedTimeDiscrepancy NUMBER(10) DEFAULT NULL +; + +-- May 30, 2021, 2:44:37 PM CEST +INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,PrintName,EntityType,AD_Element_UU) VALUES (203495,0,0,'Y',TO_DATE('2021-05-30 14:44:37','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:37','YYYY-MM-DD HH24:MI:SS'),100,'MFATimeProvider','Time Provider','Time Provider','D','6e641fb6-95cc-4b6b-b547-45f17ad220af') +; + +-- May 30, 2021, 2:44:38 PM CEST +INSERT INTO AD_Reference (AD_Reference_ID,Name,ValidationType,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,IsOrderByValue,AD_Reference_UU) VALUES (200189,'MFATimeProvider','L',0,0,'Y',TO_DATE('2021-05-30 14:44:37','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:37','YYYY-MM-DD HH24:MI:SS'),100,'D','N','0c6758f4-b113-4ebc-91e9-0de6c565c139') +; + +-- May 30, 2021, 2:44:38 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200514,'System',200189,'S',0,0,'Y',TO_DATE('2021-05-30 14:44:38','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:38','YYYY-MM-DD HH24:MI:SS'),100,'D','bee8e82d-d76d-4c8e-8290-d5a25f59a08f') +; + +-- May 30, 2021, 2:44:38 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200515,'Ntp',200189,'N',0,0,'Y',TO_DATE('2021-05-30 14:44:38','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:38','YYYY-MM-DD HH24:MI:SS'),100,'D','4e72ac53-5c98-44dc-bf2e-72d36c221399') +; + +-- May 30, 2021, 2:44:39 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Reference_Value_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214445,0,'Time Provider',200273,'MFATimeProvider',1,'N','N','N','N','N',0,'N',17,200189,0,0,'Y',TO_DATE('2021-05-30 14:44:38','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:38','YYYY-MM-DD HH24:MI:SS'),100,203495,'Y','N','D','Y','N','N','Y','1294116a-1119-4d76-a543-757d9fb9e902','Y',0,'N','N','N','N') +; + +-- May 30, 2021, 2:44:39 PM CEST +ALTER TABLE MFA_Method ADD MFATimeProvider CHAR(1) DEFAULT NULL +; + +-- May 30, 2021, 2:44:39 PM CEST +INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,PrintName,EntityType,AD_Element_UU) VALUES (203496,0,0,'Y',TO_DATE('2021-05-30 14:44:39','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:39','YYYY-MM-DD HH24:MI:SS'),100,'MFATimeServer','Time Server','Time Server','D','15fea993-88bc-4911-af5d-4c5145649a8e') +; + +-- May 30, 2021, 2:44:39 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214446,0,'Time Server',200273,'MFATimeServer',255,'N','N','N','N','N',0,'N',10,0,0,'Y',TO_DATE('2021-05-30 14:44:39','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:39','YYYY-MM-DD HH24:MI:SS'),100,203496,'Y','N','D','Y','N','N','Y','b81a2e75-550a-41d6-a635-94f6890dd50c','Y',0,'N','N','N','N') +; + +-- May 30, 2021, 2:44:39 PM CEST +ALTER TABLE MFA_Method ADD MFATimeServer VARCHAR2(255 CHAR) DEFAULT NULL +; + +-- May 30, 2021, 2:44:40 PM CEST +INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,PrintName,EntityType,AD_Element_UU) VALUES (203497,0,0,'Y',TO_DATE('2021-05-30 14:44:39','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:39','YYYY-MM-DD HH24:MI:SS'),100,'ExpireInMinutes','Expire in Minutes','Expire in Minutes','D','e57c156c-7823-4cba-9658-b4ef76f5288f') +; + +-- May 30, 2021, 2:44:40 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,IsHtml) VALUES (214447,0,'Expire in Minutes',200273,'ExpireInMinutes',10,'N','N','N','N','N',0,'N',11,0,0,'Y',TO_DATE('2021-05-30 14:44:40','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:40','YYYY-MM-DD HH24:MI:SS'),100,203497,'Y','N','D','Y','N','N','Y','cb8ddae6-cd0b-41a1-a5d1-cc7f3abed025','Y',0,'N','N','N') +; + +-- May 30, 2021, 2:44:40 PM CEST +ALTER TABLE MFA_Method ADD ExpireInMinutes NUMBER(10) DEFAULT NULL +; + +-- May 30, 2021, 2:44:40 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintName,FKConstraintType,IsHtml) VALUES (214448,0,'Mail Template','Text templates for mailings','The Mail Template indicates the mail template for return messages. Mail text can include variables. The priority of parsing is User/Contact, Business Partner and then the underlying business object (like Request, Dunning, Workflow object).
+So, @Name@ would resolve into the User name (if user is defined defined), then Business Partner name (if business partner is defined) and then the Name of the business object if it has a Name.
+For Multi-Lingual systems, the template is translated based on the Business Partner''s language selection.',200273,'R_MailText_ID',10,'N','N','N','N','N',0,'N',19,0,0,'Y',TO_DATE('2021-05-30 14:44:40','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:40','YYYY-MM-DD HH24:MI:SS'),100,1515,'Y','N','D','Y','N','N','Y','c14d9d08-e4ab-4e94-b89f-4f83e6611abd','Y',0,'N','N','RMailText_MFAMethod','N','N') +; + +-- May 30, 2021, 2:44:40 PM CEST +ALTER TABLE MFA_Method ADD R_MailText_ID NUMBER(10) DEFAULT NULL +; + +-- May 30, 2021, 2:44:41 PM CEST +INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,PrintName,EntityType,AD_Element_UU) VALUES (203498,0,0,'Y',TO_DATE('2021-05-30 14:44:40','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:40','YYYY-MM-DD HH24:MI:SS'),100,'MFA_ElementPrm_ID','Parameter Element','Parameter Element','D','811fb12c-863b-48cd-83bd-e5add686b638') +; + +-- May 30, 2021, 2:44:41 PM CEST +INSERT INTO AD_Reference (AD_Reference_ID,Name,ValidationType,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,IsOrderByValue,AD_Reference_UU) VALUES (200190,'AD_Element','T',0,0,'Y',TO_DATE('2021-05-30 14:44:41','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:41','YYYY-MM-DD HH24:MI:SS'),100,'D','N','3a119c73-263b-4f8b-b45c-33d25562a1d2') +; + +-- May 30, 2021, 2:44:41 PM CEST +INSERT INTO AD_Ref_Table (AD_Reference_ID,AD_Table_ID,AD_Key,AD_Display,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsValueDisplayed,EntityType,AD_Ref_Table_UU) VALUES (200190,276,2594,2603,0,0,'Y',TO_DATE('2021-05-30 14:44:41','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:41','YYYY-MM-DD HH24:MI:SS'),100,'N','D','6463365d-a1b0-47f7-8cf6-553dcc50acc2') +; + +-- May 30, 2021, 2:44:41 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Reference_Value_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintName,FKConstraintType,IsHtml) VALUES (214449,0,'Parameter Element',200273,'MFA_ElementPrm_ID',10,'N','N','N','N','N',0,'N',30,200190,0,0,'Y',TO_DATE('2021-05-30 14:44:41','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:41','YYYY-MM-DD HH24:MI:SS'),100,203498,'Y','N','D','Y','N','N','Y','40200045-c6ad-4658-95f0-9e4de2f78fc2','Y',0,'N','N','MFAElementPrm_MFAMethod','N','N') +; + +-- May 30, 2021, 2:44:42 PM CEST +ALTER TABLE MFA_Method ADD MFA_ElementPrm_ID NUMBER(10) DEFAULT NULL +; + +-- May 30, 2021, 2:44:42 PM CEST +INSERT INTO AD_Tab (AD_Tab_ID,Name,Description,AD_Window_ID,SeqNo,IsSingleRow,AD_Table_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,HasTree,IsInfoTab,IsTranslationTab,IsReadOnly,OrderByClause,Processing,TabLevel,IsSortTab,EntityType,IsInsertRecord,IsAdvancedTab,AD_Tab_UU,TreeDisplayedOn,IsLookupOnlySelection,IsAllowAdvancedLookup,MaxQueryRecords) VALUES (200288,'MFA Method','Multi-factor Authentication Method',200114,10,'Y',200273,0,0,'Y',TO_DATE('2021-05-30 14:44:42','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:42','YYYY-MM-DD HH24:MI:SS'),100,'N','N','N','N','MFA_Method.Name','N',0,'N','D','Y','N','9306f3ac-9af6-4e1e-aeff-a48e90e9301b','B','N','Y',0) +; + +-- May 30, 2021, 2:44:42 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206611,'MFA_Method_UU',200288,214437,'N',36,0,'N','N','N','N',0,0,'Y',TO_DATE('2021-05-30 14:44:42','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:42','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','a8bf5eaa-a374-460f-ab88-0a0106bb0c68','N',1,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:44:43 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206612,'MFA Method','Multi-factor Authentication Method',200288,214429,'N',22,0,'N','N','N','N',0,0,'Y',TO_DATE('2021-05-30 14:44:42','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:42','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','868bed40-7adc-48e0-a2a2-1095fde13fdb','N',1,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:44:43 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206613,'Client','Client/Tenant for this installation.','A Client is a company or a legal entity. You cannot share data between Clients. Tenant is a synonym for Client.',200288,214430,'Y',22,10,'N','N','N','N',0,0,'Y',TO_DATE('2021-05-30 14:44:43','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:43','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','13f7107c-77be-4b5e-8c90-3871f6b019f9','N',1,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:44:43 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsAllowCopy,IsDisplayedGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206614,'Organization','Organizational entity within client','An organization is a unit of your client or legal entity - examples are store, department. You can share data between organizations.',200288,214431,'Y',22,20,'N','N','N','N',0,0,'Y',TO_DATE('2021-05-30 14:44:43','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:43','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','9ffd36e7-096e-4275-bad6-85de7671b77c','Y','N',4,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:44:44 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206615,'Name','Alphanumeric identifier of the entity','The name of an entity (record) is used as an default search option in addition to the search key. The name is up to 60 characters in length.',200288,214438,'Y',60,30,'N','N','N','N',0,0,'Y',TO_DATE('2021-05-30 14:44:43','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:43','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','dee34ab4-1a66-4ea5-991f-7ad8c46170bd','Y',10,1,5,1,'N','N','N','N') +; + +-- May 30, 2021, 2:44:44 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206616,'Description','Optional short description of the record','A description is limited to 255 characters.',200288,214434,'Y',255,40,'N','N','N','N',0,0,'Y',TO_DATE('2021-05-30 14:44:44','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:44','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','1e5db2b3-4703-4b51-a9cf-cdca64392016','Y',20,1,5,1,'N','N','N','N') +; + +-- May 30, 2021, 2:44:44 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206617,'Comment/Help','Comment or Hint','The Help field contains a hint, comment or help about the use of this item.',200288,214435,'Y',2000,50,'N','N','N','N',0,0,'Y',TO_DATE('2021-05-30 14:44:44','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:44','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','d841cff6-25dc-4bab-8ae0-fba6aa6eb067','Y',30,1,5,3,'N','N','N','N') +; + +-- May 30, 2021, 2:44:45 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206618,'Method',200288,214441,'Y',60,60,'N','N','N','N',0,0,'Y',TO_DATE('2021-05-30 14:44:44','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:44','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','514a9741-e739-46b2-ab07-977c81278bb9','Y',40,1,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:44:45 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206619,'MFA Type','Multi-factor authentication type (Something you Know/Have/Are, Location)',200288,214442,'Y',1,70,'N','N','N','N',0,0,'Y',TO_DATE('2021-05-30 14:44:45','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:45','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','18e94064-2604-4fda-b3dd-1c4375d47cc6','Y',50,4,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:44:45 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206620,'Parameter Element',200288,214449,'Y',10,80,'N','N','N','N',0,0,'Y',TO_DATE('2021-05-30 14:44:45','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:45','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','301a64c6-09a9-4f60-8f60-b978f565191f','Y',190,1,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:44:45 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206621,'Expire in Minutes',200288,214447,'Y',10,90,'N','N','N','N',0,0,'Y',TO_DATE('2021-05-30 14:44:45','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:45','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','e778e00d-e130-4b30-ab79-912fa45295bc','Y',170,4,1,1,'N','N','N','N') +; + +-- May 30, 2021, 2:44:46 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206622,'Active','The record is active in the system','There are two methods of making records unavailable in the system: One is to delete the record, the other is to de-activate the record. A de-activated record is not available for selection, but available for reports. +There are two reasons for de-activating and not deleting records: +(1) The system requires the record for audit purposes. +(2) The record is referenced by other records. E.g., you cannot delete a Business Partner, if there are invoices for this partner record existing. You de-activate the Business Partner and prevent that this record is used for future entries.',200288,214436,'Y',1,100,'N','N','N','N',0,0,'Y',TO_DATE('2021-05-30 14:44:45','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:45','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','3126acb5-db24-47cf-b2f7-d3d6e4e45ba0','Y',70,6,1,1,'N','N','N','N') +; + +-- May 30, 2021, 2:44:46 PM CEST +INSERT INTO AD_FieldGroup (AD_FieldGroup_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,EntityType,FieldGroupType,IsCollapsedByDefault,AD_FieldGroup_UU) VALUES (200027,0,0,'Y',TO_DATE('2021-05-30 14:44:46','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:46','YYYY-MM-DD HH24:MI:SS'),100,'EMail','D','C','N','2779dca5-1eb8-421c-a8ff-73fcebaf1324') +; + +-- May 30, 2021, 2:44:47 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,AD_FieldGroup_ID,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206623,'Mail Template','Text templates for mailings','The Mail Template indicates the mail template for return messages. Mail text can include variables. The priority of parsing is User/Contact, Business Partner and then the underlying business object (like Request, Dunning, Workflow object).
+So, @Name@ would resolve into the User name (if user is defined defined), then Business Partner name (if business partner is defined) and then the Name of the business object if it has a Name.
+For Multi-Lingual systems, the template is translated based on the Business Partner''s language selection.',200288,214448,'Y',10,110,'N','N','N','N',0,0,'Y',TO_DATE('2021-05-30 14:44:46','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:46','YYYY-MM-DD HH24:MI:SS'),100,'N','Y',200027,'D','e1785367-c587-443c-bcd5-9e6bbef4b31e','Y',180,1,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:44:47 PM CEST +INSERT INTO AD_FieldGroup (AD_FieldGroup_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,EntityType,FieldGroupType,IsCollapsedByDefault,AD_FieldGroup_UU) VALUES (200028,0,0,'Y',TO_DATE('2021-05-30 14:44:47','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:47','YYYY-MM-DD HH24:MI:SS'),100,'TOTP','D','C','N','659d859f-1cb2-4157-ab2e-eb62fd04c23b') +; + +-- May 30, 2021, 2:44:47 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,AD_FieldGroup_ID,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206624,'Issuer',200288,214443,'Y',2000,120,'N','N','N','N',0,0,'Y',TO_DATE('2021-05-30 14:44:47','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:47','YYYY-MM-DD HH24:MI:SS'),100,'N','Y',200028,'D','5dc13f32-8ca0-4132-a7c9-dec2935dc3dc','Y',80,1,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:44:47 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206625,'Allowed Time Period Discrepancy',200288,214444,'Y',14,130,'N','N','N','N',0,0,'Y',TO_DATE('2021-05-30 14:44:47','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:47','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','f133bfc6-75a8-483f-b99e-9df797f9e26e','Y',130,4,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:44:48 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206626,'Time Provider',200288,214445,'Y',1,150,'N','N','N','N',0,0,'Y',TO_DATE('2021-05-30 14:44:48','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:48','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','050eeafe-e41b-4289-8970-940852612cdc','Y',140,1,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:44:48 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLogic,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206627,'Time Server',200288,214446,'Y','@MFATimeProvider@=N',255,160,'N','N','N','N',0,0,'Y',TO_DATE('2021-05-30 14:44:48','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:48','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','04369763-05e6-4f1a-b20e-39ee9d4b0e60','Y',160,4,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:44:48 PM CEST +INSERT INTO AD_Process (AD_Process_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,Description,IsReport,Value,IsDirectPrint,Classname,AccessLevel,EntityType,Statistic_Count,Statistic_Seconds,IsBetaFunctionality,ShowHelp,CopyFromProcess,AD_Process_UU,AllowMultipleExecution) VALUES (200131,0,0,'Y',TO_DATE('2021-05-30 14:44:48','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:48','YYYY-MM-DD HH24:MI:SS'),100,'Revoke MFA Trusted Device','Revoke one multi-factor authentication trusted device or all','N','MFARevokeDevice','N','org.idempiere.process.MFARevokeDevice','7','D',0,0,'N','Y','N','b009ee88-78dd-4adf-97ff-8847464d0bf7','P') +; + +-- May 30, 2021, 2:44:49 PM CEST +INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,PrintName,EntityType,AD_Element_UU) VALUES (203499,0,0,'Y',TO_DATE('2021-05-30 14:44:48','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:48','YYYY-MM-DD HH24:MI:SS'),100,'MFARevokeAll','Revoke All','Revoke All','D','ade34ca8-4a79-4b67-8d99-c32d5a290def') +; + +-- May 30, 2021, 2:44:49 PM CEST +INSERT INTO AD_Process_Para (AD_Process_Para_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,AD_Process_ID,SeqNo,AD_Reference_ID,IsRange,FieldLength,IsMandatory,DefaultValue,ColumnName,IsCentrallyMaintained,EntityType,AD_Element_ID,AD_Process_Para_UU,IsEncrypted,IsAutocomplete) VALUES (200348,0,0,'Y',TO_DATE('2021-05-30 14:44:49','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:49','YYYY-MM-DD HH24:MI:SS'),100,'Revoke All',200131,10,20,'N',1,'Y','N','MFARevokeAll','Y','D',203499,'162304fb-2d23-4c38-ae15-889ffa0b7ff3','N','N') +; + +-- May 30, 2021, 2:44:49 PM CEST +INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,PrintName,EntityType,AD_Element_UU) VALUES (203500,0,0,'Y',TO_DATE('2021-05-30 14:44:49','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:49','YYYY-MM-DD HH24:MI:SS'),100,'MFA_RegisteredDevice_ID','MFA Registered Device','MFA Registered Device','D','5286209e-eed9-4540-98b9-387819ac63d5') +; + +-- May 30, 2021, 2:44:50 PM CEST +INSERT INTO AD_Process_Para (AD_Process_Para_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,AD_Process_ID,SeqNo,AD_Reference_ID,IsRange,FieldLength,IsMandatory,ColumnName,IsCentrallyMaintained,EntityType,AD_Element_ID,DisplayLogic,AD_Process_Para_UU,IsEncrypted,IsAutocomplete) VALUES (200349,0,0,'Y',TO_DATE('2021-05-30 14:44:49','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:49','YYYY-MM-DD HH24:MI:SS'),100,'MFA Registered Device',200131,20,19,'N',22,'N','MFA_RegisteredDevice_ID','Y','D',203500,'@MFARevokeAll@=N','7ec29817-28a7-4f56-b905-3f2a24384b88','N','N') +; + +-- May 30, 2021, 2:44:50 PM CEST +INSERT INTO AD_Process (AD_Process_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,Description,IsReport,Value,IsDirectPrint,Classname,AccessLevel,EntityType,Statistic_Count,Statistic_Seconds,IsBetaFunctionality,ShowHelp,CopyFromProcess,AD_Process_UU,AllowMultipleExecution) VALUES (200132,0,0,'Y',TO_DATE('2021-05-30 14:44:50','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:50','YYYY-MM-DD HH24:MI:SS'),100,'Register MFA','Register a multi-factor authentication mechanism','N','MFARegister','N','org.idempiere.process.MFARegister','7','D',42,408,'N','Y','N','f8bf7446-35c7-4cea-913f-c41930f7c6fc','P') +; + +-- May 30, 2021, 2:44:50 PM CEST +INSERT INTO AD_Reference (AD_Reference_ID,Name,ValidationType,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,IsOrderByValue,AD_Reference_UU) VALUES (200191,'MFA_Method - on client rule','T',0,0,'Y',TO_DATE('2021-05-30 14:44:50','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:50','YYYY-MM-DD HH24:MI:SS'),100,'D','N','ab76ace8-d950-46d5-a262-d2de59f39d6e') +; + +-- May 30, 2021, 2:44:50 PM CEST +INSERT INTO AD_Ref_Table (AD_Reference_ID,AD_Table_ID,AD_Key,AD_Display,WhereClause,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsValueDisplayed,EntityType,AD_Ref_Table_UU) VALUES (200191,200273,214429,214438,'MFA_Method.MFA_Method_ID IN (SELECT MFA_Method_ID FROM MFA_Rule WHERE IsActive=''Y'' AND AD_Client_ID IN (0,@#AD_Client_ID@))',0,0,'Y',TO_DATE('2021-05-30 14:44:50','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:50','YYYY-MM-DD HH24:MI:SS'),100,'N','D','68ddf06f-e3af-45ed-843a-1a78cec49bb8') +; + +-- May 30, 2021, 2:44:51 PM CEST +INSERT INTO AD_Process_Para (AD_Process_Para_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,Description,AD_Process_ID,SeqNo,AD_Reference_ID,AD_Reference_Value_ID,IsRange,FieldLength,IsMandatory,ColumnName,IsCentrallyMaintained,EntityType,AD_Element_ID,AD_Process_Para_UU,IsEncrypted,IsAutocomplete) VALUES (200350,0,0,'Y',TO_DATE('2021-05-30 14:44:50','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:50','YYYY-MM-DD HH24:MI:SS'),100,'MFA Method','Multi-factor Authentication Method',200132,10,18,200191,'N',22,'Y','MFA_Method_ID','Y','D',203490,'6f3e3d51-51b7-4845-8c33-b7669f32a1eb','N','N') +; + +-- May 30, 2021, 2:44:51 PM CEST +INSERT INTO AD_Process_Para (AD_Process_Para_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,AD_Process_ID,SeqNo,AD_Reference_ID,IsRange,FieldLength,IsMandatory,ColumnName,IsCentrallyMaintained,EntityType,AD_Element_ID,AD_Process_Para_UU,IsEncrypted,IsAutocomplete) VALUES (200351,0,0,'Y',TO_DATE('2021-05-30 14:44:51','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:51','YYYY-MM-DD HH24:MI:SS'),100,'Parameter Value',200132,30,10,'N',2000,'N','ParameterValue','Y','D',53379,'a5bdb3ad-c28b-483f-81aa-472cf75d2424','N','N') +; + +-- May 30, 2021, 2:44:51 PM CEST +INSERT INTO AD_Process_Para (AD_Process_Para_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,AD_Process_ID,SeqNo,AD_Reference_ID,AD_Reference_Value_ID,IsRange,FieldLength,IsMandatory,ColumnName,IsCentrallyMaintained,EntityType,AD_Element_ID,ReadOnlyLogic,AD_Process_Para_UU,IsEncrypted,IsAutocomplete) VALUES (200352,0,0,'Y',TO_DATE('2021-05-30 14:44:51','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:51','YYYY-MM-DD HH24:MI:SS'),100,'Parameter Element',200132,20,30,200190,'N',10,'N','MFA_ElementPrm_ID','Y','D',203498,'1=1','82d2fd0e-f8a6-43ea-8681-99443d7c3174','N','N') +; + +-- May 30, 2021, 2:44:52 PM CEST +INSERT INTO AD_Window (AD_Window_ID,Name,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,WindowType,Processing,EntityType,IsSOTrx,IsDefault,IsBetaFunctionality,AD_Window_UU) VALUES (200115,'MFA Registered Device',0,0,'Y',TO_DATE('2021-05-30 14:44:51','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:51','YYYY-MM-DD HH24:MI:SS'),100,'M','N','D','Y','N','N','6e249a9d-541b-479b-ad74-bbcb7d06844d') +; + +-- May 30, 2021, 2:44:52 PM CEST +INSERT INTO AD_Table (AD_Table_ID,Name,Description,AD_Window_ID,TableName,LoadSeq,AccessLevel,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsSecurityEnabled,IsDeleteable,IsHighVolume,IsView,EntityType,ImportTable,IsChangeLog,ReplicationType,CopyColumnsFromTable,IsCentrallyMaintained,AD_Table_UU,Processing,DatabaseViewDrop,CopyComponentsFromView,CreateWindowFromTable) VALUES (200274,'MFA Registered Device','Multi-factor Authentication Registered Device',200115,'MFA_RegisteredDevice',0,'6',0,0,'Y',TO_DATE('2021-05-30 14:44:52','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:52','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','N','N','D','N','Y','L','N','Y','ce1694fc-32ce-46b4-ae8c-6dda7b652c3f','N','N','N','N') +; + +-- May 30, 2021, 2:44:52 PM CEST +INSERT INTO AD_Sequence (Name,CurrentNext,IsAudited,StartNewYear,Description,IsActive,IsTableID,AD_Client_ID,AD_Org_ID,Created,CreatedBy,Updated,UpdatedBy,AD_Sequence_ID,IsAutoSequence,StartNo,IncrementNo,CurrentNextSys,AD_Sequence_UU) VALUES ('MFA_RegisteredDevice',1000000,'N','N','Table MFA_RegisteredDevice','Y','Y',0,0,TO_DATE('2021-05-30 14:44:52','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:52','YYYY-MM-DD HH24:MI:SS'),100,200343,'Y',1000000,1,200000,'3a5a9a56-486f-4e6d-adb1-9c9da5f8d5f5') +; + +-- May 30, 2021, 2:44:53 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214450,1,'MFA Registered Device',200274,'MFA_RegisteredDevice_ID',22,'Y','N','Y','N','N',0,'N',13,0,0,'Y',TO_DATE('2021-05-30 14:44:52','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:52','YYYY-MM-DD HH24:MI:SS'),100,203500,'N','N','D','Y','N','N','Y','dca35a97-edf8-4846-9cb7-e3ccb563e2d6','N','N','N','N','N') +; + +-- May 30, 2021, 2:44:53 PM CEST +CREATE TABLE MFA_RegisteredDevice (MFA_RegisteredDevice_ID NUMBER(10) NOT NULL, CONSTRAINT MFA_RegisteredDevice_Key PRIMARY KEY (MFA_RegisteredDevice_ID)) +; + +-- May 30, 2021, 2:44:53 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,AD_Val_Rule_ID,ColumnName,DefaultValue,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214451,1,'Client','Client/Tenant for this installation.','A Client is a company or a legal entity. You cannot share data between Clients. Tenant is a synonym for Client.',200274,129,'AD_Client_ID','@#AD_Client_ID@',22,'N','N','Y','N','N',0,'N',19,0,0,'Y',TO_DATE('2021-05-30 14:44:53','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:53','YYYY-MM-DD HH24:MI:SS'),100,102,'N','N','D','Y','N','N','Y','f3c3a610-726a-44e7-b265-11f7841f6aed','N','N','N','D','N') +; + +-- May 30, 2021, 2:44:53 PM CEST +ALTER TABLE MFA_RegisteredDevice ADD AD_Client_ID NUMBER(10) NOT NULL +; + +-- May 30, 2021, 2:44:53 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,AD_Val_Rule_ID,ColumnName,DefaultValue,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214452,1,'Organization','Organizational entity within client','An organization is a unit of your client or legal entity - examples are store, department. You can share data between organizations.',200274,104,'AD_Org_ID','@#AD_Org_ID@',22,'N','N','Y','N','N',0,'N',19,0,0,'Y',TO_DATE('2021-05-30 14:44:53','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:53','YYYY-MM-DD HH24:MI:SS'),100,113,'N','N','D','Y','N','N','Y','1eac193f-deca-413d-9ba2-e2e5c9dbe34c','N','N','N','D','N') +; + +-- May 30, 2021, 2:44:53 PM CEST +ALTER TABLE MFA_RegisteredDevice ADD AD_Org_ID NUMBER(10) NOT NULL +; + +-- May 30, 2021, 2:44:54 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,DefaultValue,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214453,1,'Created','Date this record was created','The Created field indicates the date that this record was created.',200274,'Created','SYSDATE',7,'N','N','Y','N','N',0,'N',16,0,0,'Y',TO_DATE('2021-05-30 14:44:53','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:53','YYYY-MM-DD HH24:MI:SS'),100,245,'N','N','D','Y','N','N','Y','d9362d1f-cd9e-4e71-a23a-1033466efe09','N','N','N','N','N') +; + +-- May 30, 2021, 2:44:54 PM CEST +ALTER TABLE MFA_RegisteredDevice ADD Created DATE DEFAULT SYSDATE NOT NULL +; + +-- May 30, 2021, 2:44:54 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Reference_Value_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214454,1,'Created By','User who created this records','The Created By field indicates the user who created this record.',200274,'CreatedBy',22,'N','N','Y','N','N',0,'N',30,110,0,0,'Y',TO_DATE('2021-05-30 14:44:54','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:54','YYYY-MM-DD HH24:MI:SS'),100,246,'N','N','D','Y','N','N','Y','394f8325-3760-46ef-9703-42fbf76e3cb3','N','N','N','D','N') +; + +-- May 30, 2021, 2:44:54 PM CEST +ALTER TABLE MFA_RegisteredDevice ADD CreatedBy NUMBER(10) NOT NULL +; + +-- May 30, 2021, 2:44:54 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,DefaultValue,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214455,1,'Active','The record is active in the system','There are two methods of making records unavailable in the system: One is to delete the record, the other is to de-activate the record. A de-activated record is not available for selection, but available for reports. +There are two reasons for de-activating and not deleting records: +(1) The system requires the record for audit purposes. +(2) The record is referenced by other records. E.g., you cannot delete a Business Partner, if there are invoices for this partner record existing. You de-activate the Business Partner and prevent that this record is used for future entries.',200274,'IsActive','Y',1,'N','N','Y','N','N',0,'N',20,0,0,'Y',TO_DATE('2021-05-30 14:44:54','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:54','YYYY-MM-DD HH24:MI:SS'),100,348,'Y','N','D','Y','N','N','Y','4c04d7b0-2340-40ab-9cd3-241c04d08ccb','N','N','N','N','N') +; + +-- May 30, 2021, 2:44:54 PM CEST +ALTER TABLE MFA_RegisteredDevice ADD IsActive CHAR(1) DEFAULT 'Y' CHECK (IsActive IN ('Y','N')) NOT NULL +; + +-- May 30, 2021, 2:44:55 PM CEST +INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,PrintName,EntityType,AD_Element_UU) VALUES (203501,0,0,'Y',TO_DATE('2021-05-30 14:44:54','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:54','YYYY-MM-DD HH24:MI:SS'),100,'MFA_RegisteredDevice_UU','MFA_RegisteredDevice_UU','MFA_RegisteredDevice_UU','D','3d08a37e-4824-4629-905c-351dce55048f') +; + +-- May 30, 2021, 2:44:55 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214456,1.00,'MFA_RegisteredDevice_UU',200274,'MFA_RegisteredDevice_UU',36,'N','N','N','N','N','N',10,0,0,'Y',TO_DATE('2021-05-30 14:44:55','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:55','YYYY-MM-DD HH24:MI:SS'),100,203501,'Y','N','D','Y','N','N','Y','a223f7ff-6f07-4a16-b1f0-6d85da4cdef1','N','N','N','N','N') +; + +-- May 30, 2021, 2:44:55 PM CEST +ALTER TABLE MFA_RegisteredDevice ADD MFA_RegisteredDevice_UU VARCHAR2(36 CHAR) DEFAULT NULL +; + +-- May 30, 2021, 2:44:55 PM CEST +ALTER TABLE MFA_RegisteredDevice ADD CONSTRAINT MFA_RegisteredDevice_UU_idx UNIQUE (MFA_RegisteredDevice_UU) +; + +-- May 30, 2021, 2:44:55 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,DefaultValue,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214457,1,'Updated','Date this record was updated','The Updated field indicates the date that this record was updated.',200274,'Updated','SYSDATE',7,'N','N','Y','N','N',0,'N',16,0,0,'Y',TO_DATE('2021-05-30 14:44:55','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:55','YYYY-MM-DD HH24:MI:SS'),100,607,'N','N','D','Y','N','N','Y','76773355-f7ad-40cf-90f3-3b11e33893ac','N','N','N','N','N') +; + +-- May 30, 2021, 2:44:55 PM CEST +ALTER TABLE MFA_RegisteredDevice ADD Updated DATE DEFAULT SYSDATE NOT NULL +; + +-- May 30, 2021, 2:44:56 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Reference_Value_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214458,1,'Updated By','User who updated this records','The Updated By field indicates the user who updated this record.',200274,'UpdatedBy',22,'N','N','Y','N','N',0,'N',30,110,0,0,'Y',TO_DATE('2021-05-30 14:44:55','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:55','YYYY-MM-DD HH24:MI:SS'),100,608,'N','N','D','Y','N','N','Y','0442103e-eb9d-4e9c-88c8-3f1bff1fe6e0','N','N','N','D','N') +; + +-- May 30, 2021, 2:44:56 PM CEST +ALTER TABLE MFA_RegisteredDevice ADD UpdatedBy NUMBER(10) NOT NULL +; + +-- May 30, 2021, 2:44:56 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintName,FKConstraintType,IsHtml) VALUES (214459,0,'User/Contact','User within the system - Internal or Business Partner Contact','The User identifies a unique user in the system. This could be an internal user or a business partner contact',200274,'AD_User_ID',22,'N','N','Y','N','N',0,'N',30,0,0,'Y',TO_DATE('2021-05-30 14:44:56','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:56','YYYY-MM-DD HH24:MI:SS'),100,138,'Y','N','D','Y','N','N','Y','e303baea-478e-40a7-a2cc-c726bdf1ea2b','Y',0,'N','N','ADUser_MFARegisteredDevice','N','N') +; + +-- May 30, 2021, 2:44:56 PM CEST +ALTER TABLE MFA_RegisteredDevice ADD AD_User_ID NUMBER(10) NOT NULL +; + +-- May 30, 2021, 2:44:56 PM CEST +INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,Description,PrintName,EntityType,AD_Element_UU) VALUES (203502,0,0,'Y',TO_DATE('2021-05-30 14:44:56','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:56','YYYY-MM-DD HH24:MI:SS'),100,'MFADeviceIdentifier','MFA Device Identifier','Multi-factor Authentication Device Identifier','MFA Device Identifier','D','c2a0cbe6-3fe4-49de-ab8f-cc03a712f4f8') +; + +-- May 30, 2021, 2:44:57 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214460,0,'MFA Device Identifier','Multi-factor Authentication Device Identifier',200274,'MFADeviceIdentifier',2000,'N','N','Y','N','N',0,'N',10,0,0,'Y',TO_DATE('2021-05-30 14:44:56','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:56','YYYY-MM-DD HH24:MI:SS'),100,203502,'Y','N','D','Y','N','N','Y','1dd157be-f306-4aef-9f60-6fa41dd61544','Y',0,'N','N','N','N') +; + +-- May 30, 2021, 2:44:57 PM CEST +ALTER TABLE MFA_RegisteredDevice ADD MFADeviceIdentifier VARCHAR2(2000 CHAR) NOT NULL +; + +-- May 30, 2021, 2:44:57 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214461,0,'Expire On','Expire On',200274,'Expiration',29,'N','N','N','N','N',0,'N',16,0,0,'Y',TO_DATE('2021-05-30 14:44:57','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:57','YYYY-MM-DD HH24:MI:SS'),100,200245,'Y','N','D','Y','N','N','Y','e3d4054a-7ac7-499c-95a7-32b31d345e11','Y',0,'N','N','N','N') +; + +-- May 30, 2021, 2:44:57 PM CEST +ALTER TABLE MFA_RegisteredDevice ADD Expiration DATE DEFAULT NULL +; + +-- May 30, 2021, 2:44:57 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214462,0,'Comment/Help','Comment or Hint','The Help field contains a hint, comment or help about the use of this item.',200274,'Help',2000,'N','N','N','N','N',0,'N',14,0,0,'Y',TO_DATE('2021-05-30 14:44:57','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:57','YYYY-MM-DD HH24:MI:SS'),100,326,'Y','N','D','Y','N','N','Y','576f9669-ee37-4846-84c0-05fd540bebac','Y',0,'N','N','N','N') +; + +-- May 30, 2021, 2:44:57 PM CEST +ALTER TABLE MFA_RegisteredDevice ADD Help VARCHAR2(2000 CHAR) DEFAULT NULL +; + +-- May 30, 2021, 2:44:58 PM CEST +INSERT INTO AD_Tab (AD_Tab_ID,Name,AD_Window_ID,SeqNo,IsSingleRow,AD_Table_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,HasTree,IsInfoTab,IsTranslationTab,IsReadOnly,OrderByClause,Processing,TabLevel,IsSortTab,EntityType,IsInsertRecord,IsAdvancedTab,AD_Tab_UU,TreeDisplayedOn,IsLookupOnlySelection,IsAllowAdvancedLookup,MaxQueryRecords) VALUES (200289,'MFA Registered Device',200115,10,'Y',200274,0,0,'Y',TO_DATE('2021-05-30 14:44:57','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:57','YYYY-MM-DD HH24:MI:SS'),100,'N','N','N','N','MFA_RegisteredDevice.Created DESC','N',0,'N','D','Y','Y','d4125e71-276c-4fba-b857-0c83ff610a87','B','N','Y',0) +; + +-- May 30, 2021, 2:44:58 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206628,'MFA Registered Device',200289,214450,'N',22,0,'N','N','N','N',0,0,'Y',TO_DATE('2021-05-30 14:44:58','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:58','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','29882a81-1c74-4068-9038-1027dc01bcd3','N',1,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:44:58 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206629,'MFA_RegisteredDevice_UU',200289,214456,'N',36,0,'N','N','N','N',0,0,'Y',TO_DATE('2021-05-30 14:44:58','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:58','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','142dc396-7ca7-444b-99aa-31d5eec34084','N',1,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:44:58 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206630,'Client','Client/Tenant for this installation.','A Client is a company or a legal entity. You cannot share data between Clients. Tenant is a synonym for Client.',200289,214451,'Y',22,10,'N','N','N','N',0,0,'Y',TO_DATE('2021-05-30 14:44:58','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:58','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','af6a1342-dabe-4b7a-a4b1-f6acff61e56f','Y',10,1,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:44:59 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsAllowCopy,IsDisplayedGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206631,'Organization','Organizational entity within client','An organization is a unit of your client or legal entity - examples are store, department. You can share data between organizations.',200289,214452,'Y',22,20,'N','N','N','N',0,0,'Y',TO_DATE('2021-05-30 14:44:58','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:58','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','9f774c93-0cd7-4e22-bc4e-f900b0d6ee0f','Y','N',4,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:44:59 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206632,'User/Contact','User within the system - Internal or Business Partner Contact','The User identifies a unique user in the system. This could be an internal user or a business partner contact',200289,214459,'Y',22,30,'N','N','N','N',0,0,'Y',TO_DATE('2021-05-30 14:44:59','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:59','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','0b327ebf-9e1b-4a6c-aa65-5b2461c1284e','Y',20,1,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:44:59 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206633,'MFA Device Identifier','Multi-factor Authentication Device Identifier',200289,214460,'Y',2000,40,'N','N','N','N',0,0,'Y',TO_DATE('2021-05-30 14:44:59','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:59','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','7e58b4db-f209-4a74-b718-373d31042359','Y',30,1,5,1,'N','N','N','N') +; + +-- May 30, 2021, 2:45:00 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206634,'Comment/Help','Comment or Hint','The Help field contains a hint, comment or help about the use of this item.',200289,214462,'Y',2000,50,'N','N','N','N',0,0,'Y',TO_DATE('2021-05-30 14:44:59','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:44:59','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','fed4ae1b-d8db-4735-9d24-b650b5e134a8','Y',60,1,5,3,'N','N','N','N') +; + +-- May 30, 2021, 2:45:00 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206635,'Expire On','Expire On',200289,214461,'Y',29,60,'N','N','N','N',0,0,'Y',TO_DATE('2021-05-30 14:45:00','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:00','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','774f6ad1-9d07-4614-82cc-215230104a31','Y',40,1,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:45:00 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206636,'Active','The record is active in the system','There are two methods of making records unavailable in the system: One is to delete the record, the other is to de-activate the record. A de-activated record is not available for selection, but available for reports. +There are two reasons for de-activating and not deleting records: +(1) The system requires the record for audit purposes. +(2) The record is referenced by other records. E.g., you cannot delete a Business Partner, if there are invoices for this partner record existing. You de-activate the Business Partner and prevent that this record is used for future entries.',200289,214455,'Y',1,70,'N','N','N','N',0,0,'Y',TO_DATE('2021-05-30 14:45:00','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:00','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','11219e02-68a6-4705-8ab6-5cdd766b9bec','Y',50,6,1,1,'N','N','N','N') +; + +-- May 30, 2021, 2:45:01 PM CEST +INSERT INTO AD_Window (AD_Window_ID,Name,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,WindowType,Processing,EntityType,IsSOTrx,IsDefault,IsBetaFunctionality,AD_Window_UU) VALUES (200116,'MFA Registration',0,0,'Y',TO_DATE('2021-05-30 14:45:00','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:00','YYYY-MM-DD HH24:MI:SS'),100,'M','N','D','Y','N','N','48632d2c-fd99-488d-a030-2ed3a54f99c1') +; + +-- May 30, 2021, 2:45:01 PM CEST +INSERT INTO AD_Table (AD_Table_ID,Name,Description,AD_Window_ID,TableName,LoadSeq,AccessLevel,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsSecurityEnabled,IsDeleteable,IsHighVolume,IsView,EntityType,ImportTable,IsChangeLog,ReplicationType,CopyColumnsFromTable,IsCentrallyMaintained,AD_Table_UU,Processing,DatabaseViewDrop,CopyComponentsFromView,CreateWindowFromTable) VALUES (200275,'MFA Registration','Multi-factor Authentication Registration',200116,'MFA_Registration',0,'6',0,0,'Y',TO_DATE('2021-05-30 14:45:01','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:01','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','N','N','D','N','Y','L','N','Y','0c80292c-8d90-4e7b-81d4-9e03a6397f70','N','N','N','N') +; + +-- May 30, 2021, 2:45:01 PM CEST +INSERT INTO AD_Sequence (Name,CurrentNext,IsAudited,StartNewYear,Description,IsActive,IsTableID,AD_Client_ID,AD_Org_ID,Created,CreatedBy,Updated,UpdatedBy,AD_Sequence_ID,IsAutoSequence,StartNo,IncrementNo,CurrentNextSys,AD_Sequence_UU) VALUES ('MFA_Registration',1000000,'N','N','Table MFA_Registration','Y','Y',0,0,TO_DATE('2021-05-30 14:45:01','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:01','YYYY-MM-DD HH24:MI:SS'),100,200344,'Y',1000000,1,200000,'ca2a5e73-37c6-4a51-8219-006e0b19f79a') +; + +-- May 30, 2021, 2:45:02 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214463,1,'MFA Registration',200275,'MFA_Registration_ID',22,'Y','N','Y','N','N',0,'N',13,0,0,'Y',TO_DATE('2021-05-30 14:45:01','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:01','YYYY-MM-DD HH24:MI:SS'),100,203487,'N','N','D','Y','N','N','Y','3e6c4c15-603e-45fd-875f-eca9919c07cc','N','N','N','N','N') +; + +-- May 30, 2021, 2:45:02 PM CEST +CREATE TABLE MFA_Registration (MFA_Registration_ID NUMBER(10) NOT NULL, CONSTRAINT MFA_Registration_Key PRIMARY KEY (MFA_Registration_ID)) +; + +-- May 30, 2021, 2:45:02 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,AD_Val_Rule_ID,ColumnName,DefaultValue,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214464,1,'Client','Client/Tenant for this installation.','A Client is a company or a legal entity. You cannot share data between Clients. Tenant is a synonym for Client.',200275,129,'AD_Client_ID','@#AD_Client_ID@',22,'N','N','Y','N','N',0,'N',19,0,0,'Y',TO_DATE('2021-05-30 14:45:02','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:02','YYYY-MM-DD HH24:MI:SS'),100,102,'N','N','D','Y','N','N','Y','0b347cca-16ae-4f32-874f-76521b2e3971','N','N','N','D','N') +; + +-- May 30, 2021, 2:45:02 PM CEST +ALTER TABLE MFA_Registration ADD AD_Client_ID NUMBER(10) NOT NULL +; + +-- May 30, 2021, 2:45:02 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,AD_Val_Rule_ID,ColumnName,DefaultValue,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214465,1,'Organization','Organizational entity within client','An organization is a unit of your client or legal entity - examples are store, department. You can share data between organizations.',200275,104,'AD_Org_ID','@#AD_Org_ID@',22,'N','N','Y','N','N',0,'N',19,0,0,'Y',TO_DATE('2021-05-30 14:45:02','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:02','YYYY-MM-DD HH24:MI:SS'),100,113,'N','N','D','Y','N','N','Y','55467df6-cae6-4a24-adde-50ced5f7ac63','N','N','N','D','N') +; + +-- May 30, 2021, 2:45:02 PM CEST +ALTER TABLE MFA_Registration ADD AD_Org_ID NUMBER(10) NOT NULL +; + +-- May 30, 2021, 2:45:03 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,DefaultValue,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214466,1,'Created','Date this record was created','The Created field indicates the date that this record was created.',200275,'Created','SYSDATE',7,'N','N','Y','N','N',0,'N',16,0,0,'Y',TO_DATE('2021-05-30 14:45:03','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:03','YYYY-MM-DD HH24:MI:SS'),100,245,'N','N','D','Y','N','N','Y','91cb1f9c-06bf-44ba-8ec5-776ba73439ec','N','N','N','N','N') +; + +-- May 30, 2021, 2:45:03 PM CEST +ALTER TABLE MFA_Registration ADD Created DATE DEFAULT SYSDATE NOT NULL +; + +-- May 30, 2021, 2:45:03 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Reference_Value_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214467,1,'Created By','User who created this records','The Created By field indicates the user who created this record.',200275,'CreatedBy',22,'N','N','Y','N','N',0,'N',30,110,0,0,'Y',TO_DATE('2021-05-30 14:45:03','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:03','YYYY-MM-DD HH24:MI:SS'),100,246,'N','N','D','Y','N','N','Y','0905234a-e64c-490f-8161-fdb3ab369a6e','N','N','N','D','N') +; + +-- May 30, 2021, 2:45:03 PM CEST +ALTER TABLE MFA_Registration ADD CreatedBy NUMBER(10) NOT NULL +; + +-- May 30, 2021, 2:45:03 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,IsHtml) VALUES (214468,1,'Name','Alphanumeric identifier of the entity','The name of an entity (record) is used as an default search option in addition to the search key. The name is up to 60 characters in length.',200275,'Name',1000,'N','N','N','N','Y',2,'N',10,0,0,'Y',TO_DATE('2021-05-30 14:45:03','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:03','YYYY-MM-DD HH24:MI:SS'),100,469,'Y','Y','D','Y','N','N','Y','364b1b1d-808f-44f1-98d5-58a7f39b1978','Y',10,'N','N','N') +; + +-- May 30, 2021, 2:45:03 PM CEST +ALTER TABLE MFA_Registration ADD Name VARCHAR2(1000 CHAR) DEFAULT NULL +; + +-- May 30, 2021, 2:45:04 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214469,1,'Comment/Help','Comment or Hint','The Help field contains a hint, comment or help about the use of this item.',200275,'Help',2000,'N','N','N','N','N',0,'N',14,0,0,'Y',TO_DATE('2021-05-30 14:45:04','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:04','YYYY-MM-DD HH24:MI:SS'),100,326,'Y','N','D','Y','N','N','Y','047282d1-da77-4a40-b347-28c3ae3acc00','Y','N','N','N','N') +; + +-- May 30, 2021, 2:45:04 PM CEST +ALTER TABLE MFA_Registration ADD Help VARCHAR2(2000 CHAR) DEFAULT NULL +; + +-- May 30, 2021, 2:45:04 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,DefaultValue,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214470,1,'Active','The record is active in the system','There are two methods of making records unavailable in the system: One is to delete the record, the other is to de-activate the record. A de-activated record is not available for selection, but available for reports. +There are two reasons for de-activating and not deleting records: +(1) The system requires the record for audit purposes. +(2) The record is referenced by other records. E.g., you cannot delete a Business Partner, if there are invoices for this partner record existing. You de-activate the Business Partner and prevent that this record is used for future entries.',200275,'IsActive','Y',1,'N','N','Y','N','N',0,'N',20,0,0,'Y',TO_DATE('2021-05-30 14:45:04','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:04','YYYY-MM-DD HH24:MI:SS'),100,348,'Y','N','D','Y','N','N','Y','2de645f9-01c5-4a03-a72b-8906750c3d28','N','N','N','N','N') +; + +-- May 30, 2021, 2:45:04 PM CEST +ALTER TABLE MFA_Registration ADD IsActive CHAR(1) DEFAULT 'Y' CHECK (IsActive IN ('Y','N')) NOT NULL +; + +-- May 30, 2021, 2:45:05 PM CEST +INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,PrintName,EntityType,AD_Element_UU) VALUES (203503,0,0,'Y',TO_DATE('2021-05-30 14:45:04','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:04','YYYY-MM-DD HH24:MI:SS'),100,'MFA_Registration_UU','MFA_Registration_UU','MFA_Registration_UU','D','d933ab33-08d4-4772-ad49-5cd54e86870a') +; + +-- May 30, 2021, 2:45:05 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214471,1.00,'MFA_Registration_UU',200275,'MFA_Registration_UU',36,'N','N','N','N','N','N',10,0,0,'Y',TO_DATE('2021-05-30 14:45:05','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:05','YYYY-MM-DD HH24:MI:SS'),100,203503,'Y','N','D','Y','N','N','Y','a31634e6-b68e-4f1c-875d-037fd72e0eee','N','N','N','N','N') +; + +-- May 30, 2021, 2:45:05 PM CEST +ALTER TABLE MFA_Registration ADD MFA_Registration_UU VARCHAR2(36 CHAR) DEFAULT NULL +; + +-- May 30, 2021, 2:45:05 PM CEST +ALTER TABLE MFA_Registration ADD CONSTRAINT MFA_Registration_UU_idx UNIQUE (MFA_Registration_UU) +; + +-- May 30, 2021, 2:45:05 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,DefaultValue,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214472,1,'Updated','Date this record was updated','The Updated field indicates the date that this record was updated.',200275,'Updated','SYSDATE',7,'N','N','Y','N','N',0,'N',16,0,0,'Y',TO_DATE('2021-05-30 14:45:05','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:05','YYYY-MM-DD HH24:MI:SS'),100,607,'N','N','D','Y','N','N','Y','6427e797-f3d0-40de-9851-a335bde9e5ac','N','N','N','N','N') +; + +-- May 30, 2021, 2:45:05 PM CEST +ALTER TABLE MFA_Registration ADD Updated DATE DEFAULT SYSDATE NOT NULL +; + +-- May 30, 2021, 2:45:06 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Reference_Value_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214473,1,'Updated By','User who updated this records','The Updated By field indicates the user who updated this record.',200275,'UpdatedBy',22,'N','N','Y','N','N',0,'N',30,110,0,0,'Y',TO_DATE('2021-05-30 14:45:05','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:05','YYYY-MM-DD HH24:MI:SS'),100,608,'N','N','D','Y','N','N','Y','a0af0c88-69e7-40e7-919d-0a4b90654829','N','N','N','D','N') +; + +-- May 30, 2021, 2:45:06 PM CEST +ALTER TABLE MFA_Registration ADD UpdatedBy NUMBER(10) NOT NULL +; + +-- May 30, 2021, 2:45:06 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintName,FKConstraintType,IsHtml) VALUES (214474,0,'MFA Method','Multi-factor Authentication Method',200275,'MFA_Method_ID',22,'N','N','Y','N','Y',1,'N',19,0,0,'Y',TO_DATE('2021-05-30 14:45:06','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:06','YYYY-MM-DD HH24:MI:SS'),100,203490,'Y','N','D','Y','N','N','Y','c6d57e6f-5ef8-4553-adf5-ae3e80a06d7f','Y',0,'N','N','MFAMethod_MFARegistration','N','N') +; + +-- May 30, 2021, 2:45:06 PM CEST +ALTER TABLE MFA_Registration ADD MFA_Method_ID NUMBER(10) NOT NULL +; + +-- May 30, 2021, 2:45:06 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintName,FKConstraintType,IsHtml) VALUES (214475,0,'User/Contact','User within the system - Internal or Business Partner Contact','The User identifies a unique user in the system. This could be an internal user or a business partner contact',200275,'AD_User_ID',22,'N','N','Y','N','N',0,'N',30,0,0,'Y',TO_DATE('2021-05-30 14:45:06','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:06','YYYY-MM-DD HH24:MI:SS'),100,138,'Y','N','D','Y','N','N','Y','957429c0-e82a-404f-8256-f14d98c8c7b6','Y',0,'N','N','ADUser_MFARegistration','N','N') +; + +-- May 30, 2021, 2:45:06 PM CEST +ALTER TABLE MFA_Registration ADD AD_User_ID NUMBER(10) NOT NULL +; + +-- May 30, 2021, 2:45:07 PM CEST +INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,Description,PrintName,EntityType,AD_Element_UU) VALUES (203504,0,0,'Y',TO_DATE('2021-05-30 14:45:06','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:06','YYYY-MM-DD HH24:MI:SS'),100,'MFASecret','MFA Secret','Multi-factor Authentication Secret','MFA Secret','D','75934c11-c373-44c4-a3a1-290e01dbae94') +; + +-- May 30, 2021, 2:45:07 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214476,0,'MFA Secret','Multi-factor Authentication Secret',200275,'MFASecret',2000,'N','N','N','N','N',0,'N',10,0,0,'Y',TO_DATE('2021-05-30 14:45:07','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:07','YYYY-MM-DD HH24:MI:SS'),100,203504,'Y','N','D','Y','N','N','Y','649b3d2f-6d06-43b0-a3b3-db377d66d138','Y',0,'N','N','N','N') +; + +-- May 30, 2021, 2:45:07 PM CEST +ALTER TABLE MFA_Registration ADD MFASecret VARCHAR2(2000 CHAR) DEFAULT NULL +; + +-- May 30, 2021, 2:45:07 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,DefaultValue,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214477,0,'Valid','Element is valid','The element passed the validation check',200275,'IsValid','N',1,'N','N','Y','N','N',0,'N',20,0,0,'Y',TO_DATE('2021-05-30 14:45:07','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:07','YYYY-MM-DD HH24:MI:SS'),100,2002,'Y','N','D','Y','N','N','Y','07f81c2c-e77e-4425-a15a-7e8157eb6856','Y',0,'N','N','N','N') +; + +-- May 30, 2021, 2:45:07 PM CEST +ALTER TABLE MFA_Registration ADD IsValid CHAR(1) DEFAULT 'N' CHECK (IsValid IN ('Y','N')) NOT NULL +; + +-- May 30, 2021, 2:45:08 PM CEST +INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,PrintName,EntityType,AD_Element_UU) VALUES (203505,0,0,'Y',TO_DATE('2021-05-30 14:45:07','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:07','YYYY-MM-DD HH24:MI:SS'),100,'MFAValidatedAt','Validated at','Validated at','D','26fad160-6cac-403b-9fcc-7d1fff1d79ec') +; + +-- May 30, 2021, 2:45:08 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214478,0,'Validated at',200275,'MFAValidatedAt',7,'N','N','N','N','N',0,'N',16,0,0,'Y',TO_DATE('2021-05-30 14:45:08','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:08','YYYY-MM-DD HH24:MI:SS'),100,203505,'Y','N','D','Y','N','N','Y','a6a98589-aabb-4960-aa7b-4f5935234e42','Y',0,'N','N','N','N') +; + +-- May 30, 2021, 2:45:08 PM CEST +ALTER TABLE MFA_Registration ADD MFAValidatedAt DATE DEFAULT NULL +; + +-- May 30, 2021, 2:45:08 PM CEST +INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,PrintName,EntityType,AD_Element_UU) VALUES (203506,0,0,'Y',TO_DATE('2021-05-30 14:45:08','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:08','YYYY-MM-DD HH24:MI:SS'),100,'MFAUnregisteredAt','Unregistered at','Unregistered at','D','576139cd-dd64-4fb6-ae5d-6cd1a9d470e0') +; + +-- May 30, 2021, 2:45:09 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214479,0,'Unregistered at',200275,'MFAUnregisteredAt',7,'N','N','N','N','N',0,'N',16,0,0,'Y',TO_DATE('2021-05-30 14:45:08','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:08','YYYY-MM-DD HH24:MI:SS'),100,203506,'Y','N','D','Y','N','N','Y','2adb4401-1b68-470f-aa03-01a3d3fdd350','Y',0,'N','N','N','N') +; + +-- May 30, 2021, 2:45:09 PM CEST +ALTER TABLE MFA_Registration ADD MFAUnregisteredAt DATE DEFAULT NULL +; + +-- May 30, 2021, 2:45:09 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,AD_Table_ID,ColumnName,DefaultValue,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214480,0,'Preferred',200275,'IsUserMFAPreferred','N',1,'N','N','Y','N','N',0,'N',20,0,0,'Y',TO_DATE('2021-05-30 14:45:09','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:09','YYYY-MM-DD HH24:MI:SS'),100,203489,'Y','N','D','Y','N','N','Y','5f25c961-b544-4868-8ad9-6eea0724fa03','Y',0,'N','N','N','N') +; + +-- May 30, 2021, 2:45:09 PM CEST +ALTER TABLE MFA_Registration ADD IsUserMFAPreferred CHAR(1) DEFAULT 'N' CHECK (IsUserMFAPreferred IN ('Y','N')) NOT NULL +; + +-- May 30, 2021, 2:45:09 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214481,0,'Expire On','Expire On',200275,'Expiration',29,'N','N','N','N','N',0,'N',16,0,0,'Y',TO_DATE('2021-05-30 14:45:09','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:09','YYYY-MM-DD HH24:MI:SS'),100,200245,'Y','N','D','Y','N','N','Y','27e95438-f072-4e92-ac5b-6cd93a1b971a','Y',0,'N','N','N','N') +; + +-- May 30, 2021, 2:45:09 PM CEST +ALTER TABLE MFA_Registration ADD Expiration DATE DEFAULT NULL +; + +-- May 30, 2021, 2:45:10 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214482,0,'Parameter Value',200275,'ParameterValue',2000,'N','N','N','N','N',0,'N',10,0,0,'Y',TO_DATE('2021-05-30 14:45:09','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:09','YYYY-MM-DD HH24:MI:SS'),100,53379,'Y','N','D','Y','N','N','Y','19b59c42-fd59-4ff3-a486-f8b9cc5a4ce7','Y',0,'N','N','N','N') +; + +-- May 30, 2021, 2:45:10 PM CEST +ALTER TABLE MFA_Registration ADD ParameterValue VARCHAR2(2000 CHAR) DEFAULT NULL +; + +-- May 30, 2021, 2:45:10 PM CEST +INSERT INTO AD_Tab (AD_Tab_ID,Name,AD_Window_ID,SeqNo,IsSingleRow,AD_Table_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,HasTree,IsInfoTab,IsTranslationTab,IsReadOnly,OrderByClause,Processing,TabLevel,IsSortTab,EntityType,IsInsertRecord,IsAdvancedTab,AD_Tab_UU,TreeDisplayedOn,IsLookupOnlySelection,IsAllowAdvancedLookup,MaxQueryRecords) VALUES (200290,'MFA Registration',200116,10,'Y',200275,0,0,'Y',TO_DATE('2021-05-30 14:45:10','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:10','YYYY-MM-DD HH24:MI:SS'),100,'N','N','N','N','MFA_Registration.Name','N',0,'N','D','Y','Y','9831281f-f29f-41ef-9d8f-baf9e14e4d4f','B','N','Y',0) +; + +-- May 30, 2021, 2:45:10 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206637,'MFA Registration',200290,214463,'N',22,0,'N','N','N','N',0,0,'Y',TO_DATE('2021-05-30 14:45:10','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:10','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','d59d4ce0-7f32-4e75-bb7a-f49e77015b90','N',1,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:45:11 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206638,'MFA_Registration_UU',200290,214471,'N',36,0,'N','N','N','N',0,0,'Y',TO_DATE('2021-05-30 14:45:10','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:10','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','7cbac4df-2f61-4bd9-aeaa-d42ce2c80842','N',1,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:45:11 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206639,'Client','Client/Tenant for this installation.','A Client is a company or a legal entity. You cannot share data between Clients. Tenant is a synonym for Client.',200290,214464,'Y',22,10,'N','N','N','N',0,0,'Y',TO_DATE('2021-05-30 14:45:11','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:11','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','f03f6b4a-40df-42b5-8dcb-3629bd462af5','Y',10,1,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:45:11 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsAllowCopy,IsDisplayedGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206640,'Organization','Organizational entity within client','An organization is a unit of your client or legal entity - examples are store, department. You can share data between organizations.',200290,214465,'Y',22,20,'N','N','N','N',0,0,'Y',TO_DATE('2021-05-30 14:45:11','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:11','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','8206502a-0d10-4de2-9324-7404c71ecafc','Y','N',4,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:45:12 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206641,'Name','Alphanumeric identifier of the entity','The name of an entity (record) is used as an default search option in addition to the search key. The name is up to 60 characters in length.',200290,214468,'Y',60,30,'N','N','N','N',0,0,'Y',TO_DATE('2021-05-30 14:45:11','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:11','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','57bc1544-5e4e-4c40-99d5-9b869e884847','Y',20,1,5,1,'N','N','N','N') +; + +-- May 30, 2021, 2:45:12 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206642,'Comment/Help','Comment or Hint','The Help field contains a hint, comment or help about the use of this item.',200290,214469,'Y',2000,40,'N','N','N','N',0,0,'Y',TO_DATE('2021-05-30 14:45:12','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:12','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','9df607dd-80b9-4c2a-97c7-a94e64f0d122','Y',30,1,5,3,'N','N','N','N') +; + +-- May 30, 2021, 2:45:12 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206643,'User/Contact','User within the system - Internal or Business Partner Contact','The User identifies a unique user in the system. This could be an internal user or a business partner contact',200290,214475,'Y',22,50,'N','N','N','N',0,0,'Y',TO_DATE('2021-05-30 14:45:12','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:12','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','14dc9d13-ef51-44fa-92f5-98c791bc757e','Y',50,1,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:45:12 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206644,'MFA Method','Multi-factor Authentication Method',200290,214474,'Y',22,60,'N','N','N','N',0,0,'Y',TO_DATE('2021-05-30 14:45:12','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:12','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','48512d1f-3e5e-41eb-b54c-538da325b7ee','Y',40,4,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:45:13 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206645,'Parameter Value',200290,214482,'Y',2000,70,'N','N','N','N',0,0,'Y',TO_DATE('2021-05-30 14:45:12','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:12','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','4d689c8e-9f61-41ba-953a-d90361c61050','Y',140,1,5,1,'N','N','N','N') +; + +-- May 30, 2021, 2:45:13 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206646,'MFA Secret','Multi-factor Authentication Secret',200290,214476,'Y',2000,80,'N','N','N','Y',0,0,'Y',TO_DATE('2021-05-30 14:45:13','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:13','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','da72323c-6950-49e9-b2ce-97a26922e981','Y',60,1,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:45:13 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206647,'Expire On','Expire On',200290,214481,'Y',29,90,'N','N','N','N',0,0,'Y',TO_DATE('2021-05-30 14:45:13','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:13','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','0816c719-de38-4951-8537-584bf795a544','Y',130,4,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:45:14 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206648,'Valid','Element is valid','The element passed the validation check',200290,214477,'Y',1,100,'N','N','N','N',0,0,'Y',TO_DATE('2021-05-30 14:45:13','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:13','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','5c93c799-2b4f-4f00-a750-c09d62e5850e','Y',70,2,1,1,'N','N','N','N') +; + +-- May 30, 2021, 2:45:14 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206649,'Preferred',200290,214480,'Y',1,110,'N','N','N','N',0,0,'Y',TO_DATE('2021-05-30 14:45:14','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:14','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','8dff0bc0-ecc8-4a9d-9521-b8ece1b90009','Y',110,3,1,1,'N','N','N','N') +; + +-- May 30, 2021, 2:45:14 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206650,'Validated at',200290,214478,'Y',7,120,'N','N','N','N',0,0,'Y',TO_DATE('2021-05-30 14:45:14','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:14','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','6f8ea06e-2a03-45b0-99be-9ee52ffb8ed0','Y',90,4,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:45:15 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206651,'Unregistered at',200290,214479,'Y',7,140,'N','N','N','N',0,0,'Y',TO_DATE('2021-05-30 14:45:14','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:14','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','398bfaac-b931-41d8-adb8-be36bf8b3047','Y',100,1,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:45:15 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206652,'Active','The record is active in the system','There are two methods of making records unavailable in the system: One is to delete the record, the other is to de-activate the record. A de-activated record is not available for selection, but available for reports. +There are two reasons for de-activating and not deleting records: +(1) The system requires the record for audit purposes. +(2) The record is referenced by other records. E.g., you cannot delete a Business Partner, if there are invoices for this partner record existing. You de-activate the Business Partner and prevent that this record is used for future entries.',200290,214470,'Y',1,150,'N','N','N','N',0,0,'Y',TO_DATE('2021-05-30 14:45:15','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:15','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','54e089be-a428-448c-88da-df68438e5a17','Y',120,6,1,1,'N','N','N','N') +; + +-- May 30, 2021, 2:45:15 PM CEST +INSERT INTO AD_Window (AD_Window_ID,Name,Description,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,WindowType,Processing,EntityType,IsSOTrx,IsDefault,IsBetaFunctionality,AD_Window_UU) VALUES (200117,'MFA Rule','Multi-factor Authentication Rule',0,0,'Y',TO_DATE('2021-05-30 14:45:15','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:15','YYYY-MM-DD HH24:MI:SS'),100,'M','N','D','Y','N','N','d97ad960-feb6-4deb-9991-9af7955253d1') +; + +-- May 30, 2021, 2:45:16 PM CEST +INSERT INTO AD_Table (AD_Table_ID,Name,Description,AD_Window_ID,TableName,LoadSeq,AccessLevel,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsSecurityEnabled,IsDeleteable,IsHighVolume,IsView,EntityType,ImportTable,IsChangeLog,ReplicationType,CopyColumnsFromTable,IsCentrallyMaintained,AD_Table_UU,Processing,DatabaseViewDrop,CopyComponentsFromView,CreateWindowFromTable) VALUES (200276,'MFA Rule','Multi-factor Authentication Rule',200117,'MFA_Rule',0,'6',0,0,'Y',TO_DATE('2021-05-30 14:45:15','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:15','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','N','N','D','N','Y','L','N','Y','3143692d-dc6d-4a3d-8f01-40fce4bb398a','N','N','N','N') +; + +-- May 30, 2021, 2:45:16 PM CEST +INSERT INTO AD_Sequence (Name,CurrentNext,IsAudited,StartNewYear,Description,IsActive,IsTableID,AD_Client_ID,AD_Org_ID,Created,CreatedBy,Updated,UpdatedBy,AD_Sequence_ID,IsAutoSequence,StartNo,IncrementNo,CurrentNextSys,AD_Sequence_UU) VALUES ('MFA_Rule',1000000,'N','N','Table MFA_Rule','Y','Y',0,0,TO_DATE('2021-05-30 14:45:16','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:16','YYYY-MM-DD HH24:MI:SS'),100,200345,'Y',1000000,1,200000,'a8365f4a-e13d-464e-b4ef-82ea4e6bad1d') +; + +-- May 30, 2021, 2:45:16 PM CEST +INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,Description,PrintName,EntityType,AD_Element_UU) VALUES (203507,0,0,'Y',TO_DATE('2021-05-30 14:45:16','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:16','YYYY-MM-DD HH24:MI:SS'),100,'MFA_Rule_ID','MFA Rule','Multi-factor Authentication Rule','MFA Rule','D','69b6070b-aa9c-4b26-bd0a-ec54171dae03') +; + +-- May 30, 2021, 2:45:17 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214483,1,'MFA Rule','Multi-factor Authentication Rule',200276,'MFA_Rule_ID',22,'Y','N','Y','N','N',0,'N',13,0,0,'Y',TO_DATE('2021-05-30 14:45:16','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:16','YYYY-MM-DD HH24:MI:SS'),100,203507,'N','N','D','Y','N','N','Y','a3204fe0-25ee-4aa6-a25c-4caaf9936b9c','N','N','N','N','N') +; + +-- May 30, 2021, 2:45:17 PM CEST +CREATE TABLE MFA_Rule (MFA_Rule_ID NUMBER(10) NOT NULL, CONSTRAINT MFA_Rule_Key PRIMARY KEY (MFA_Rule_ID)) +; + +-- May 30, 2021, 2:45:17 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,AD_Val_Rule_ID,ColumnName,DefaultValue,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214484,1,'Client','Client/Tenant for this installation.','A Client is a company or a legal entity. You cannot share data between Clients. Tenant is a synonym for Client.',200276,129,'AD_Client_ID','@#AD_Client_ID@',22,'N','N','Y','N','N',0,'N',19,0,0,'Y',TO_DATE('2021-05-30 14:45:17','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:17','YYYY-MM-DD HH24:MI:SS'),100,102,'N','N','D','Y','N','N','Y','63061b21-b6c5-4a1d-82bb-ef8c32e42bf6','N','N','N','D','N') +; + +-- May 30, 2021, 2:45:17 PM CEST +ALTER TABLE MFA_Rule ADD AD_Client_ID NUMBER(10) NOT NULL +; + +-- May 30, 2021, 2:45:17 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,AD_Val_Rule_ID,ColumnName,DefaultValue,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214485,1,'Organization','Organizational entity within client','An organization is a unit of your client or legal entity - examples are store, department. You can share data between organizations.',200276,104,'AD_Org_ID','@#AD_Org_ID@',22,'N','N','Y','N','N',0,'N',19,0,0,'Y',TO_DATE('2021-05-30 14:45:17','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:17','YYYY-MM-DD HH24:MI:SS'),100,113,'N','N','D','Y','N','N','Y','afbfb795-112c-48eb-801e-1ac8edd77bf5','N','N','N','D','N') +; + +-- May 30, 2021, 2:45:17 PM CEST +ALTER TABLE MFA_Rule ADD AD_Org_ID NUMBER(10) NOT NULL +; + +-- May 30, 2021, 2:45:18 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,DefaultValue,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214486,1,'Created','Date this record was created','The Created field indicates the date that this record was created.',200276,'Created','SYSDATE',7,'N','N','Y','N','N',0,'N',16,0,0,'Y',TO_DATE('2021-05-30 14:45:17','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:17','YYYY-MM-DD HH24:MI:SS'),100,245,'N','N','D','Y','N','N','Y','f2ebf2ae-a4a4-4b72-b1b9-fda80421c6f0','N','N','N','N','N') +; + +-- May 30, 2021, 2:45:18 PM CEST +ALTER TABLE MFA_Rule ADD Created DATE DEFAULT SYSDATE NOT NULL +; + +-- May 30, 2021, 2:45:18 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Reference_Value_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214487,1,'Created By','User who created this records','The Created By field indicates the user who created this record.',200276,'CreatedBy',22,'N','N','Y','N','N',0,'N',30,110,0,0,'Y',TO_DATE('2021-05-30 14:45:18','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:18','YYYY-MM-DD HH24:MI:SS'),100,246,'N','N','D','Y','N','N','Y','839fc23c-7413-41fa-93a1-f5a193a1bcc4','N','N','N','D','N') +; + +-- May 30, 2021, 2:45:18 PM CEST +ALTER TABLE MFA_Rule ADD CreatedBy NUMBER(10) NOT NULL +; + +-- May 30, 2021, 2:45:18 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214488,1,'Comment/Help','Comment or Hint','The Help field contains a hint, comment or help about the use of this item.',200276,'Help',2000,'N','N','N','N','N',0,'N',14,0,0,'Y',TO_DATE('2021-05-30 14:45:18','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:18','YYYY-MM-DD HH24:MI:SS'),100,326,'Y','N','D','Y','N','N','Y','00b06810-1ac8-4614-8c54-928c0cb40fad','Y','N','N','N','N') +; + +-- May 30, 2021, 2:45:18 PM CEST +ALTER TABLE MFA_Rule ADD Help VARCHAR2(2000 CHAR) DEFAULT NULL +; + +-- May 30, 2021, 2:45:19 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,DefaultValue,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214489,1,'Active','The record is active in the system','There are two methods of making records unavailable in the system: One is to delete the record, the other is to de-activate the record. A de-activated record is not available for selection, but available for reports. +There are two reasons for de-activating and not deleting records: +(1) The system requires the record for audit purposes. +(2) The record is referenced by other records. E.g., you cannot delete a Business Partner, if there are invoices for this partner record existing. You de-activate the Business Partner and prevent that this record is used for future entries.',200276,'IsActive','Y',1,'N','N','Y','N','N',0,'N',20,0,0,'Y',TO_DATE('2021-05-30 14:45:18','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:18','YYYY-MM-DD HH24:MI:SS'),100,348,'Y','N','D','Y','N','N','Y','10ee6d2f-b8cb-48ee-a385-fa4cb686b0b2','N','N','N','N','N') +; + +-- May 30, 2021, 2:45:19 PM CEST +ALTER TABLE MFA_Rule ADD IsActive CHAR(1) DEFAULT 'Y' CHECK (IsActive IN ('Y','N')) NOT NULL +; + +-- May 30, 2021, 2:45:19 PM CEST +INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,PrintName,EntityType,AD_Element_UU) VALUES (203508,0,0,'Y',TO_DATE('2021-05-30 14:45:19','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:19','YYYY-MM-DD HH24:MI:SS'),100,'MFA_Rule_UU','MFA_Rule_UU','MFA_Rule_UU','D','ab218afd-6a60-4300-9d14-2bc70ee5b405') +; + +-- May 30, 2021, 2:45:19 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214490,1.00,'MFA_Rule_UU',200276,'MFA_Rule_UU',36,'N','N','N','N','N','N',10,0,0,'Y',TO_DATE('2021-05-30 14:45:19','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:19','YYYY-MM-DD HH24:MI:SS'),100,203508,'Y','N','D','Y','N','N','Y','39f43c92-27d0-48f2-b435-a44124b28c84','N','N','N','N','N') +; + +-- May 30, 2021, 2:45:19 PM CEST +ALTER TABLE MFA_Rule ADD MFA_Rule_UU VARCHAR2(36 CHAR) DEFAULT NULL +; + +-- May 30, 2021, 2:45:19 PM CEST +ALTER TABLE MFA_Rule ADD CONSTRAINT MFA_Rule_UU_idx UNIQUE (MFA_Rule_UU) +; + +-- May 30, 2021, 2:45:20 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,DefaultValue,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214491,1,'Updated','Date this record was updated','The Updated field indicates the date that this record was updated.',200276,'Updated','SYSDATE',7,'N','N','Y','N','N',0,'N',16,0,0,'Y',TO_DATE('2021-05-30 14:45:19','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:19','YYYY-MM-DD HH24:MI:SS'),100,607,'N','N','D','Y','N','N','Y','0bcf9ffc-1f5f-4c3b-8596-ebadcdcc15de','N','N','N','N','N') +; + +-- May 30, 2021, 2:45:20 PM CEST +ALTER TABLE MFA_Rule ADD Updated DATE DEFAULT SYSDATE NOT NULL +; + +-- May 30, 2021, 2:45:20 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Reference_Value_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214492,1,'Updated By','User who updated this records','The Updated By field indicates the user who updated this record.',200276,'UpdatedBy',22,'N','N','Y','N','N',0,'N',30,110,0,0,'Y',TO_DATE('2021-05-30 14:45:20','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:20','YYYY-MM-DD HH24:MI:SS'),100,608,'N','N','D','Y','N','N','Y','81d2913a-f0c4-4ce3-b369-6abd6c6cc32e','N','N','N','D','N') +; + +-- May 30, 2021, 2:45:20 PM CEST +ALTER TABLE MFA_Rule ADD UpdatedBy NUMBER(10) NOT NULL +; + +-- May 30, 2021, 2:45:20 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintName,FKConstraintType,IsHtml) VALUES (214493,0,'MFA Method','Multi-factor Authentication Method',200276,'MFA_Method_ID',22,'N','N','Y','N','N',0,'N',19,0,0,'Y',TO_DATE('2021-05-30 14:45:20','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:20','YYYY-MM-DD HH24:MI:SS'),100,203490,'N','N','D','Y','N','N','Y','e46cba84-bc2e-47dd-8945-2c41e44e4fcb','Y',0,'N','N','MFAMethod_MFARule','N','N') +; + +-- May 30, 2021, 2:45:20 PM CEST +ALTER TABLE MFA_Rule ADD MFA_Method_ID NUMBER(10) NOT NULL +; + +-- May 30, 2021, 2:45:23 PM CEST +INSERT INTO AD_Tab (AD_Tab_ID,Name,Description,AD_Window_ID,SeqNo,IsSingleRow,AD_Table_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,HasTree,IsInfoTab,IsTranslationTab,IsReadOnly,OrderByClause,Processing,TabLevel,IsSortTab,EntityType,IsInsertRecord,IsAdvancedTab,AD_Tab_UU,TreeDisplayedOn,IsLookupOnlySelection,IsAllowAdvancedLookup,MaxQueryRecords) VALUES (200291,'MFA Rule','Multi-factor Authentication Rule',200117,10,'Y',200276,0,0,'Y',TO_DATE('2021-05-30 14:45:22','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:22','YYYY-MM-DD HH24:MI:SS'),100,'N','N','N','N','MFA_Rule.Created DESC','N',0,'N','D','Y','Y','b870c13f-8ff8-462a-80fa-9e27ca0fb329','B','N','Y',0) +; + +-- May 30, 2021, 2:45:23 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206653,'MFA_Rule_UU',200291,214490,'N',36,0,'N','N','N','N',0,0,'Y',TO_DATE('2021-05-30 14:45:23','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:23','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','a0ccfd12-5e27-45ef-9344-c2b554f12a1e','N',1,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:45:23 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206654,'MFA Rule','Multi-factor Authentication Rule',200291,214483,'N',22,0,'N','N','N','N',0,0,'Y',TO_DATE('2021-05-30 14:45:23','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:23','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','0a4a6136-0536-4ff0-bb60-e445f5a4b25e','N',1,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:45:24 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206655,'Client','Client/Tenant for this installation.','A Client is a company or a legal entity. You cannot share data between Clients. Tenant is a synonym for Client.',200291,214484,'Y',22,10,'N','N','N','N',0,0,'Y',TO_DATE('2021-05-30 14:45:23','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:23','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','8668ecbd-4965-4823-a074-4ee6ae0c8727','Y',10,1,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:45:24 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsAllowCopy,IsDisplayedGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206656,'Organization','Organizational entity within client','An organization is a unit of your client or legal entity - examples are store, department. You can share data between organizations.',200291,214485,'Y',22,20,'N','N','N','N',0,0,'Y',TO_DATE('2021-05-30 14:45:24','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:24','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','1a88050c-4ad9-4944-bdf5-e22de820d5a6','Y','N',4,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:45:24 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206657,'MFA Method','Multi-factor Authentication Method',200291,214493,'Y',22,30,'N','N','N','N',0,0,'Y',TO_DATE('2021-05-30 14:45:24','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:24','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','d30c7b06-5930-469e-8c5a-73bcc78eabcf','Y',30,1,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:45:25 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206658,'Comment/Help','Comment or Hint','The Help field contains a hint, comment or help about the use of this item.',200291,214488,'Y',2000,50,'N','N','N','N',0,0,'Y',TO_DATE('2021-05-30 14:45:24','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:24','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','fa1f35dc-1ad6-445e-9157-14357b2273e3','Y',20,1,5,3,'N','N','N','N') +; + +-- May 30, 2021, 2:45:26 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206662,'Active','The record is active in the system','There are two methods of making records unavailable in the system: One is to delete the record, the other is to de-activate the record. A de-activated record is not available for selection, but available for reports. +There are two reasons for de-activating and not deleting records: +(1) The system requires the record for audit purposes. +(2) The record is referenced by other records. E.g., you cannot delete a Business Partner, if there are invoices for this partner record existing. You de-activate the Business Partner and prevent that this record is used for future entries.',200291,214489,'Y',1,90,'N','N','N','N',0,0,'Y',TO_DATE('2021-05-30 14:45:26','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:26','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','2bb3137e-35e5-49d1-ac7c-944d560b37f3','Y',80,5,1,1,'N','N','N','N') +; + +-- May 30, 2021, 2:45:26 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('E','The provided code doesn''t match with the expected secret',0,0,'Y',TO_DATE('2021-05-30 14:45:26','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:26','YYYY-MM-DD HH24:MI:SS'),100,200686,'MFACodeInvalid','D','fc8f217f-7734-4614-b93d-0b593847607b') +; + +-- May 30, 2021, 2:45:27 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('E','Code required to complete MFA registration',0,0,'Y',TO_DATE('2021-05-30 14:45:26','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:26','YYYY-MM-DD HH24:MI:SS'),100,200687,'MFACodeRequired','D','b75a4b06-82f8-4262-9f05-e78fcbdcb233') +; + +-- May 30, 2021, 2:45:27 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','A validation code was sent to the provided address, please check the EMail, remember to check spam folder in case you don''t receive it soon.',0,0,'Y',TO_DATE('2021-05-30 14:45:27','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:27','YYYY-MM-DD HH24:MI:SS'),100,200688,'MFAEMailCodeSent','D','24785891-890a-4f87-8961-1441495e55ec') +; + +-- May 30, 2021, 2:45:27 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('E','For EMail authentication method the EMail is required',0,0,'Y',TO_DATE('2021-05-30 14:45:27','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:27','YYYY-MM-DD HH24:MI:SS'),100,200689,'MFAEMailRequired','D','839569eb-d57b-42ca-bd52-b9a1b9ba8b90') +; + +-- May 30, 2021, 2:45:28 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','A validation code was sent to the email {0}',0,0,'Y',TO_DATE('2021-05-30 14:45:27','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:27','YYYY-MM-DD HH24:MI:SS'),100,200690,'MFAEMailValidationCodeSent','D','fcf83a42-2e5b-413e-a482-c5418ed0d0a3') +; + +-- May 30, 2021, 2:45:28 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','The EMail address provided is not valid',0,0,'Y',TO_DATE('2021-05-30 14:45:28','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:28','YYYY-MM-DD HH24:MI:SS'),100,200691,'MFAInvalidEMail','D','65fc1b0c-d5dc-48ed-a04d-e4bd6faf74a2') +; + +-- May 30, 2021, 2:45:28 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','MFA Mechanism',0,0,'Y',TO_DATE('2021-05-30 14:45:28','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:28','YYYY-MM-DD HH24:MI:SS'),100,200692,'MFALoginMechanism','D','6d8b9d59-9080-4803-b461-f9ed239c3157') +; + +-- May 30, 2021, 2:45:28 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','Select a mechanism and click OK to start',0,0,'Y',TO_DATE('2021-05-30 14:45:28','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:28','YYYY-MM-DD HH24:MI:SS'),100,200693,'MFALoginMessage','D','41e6fb50-2876-40cd-ac05-c1ad19267a05') +; + +-- May 30, 2021, 2:45:29 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','Set as Preferred',0,0,'Y',TO_DATE('2021-05-30 14:45:29','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:29','YYYY-MM-DD HH24:MI:SS'),100,200694,'MFALoginSetPreferred','D','88658383-0553-4b30-9f2d-29e392355049') +; + +-- May 30, 2021, 2:45:29 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','Validation Code',0,0,'Y',TO_DATE('2021-05-30 14:45:29','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:29','YYYY-MM-DD HH24:MI:SS'),100,200695,'MFALoginValidationCode','D','c6d302d0-ac83-4d63-8b7b-f4b2da50dcbd') +; + +-- May 30, 2021, 2:45:29 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','Multi-Factor Authentication',0,0,'Y',TO_DATE('2021-05-30 14:45:29','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:29','YYYY-MM-DD HH24:MI:SS'),100,200696,'MFALoginValidationHeader','D','11681326-f0c2-405b-9b81-ba79b4616565') +; + +-- May 30, 2021, 2:45:30 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('E','The user has a valid mechanism already registered for this method',0,0,'Y',TO_DATE('2021-05-30 14:45:29','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:29','YYYY-MM-DD HH24:MI:SS'),100,200697,'MFAMethodAlreadyRegistered','D','5d128030-9924-49c6-8ad0-005643440b59') +; + +-- May 30, 2021, 2:45:30 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('E','There was an error contacting the NTP server',0,0,'Y',TO_DATE('2021-05-30 14:45:30','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:30','YYYY-MM-DD HH24:MI:SS'),100,200698,'MFANTPServerError','D','bec57e99-cd5b-47bd-a6e0-03b0ff092b2e') +; + +-- May 30, 2021, 2:45:30 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('E','There was a problem trying to send the EMail, please contact support.',0,0,'Y',TO_DATE('2021-05-30 14:45:30','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:30','YYYY-MM-DD HH24:MI:SS'),100,200699,'MFAProblemSendingEMail','D','29523709-e005-4bab-98fc-b7fe065bac9f') +; + +-- May 30, 2021, 2:45:31 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('E','The MFA registration was already completed',0,0,'Y',TO_DATE('2021-05-30 14:45:30','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:30','YYYY-MM-DD HH24:MI:SS'),100,200700,'MFARegistrationAlreadyValid','D','70cc56f5-a381-4a62-9d14-c780d3861f5d') +; + +-- May 30, 2021, 2:45:31 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','The MFA registration was completed successfully',0,0,'Y',TO_DATE('2021-05-30 14:45:31','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:31','YYYY-MM-DD HH24:MI:SS'),100,200701,'MFARegistrationCompleted','D','bb76e61e-96de-4247-b300-3e52a005b90c') +; + +-- May 30, 2021, 2:45:31 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('E','The registration expired, please register again',0,0,'Y',TO_DATE('2021-05-30 14:45:31','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:31','YYYY-MM-DD HH24:MI:SS'),100,200702,'MFARegistrationExpired','D','127c4a80-d80b-4fcc-ae7f-1d1844996798') +; + +-- May 30, 2021, 2:45:32 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','Enter the validation code generated by your TOTP application',0,0,'Y',TO_DATE('2021-05-30 14:45:31','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:31','YYYY-MM-DD HH24:MI:SS'),100,200703,'MFATOTPEnterValidationCode','D','b059e87e-fe07-40c2-8f27-f5463c6d5e15') +; + +-- May 30, 2021, 2:45:32 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('E','There was an error generating the QR Code',0,0,'Y',TO_DATE('2021-05-30 14:45:32','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:32','YYYY-MM-DD HH24:MI:SS'),100,200704,'MFATOTPErrorGeneratingQR','D','09b7504e-f371-4435-ae64-e6207f5db9d8') +; + +-- May 30, 2021, 2:45:32 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','Barcode:',0,0,'Y',TO_DATE('2021-05-30 14:45:32','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:32','YYYY-MM-DD HH24:MI:SS'),100,200705,'MFATOTPImage','D','11b238ff-0b52-4f9a-beab-beefa94374cc') +; + +-- May 30, 2021, 2:45:33 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('E','Wrong TOTP configuration, issuer required',0,0,'Y',TO_DATE('2021-05-30 14:45:32','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:32','YYYY-MM-DD HH24:MI:SS'),100,200706,'MFATOTPIssuerRequired','D','ec8ef5c1-0680-42e5-aef4-82a3c40c9f0e') +; + +-- May 30, 2021, 2:45:33 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','The TOTP mechanism was successfully registered, you can scan the barcode for the registration process, or manually enter the secret code in your TOTP application to register it',0,0,'Y',TO_DATE('2021-05-30 14:45:33','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:33','YYYY-MM-DD HH24:MI:SS'),100,200707,'MFATOTPRegistered','D','56d95714-9355-4d2d-a36c-d572f53f11f7') +; + +-- May 30, 2021, 2:45:33 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','Secret:',0,0,'Y',TO_DATE('2021-05-30 14:45:33','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:33','YYYY-MM-DD HH24:MI:SS'),100,200708,'MFATOTPSecret','D','fa6009c5-89d9-47f1-9b5e-5948ae71d8b7') +; + +-- May 30, 2021, 2:45:34 PM CEST +INSERT INTO R_MailText (R_MailText_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,IsHtml,MailHeader,MailText,R_MailText_UU) VALUES (200001,0,0,'Y',TO_DATE('2021-05-30 14:45:33','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:33','YYYY-MM-DD HH24:MI:SS'),100,'MFA Validation Code','Y','MFA Validation Code for iDempiere','

Hello @Name@,

+ +

The validation code for multi-factor authentication on iDempiere is: @MFASecret@

+ +

This validation code expires in @MFA_Method_ID@ minutes.

','e49493ce-1e00-4d65-a537-bc962e419bbc') +; + +-- May 30, 2021, 2:45:34 PM CEST +INSERT INTO AD_SysConfig (AD_SysConfig_ID,AD_Client_ID,AD_Org_ID,Created,Updated,CreatedBy,UpdatedBy,IsActive,Name,Value,Description,EntityType,ConfigurationLevel,AD_SysConfig_UU) VALUES (200174,0,0,TO_DATE('2021-05-30 14:45:34','YYYY-MM-DD HH24:MI:SS'),TO_DATE('2021-05-30 14:45:34','YYYY-MM-DD HH24:MI:SS'),100,100,'Y','MFA_REGISTERED_DEVICE_EXPIRATION_DAYS','30','Days of expiration for a registered device - if zero then registering device is not allowed','D','C','a93e2d8c-c09f-4b99-b0ff-d57420d922a0') +; + +-- May 30, 2021, 2:45:34 PM CEST +INSERT INTO AD_Menu (AD_Menu_ID,Name,Description,Action,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsSummary,AD_Process_ID,IsSOTrx,IsReadOnly,EntityType,IsCentrallyMaintained,AD_Menu_UU) VALUES (200185,'Unregister MFA Mechanism','Unregister a multi-factor authentication registration','P',0,0,'Y',TO_DATE('2021-05-30 14:45:34','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:34','YYYY-MM-DD HH24:MI:SS'),100,'N',200129,'Y','N','D','Y','abfd0551-f6e6-42a9-842f-df58039cc942') +; + +-- May 30, 2021, 2:45:34 PM CEST +INSERT INTO AD_TREENODEMM(AD_Client_ID, AD_Org_ID, CreatedBy, UpdatedBy, Parent_ID, SeqNo, AD_Tree_ID, Node_ID)VALUES(0, 0, 0, 0, 200184,8, 10, 200185) +; + +-- May 30, 2021, 2:45:35 PM CEST +INSERT INTO AD_Menu (AD_Menu_ID,Name,Description,Action,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsSummary,AD_Process_ID,IsSOTrx,IsReadOnly,EntityType,IsCentrallyMaintained,AD_Menu_UU) VALUES (200186,'Complete MFA Registration','Complete a registration for a multi-factor authentication mechanism','P',0,0,'Y',TO_DATE('2021-05-30 14:45:34','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:34','YYYY-MM-DD HH24:MI:SS'),100,'N',200130,'Y','N','D','Y','944b0ed7-5760-4d8b-8c32-02c0247e4dba') +; + +-- May 30, 2021, 2:45:35 PM CEST +INSERT INTO AD_TREENODEMM(AD_Client_ID, AD_Org_ID, CreatedBy, UpdatedBy, Parent_ID, SeqNo, AD_Tree_ID, Node_ID)VALUES(0, 0, 0, 0, 200184,6, 10, 200186) +; + +-- May 30, 2021, 2:45:35 PM CEST +INSERT INTO AD_Menu (AD_Menu_ID,Name,Description,Action,AD_Window_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsSummary,IsSOTrx,IsReadOnly,EntityType,IsCentrallyMaintained,AD_Menu_UU) VALUES (200187,'MFA Method','Multi-factor Authentication Method','W',200114,0,0,'Y',TO_DATE('2021-05-30 14:45:35','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:35','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','N','D','Y','37259222-7dbd-4127-a38e-0ff06edb133b') +; + +-- May 30, 2021, 2:45:35 PM CEST +INSERT INTO AD_TREENODEMM(AD_Client_ID, AD_Org_ID, CreatedBy, UpdatedBy, Parent_ID, SeqNo, AD_Tree_ID, Node_ID)VALUES(0, 0, 0, 0, 200184,0, 10, 200187) +; + +-- May 30, 2021, 2:45:35 PM CEST +INSERT INTO AD_Menu (AD_Menu_ID,Name,Description,Action,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsSummary,AD_Process_ID,IsSOTrx,IsReadOnly,EntityType,IsCentrallyMaintained,AD_Menu_UU) VALUES (200188,'Revoke MFA Trusted Device','Revoke one multi-factor authentication trusted device or all','P',0,0,'Y',TO_DATE('2021-05-30 14:45:35','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:35','YYYY-MM-DD HH24:MI:SS'),100,'N',200131,'Y','N','D','Y','37af83e2-d444-4e79-aa20-dd9d24884cbe') +; + +-- May 30, 2021, 2:45:35 PM CEST +INSERT INTO AD_TREENODEMM(AD_Client_ID, AD_Org_ID, CreatedBy, UpdatedBy, Parent_ID, SeqNo, AD_Tree_ID, Node_ID)VALUES(0, 0, 0, 0, 200184,9, 10, 200188) +; + +-- May 30, 2021, 2:45:36 PM CEST +INSERT INTO AD_Menu (AD_Menu_ID,Name,Description,Action,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsSummary,AD_Process_ID,IsSOTrx,IsReadOnly,EntityType,IsCentrallyMaintained,AD_Menu_UU) VALUES (200189,'Register MFA','Register a multi-factor authentication mechanism','P',0,0,'Y',TO_DATE('2021-05-30 14:45:35','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:35','YYYY-MM-DD HH24:MI:SS'),100,'N',200132,'Y','N','D','Y','4578e2a5-d26d-4548-8879-dd09f7a1abeb') +; + +-- May 30, 2021, 2:45:36 PM CEST +INSERT INTO AD_TREENODEMM(AD_Client_ID, AD_Org_ID, CreatedBy, UpdatedBy, Parent_ID, SeqNo, AD_Tree_ID, Node_ID)VALUES(0, 0, 0, 0, 200184,5, 10, 200189) +; + +-- May 30, 2021, 2:45:36 PM CEST +INSERT INTO AD_Menu (AD_Menu_ID,Name,Action,AD_Window_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsSummary,IsSOTrx,IsReadOnly,EntityType,IsCentrallyMaintained,AD_Menu_UU) VALUES (200190,'MFA Registered Device','W',200115,0,0,'Y',TO_DATE('2021-05-30 14:45:36','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:36','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','N','D','Y','7305e121-e83b-4f4a-9e8b-f6a404c741ed') +; + +-- May 30, 2021, 2:45:36 PM CEST +INSERT INTO AD_TREENODEMM(AD_Client_ID, AD_Org_ID, CreatedBy, UpdatedBy, Parent_ID, SeqNo, AD_Tree_ID, Node_ID)VALUES(0, 0, 0, 0, 200184,3, 10, 200190) +; + +-- May 30, 2021, 2:45:36 PM CEST +INSERT INTO AD_Menu (AD_Menu_ID,Name,Action,AD_Window_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsSummary,IsSOTrx,IsReadOnly,EntityType,IsCentrallyMaintained,AD_Menu_UU) VALUES (200191,'MFA Registration','W',200116,0,0,'Y',TO_DATE('2021-05-30 14:45:36','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:36','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','N','D','Y','bf1107dc-629b-4b0e-b30e-88ce65d302de') +; + +-- May 30, 2021, 2:45:36 PM CEST +INSERT INTO AD_TREENODEMM(AD_Client_ID, AD_Org_ID, CreatedBy, UpdatedBy, Parent_ID, SeqNo, AD_Tree_ID, Node_ID)VALUES(0, 0, 0, 0, 200184,2, 10, 200191) +; + +-- May 30, 2021, 2:45:37 PM CEST +INSERT INTO AD_Menu (AD_Menu_ID,Name,Description,Action,AD_Window_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsSummary,IsSOTrx,IsReadOnly,EntityType,IsCentrallyMaintained,AD_Menu_UU) VALUES (200192,'MFA Rule','Multi-factor Authentication Rule','W',200117,0,0,'Y',TO_DATE('2021-05-30 14:45:36','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-05-30 14:45:36','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','N','D','Y','467583a6-b278-445e-b684-a0278f7f6b91') +; + +-- May 30, 2021, 2:45:37 PM CEST +INSERT INTO AD_TREENODEMM(AD_Client_ID, AD_Org_ID, CreatedBy, UpdatedBy, Parent_ID, SeqNo, AD_Tree_ID, Node_ID)VALUES(0, 0, 0, 0, 200184,1, 10, 200192) +; + +-- May 30, 2021, 2:45:37 PM CEST +ALTER TABLE MFA_Method ADD CONSTRAINT RMailText_MFAMethod FOREIGN KEY (R_MailText_ID) REFERENCES r_mailtext(r_mailtext_id) DEFERRABLE INITIALLY DEFERRED +; + +-- May 30, 2021, 2:45:37 PM CEST +ALTER TABLE MFA_Method ADD CONSTRAINT MFAElementPrm_MFAMethod FOREIGN KEY (MFA_ElementPrm_ID) REFERENCES ad_element(ad_element_id) DEFERRABLE INITIALLY DEFERRED +; + +-- May 30, 2021, 2:45:37 PM CEST +ALTER TABLE MFA_RegisteredDevice ADD CONSTRAINT ADUser_MFARegisteredDevice FOREIGN KEY (AD_User_ID) REFERENCES ad_user(ad_user_id) DEFERRABLE INITIALLY DEFERRED +; + +-- May 30, 2021, 2:45:37 PM CEST +ALTER TABLE MFA_Registration ADD CONSTRAINT MFAMethod_MFARegistration FOREIGN KEY (MFA_Method_ID) REFERENCES mfa_method(mfa_method_id) DEFERRABLE INITIALLY DEFERRED +; + +-- May 30, 2021, 2:45:37 PM CEST +ALTER TABLE MFA_Registration ADD CONSTRAINT ADUser_MFARegistration FOREIGN KEY (AD_User_ID) REFERENCES ad_user(ad_user_id) DEFERRABLE INITIALLY DEFERRED +; + +-- May 30, 2021, 2:45:37 PM CEST +ALTER TABLE MFA_Rule ADD CONSTRAINT MFAMethod_MFARule FOREIGN KEY (MFA_Method_ID) REFERENCES mfa_method(mfa_method_id) DEFERRABLE INITIALLY DEFERRED +; + +-- May 30, 2021, 2:46:41 PM CEST +INSERT INTO MFA_Method (MFA_Method_ID,AD_Client_ID,AD_Org_ID,Created,CreatedBy,IsActive,MFA_Method_UU,Name,Updated,UpdatedBy,Method,MFAType,MFAIssuer,ExpireInMinutes,MFA_ElementPrm_ID) VALUES (200000,0,0,TO_DATE('2021-05-30 14:46:40','YYYY-MM-DD HH24:MI:SS'),100,'Y','9a3b4d6e-0c31-4a06-9f05-54a0227bdd66','TOTP',TO_DATE('2021-05-30 14:46:40','YYYY-MM-DD HH24:MI:SS'),100,'TOTP','H','iDempiere ERP',60,469) +; + +-- May 30, 2021, 2:46:41 PM CEST +INSERT INTO MFA_Method (MFA_Method_ID,AD_Client_ID,AD_Org_ID,Created,CreatedBy,IsActive,MFA_Method_UU,Name,Updated,UpdatedBy,Method,MFAType,ExpireInMinutes,R_MailText_ID,MFA_ElementPrm_ID) VALUES (200001,0,0,TO_DATE('2021-05-30 14:46:41','YYYY-MM-DD HH24:MI:SS'),100,'Y','6773bdd1-496f-49af-ad57-9fb077bb9de9','EMail',TO_DATE('2021-05-30 14:46:41','YYYY-MM-DD HH24:MI:SS'),100,'EMail','H',15,200001,881) +; + +-- May 30, 2021, 2:46:41 PM CEST +INSERT INTO MFA_Rule (MFA_Rule_ID,AD_Client_ID,AD_Org_ID,Created,CreatedBy,IsActive,MFA_Rule_UU,Updated,UpdatedBy,MFA_Method_ID) VALUES (200000,0,0,TO_DATE('2021-05-30 14:46:41','YYYY-MM-DD HH24:MI:SS'),100,'Y','2c0c1a47-398d-4e25-9d8c-d13296e5703e',TO_DATE('2021-05-30 14:46:41','YYYY-MM-DD HH24:MI:SS'),100,200000) +; + +-- May 30, 2021, 2:46:42 PM CEST +INSERT INTO MFA_Rule (MFA_Rule_ID,AD_Client_ID,AD_Org_ID,Created,CreatedBy,IsActive,MFA_Rule_UU,Updated,UpdatedBy,MFA_Method_ID) VALUES (200001,0,0,TO_DATE('2021-05-30 14:46:41','YYYY-MM-DD HH24:MI:SS'),100,'Y','ac727f25-ca8c-4de9-a2e7-934ee9b4569d',TO_DATE('2021-05-30 14:46:41','YYYY-MM-DD HH24:MI:SS'),100,200001) +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=0, SeqNo=0, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=218 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=0, SeqNo=1, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=153 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=0, SeqNo=2, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=263 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=0, SeqNo=3, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=166 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=0, SeqNo=4, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=203 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=0, SeqNo=5, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=53242 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=0, SeqNo=6, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=236 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=0, SeqNo=7, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=183 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=0, SeqNo=8, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=160 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=0, SeqNo=9, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=278 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=0, SeqNo=10, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=345 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=0, SeqNo=11, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=53296 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=0, SeqNo=12, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=53014 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=0, SeqNo=13, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=53108 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=0, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=161 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=1, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=367 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=2, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=456 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=3, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=501 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=4, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=326 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=5, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=566 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=6, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=392 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=7, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=200178 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=8, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=200184 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=9, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=113 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=10, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=220 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=11, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=351 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=12, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=289 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=13, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=302 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=14, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=200168 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=15, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=200169 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=16, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=303 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=17, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=200047 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=18, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=200048 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=19, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=321 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=20, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=461 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=21, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=53193 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=22, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=200161 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=23, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=53322 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=24, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=383 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=25, Updated=getDate() WHERE AD_Tree_ID=10 AND Node_ID=200177 +; + +-- Jun 1, 2021, 1:02:42 AM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','Register this device for {0} days',0,0,'Y',TO_DATE('2021-06-01 01:02:42','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-06-01 01:02:42','YYYY-MM-DD HH24:MI:SS'),100,200709,'MFALoginRegisterDevice','D','0c9b5463-497b-4cd4-b4f0-932fc07c920d') +; + +-- Jun 1, 2021, 1:11:52 AM CEST +INSERT INTO AD_Val_Rule (AD_Val_Rule_ID,Name,Type,Code,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Val_Rule_UU) VALUES (200150,'MFA_RegisteredDevice - not expired','S','MFA_RegisteredDevice.AD_User_ID=@#AD_User_ID@ AND MFA_RegisteredDevice.Expiration>SYSDATE',0,0,'Y',TO_DATE('2021-06-01 01:11:52','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-06-01 01:11:52','YYYY-MM-DD HH24:MI:SS'),100,'D','a3f149eb-b40f-4479-aa8e-34c4ba25ca46') +; + +-- Jun 1, 2021, 1:11:59 AM CEST +UPDATE AD_Process_Para SET AD_Val_Rule_ID=200150,Updated=TO_DATE('2021-06-01 01:11:59','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_Para_ID=200349 +; + +-- Jun 1, 2021, 1:13:06 AM CEST +UPDATE AD_Val_Rule SET Name='MFA_Registration - Pending to Complete from User', Code='MFA_Registration.IsValid=''N'' AND MFA_Registration.IsActive=''Y'' AND MFA_Registration.AD_User_ID=@#AD_User_ID@',Updated=TO_DATE('2021-06-01 01:13:06','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Val_Rule_ID=200149 +; + +-- Jun 1, 2021, 1:13:16 AM CEST +UPDATE AD_Val_Rule SET Name='MFA_RegisteredDevice - not expired from User',Updated=TO_DATE('2021-06-01 01:13:16','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Val_Rule_ID=200150 +; + +-- Jun 4, 2021, 1:01:16 PM CEST +UPDATE AD_Message SET MsgText=' +',Updated=TO_DATE('2021-06-04 13:01:16','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Message_ID=200707 +; + +-- Jun 4, 2021, 1:27:06 PM CEST +UPDATE AD_Message SET MsgText='Register this device for {0,choice,1#1 day|1<{0} days}',Updated=TO_DATE('2021-06-04 13:27:06','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Message_ID=200709 +; + +-- Jun 4, 2021, 1:33:09 PM CEST +INSERT INTO AD_Form (AD_Form_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,Classname,AccessLevel,EntityType,IsBetaFunctionality,AD_Form_UU) VALUES (200017,0,0,'Y',TO_DATE('2021-06-04 13:33:08','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-06-04 13:33:08','YYYY-MM-DD HH24:MI:SS'),100,'Register MFA','org.adempiere.webui.apps.form.MFARegister','7','D','N','225070fb-7912-4873-b9aa-785e377c9980') +; + +-- Jun 4, 2021, 1:34:46 PM CEST +UPDATE AD_Form SET Description='Register a multi-factor authentication mechanism',Updated=TO_DATE('2021-06-04 13:34:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Form_ID=200017 +; + +-- Jun 4, 2021, 5:42:58 PM CEST +UPDATE AD_Process SET Classname='org.compiere.process.MFACompleteRegistration',Updated=TO_DATE('2021-06-04 17:42:58','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_ID=200130 +; + +-- Jun 4, 2021, 5:43:05 PM CEST +UPDATE AD_Process SET Classname='org.compiere.process.MFARegister',Updated=TO_DATE('2021-06-04 17:43:05','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_ID=200132 +; + +-- Jun 4, 2021, 5:43:10 PM CEST +UPDATE AD_Process SET Classname='org.compiere.process.MFARevokeDevice',Updated=TO_DATE('2021-06-04 17:43:10','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_ID=200131 +; + +-- Jun 4, 2021, 5:43:15 PM CEST +UPDATE AD_Process SET Classname='org.compiere.process.MFAUnregister',Updated=TO_DATE('2021-06-04 17:43:15','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_ID=200129 +; + +-- Jun 4, 2021, 6:15:23 PM CEST +UPDATE AD_Form SET Classname='org.adempiere.webui.apps.form.MFARegisterForm',Updated=TO_DATE('2021-06-04 18:15:23','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Form_ID=200017 +; + +-- Jun 5, 2021, 11:11:16 AM CEST +UPDATE MFA_Method SET Name='TOTP (Google Auth, Authy, etc)',Updated=TO_DATE('2021-06-05 11:11:16','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE MFA_Method_ID=200000 +; + +-- Jun 5, 2021, 11:31:46 AM CEST +UPDATE AD_Column SET SeqNo=3,Updated=TO_DATE('2021-06-05 11:31:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=214468 +; + +-- Jun 5, 2021, 11:31:49 AM CEST +UPDATE AD_Column SET SeqNo=2,Updated=TO_DATE('2021-06-05 11:31:49','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=214474 +; + +-- Jun 5, 2021, 11:31:53 AM CEST +UPDATE AD_Column SET SeqNo=1,Updated=TO_DATE('2021-06-05 11:31:53','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=214468 +; + +SELECT register_migration_script('202105301448_IDEMPIERE-4782.sql') FROM dual +; + diff --git a/migration/i8.2/postgresql/202105301448_IDEMPIERE-4782.sql b/migration/i8.2/postgresql/202105301448_IDEMPIERE-4782.sql new file mode 100644 index 0000000000..41ad8bf6d4 --- /dev/null +++ b/migration/i8.2/postgresql/202105301448_IDEMPIERE-4782.sql @@ -0,0 +1,1493 @@ +-- IDEMPIERE-4782 Multi-factor authentication (FHCA-2034) +-- May 30, 2021, 2:44:22 PM CEST +INSERT INTO AD_Menu (AD_Menu_ID,Name,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsSummary,IsSOTrx,IsReadOnly,EntityType,IsCentrallyMaintained,AD_Menu_UU) VALUES (200184,'Multi Factor Authentication',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:21','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:21','YYYY-MM-DD HH24:MI:SS'),100,'Y','Y','N','D','N','c40cde28-5062-4990-89e1-187e9991ee68') +; + +-- May 30, 2021, 2:44:22 PM CEST +INSERT INTO AD_TREENODEMM(AD_Client_ID, AD_Org_ID, CreatedBy, UpdatedBy, Parent_ID, SeqNo, AD_Tree_ID, Node_ID)VALUES(0, 0, 0, 0, 0,15, 10, 200184) +; + +-- May 30, 2021, 2:44:22 PM CEST +INSERT INTO AD_Process (AD_Process_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,Description,IsReport,Value,IsDirectPrint,Classname,AccessLevel,EntityType,Statistic_Count,Statistic_Seconds,IsBetaFunctionality,ShowHelp,CopyFromProcess,AD_Process_UU,AllowMultipleExecution) VALUES (200129,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:22','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:22','YYYY-MM-DD HH24:MI:SS'),100,'Unregister MFA Mechanism','Unregister a multi-factor authentication registration','N','MFAUnregister','N','org.idempiere.process.MFAUnregister','7','D',0,0,'N','Y','N','69f1a324-48dd-46be-ba96-0a6a7606dd4d','P') +; + +-- May 30, 2021, 2:44:23 PM CEST +INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,PrintName,EntityType,AD_Element_UU) VALUES (203487,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:22','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:22','YYYY-MM-DD HH24:MI:SS'),100,'MFA_Registration_ID','MFA Registration','MFA Registration','D','828f84d2-2a9c-4002-bd8e-9b447181699f') +; + +-- May 30, 2021, 2:44:23 PM CEST +INSERT INTO AD_Process_Para (AD_Process_Para_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,AD_Process_ID,SeqNo,AD_Reference_ID,IsRange,FieldLength,IsMandatory,ColumnName,IsCentrallyMaintained,EntityType,AD_Element_ID,AD_Process_Para_UU,IsEncrypted,IsAutocomplete) VALUES (200343,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:23','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:23','YYYY-MM-DD HH24:MI:SS'),100,'MFA Registration',200129,10,19,'N',22,'Y','MFA_Registration_ID','Y','D',203487,'48527fb9-5623-4dc2-9383-e29f22e5e709','N','N') +; + +-- May 30, 2021, 2:44:23 PM CEST +INSERT INTO AD_Process (AD_Process_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,Description,IsReport,Value,IsDirectPrint,Classname,AccessLevel,EntityType,Statistic_Count,Statistic_Seconds,IsBetaFunctionality,ShowHelp,CopyFromProcess,AD_Process_UU,AllowMultipleExecution) VALUES (200130,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:23','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:23','YYYY-MM-DD HH24:MI:SS'),100,'Complete MFA Registration','Complete a registration for a multi-factor authentication mechanism','N','MFACompleteRegistration','N','org.idempiere.process.MFACompleteRegistration','7','D',15,101,'N','Y','N','8f788304-5bcb-4a5d-af28-11b56923995b','P') +; + +-- May 30, 2021, 2:44:24 PM CEST +INSERT INTO AD_Val_Rule (AD_Val_Rule_ID,Name,Type,Code,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Val_Rule_UU) VALUES (200149,'MFA_Registration - Pending to Complete','S','MFA_Registration.IsValid=''N'' AND MFA_Registration.IsActive=''Y''',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:23','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:23','YYYY-MM-DD HH24:MI:SS'),100,'D','195ee644-3a97-4f53-a903-117a3975ea61') +; + +-- May 30, 2021, 2:44:24 PM CEST +INSERT INTO AD_Process_Para (AD_Process_Para_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,AD_Process_ID,SeqNo,AD_Reference_ID,IsRange,AD_Val_Rule_ID,FieldLength,IsMandatory,ColumnName,IsCentrallyMaintained,EntityType,AD_Element_ID,AD_Process_Para_UU,IsEncrypted,IsAutocomplete) VALUES (200344,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:24','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:24','YYYY-MM-DD HH24:MI:SS'),100,'MFA Registration',200130,10,18,'N',200149,22,'Y','MFA_Registration_ID','Y','D',203487,'60c97d2a-d429-4272-a218-c5dc33bb6200','N','N') +; + +-- May 30, 2021, 2:44:24 PM CEST +INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,PrintName,EntityType,AD_Element_UU) VALUES (203488,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:24','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:24','YYYY-MM-DD HH24:MI:SS'),100,'MFAValidationCode','Validation Code','Validation Code','D','7e4caab2-1095-4996-8d00-e5fa7e7917c5') +; + +-- May 30, 2021, 2:44:25 PM CEST +INSERT INTO AD_Process_Para (AD_Process_Para_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,AD_Process_ID,SeqNo,AD_Reference_ID,IsRange,FieldLength,IsMandatory,ColumnName,IsCentrallyMaintained,EntityType,AD_Element_ID,AD_Process_Para_UU,IsEncrypted,IsAutocomplete) VALUES (200345,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:24','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:24','YYYY-MM-DD HH24:MI:SS'),100,'Validation Code',200130,20,10,'N',2000,'Y','MFAValidationCode','Y','D',203488,'b4242496-e7b5-4806-98da-e27861884487','N','N') +; + +-- May 30, 2021, 2:44:25 PM CEST +INSERT INTO AD_Process_Para (AD_Process_Para_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,Description,Help,AD_Process_ID,SeqNo,AD_Reference_ID,IsRange,FieldLength,IsMandatory,ColumnName,IsCentrallyMaintained,EntityType,AD_Element_ID,AD_Process_Para_UU,IsEncrypted,IsAutocomplete) VALUES (200346,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:25','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:25','YYYY-MM-DD HH24:MI:SS'),100,'Name','Alphanumeric identifier of the entity','The name of an entity (record) is used as an default search option in addition to the search key. The name is up to 60 characters in length.',200130,30,10,'N',60,'N','Name','Y','D',469,'40f4aaf0-4315-4d49-b7b2-65dc50aaa65d','N','N') +; + +-- May 30, 2021, 2:44:25 PM CEST +INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,PrintName,EntityType,AD_Element_UU) VALUES (203489,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:25','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:25','YYYY-MM-DD HH24:MI:SS'),100,'IsUserMFAPreferred','Preferred','Preferred','D','aa3d11ca-e0bf-4e0d-985c-ebba224c048c') +; + +-- May 30, 2021, 2:44:26 PM CEST +INSERT INTO AD_Process_Para (AD_Process_Para_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,AD_Process_ID,SeqNo,AD_Reference_ID,IsRange,FieldLength,IsMandatory,DefaultValue,ColumnName,IsCentrallyMaintained,EntityType,AD_Element_ID,AD_Process_Para_UU,IsEncrypted,IsAutocomplete) VALUES (200347,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:25','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:25','YYYY-MM-DD HH24:MI:SS'),100,'Preferred',200130,40,20,'N',1,'Y','N','IsUserMFAPreferred','Y','D',203489,'583697b4-1448-414d-bfd8-c1ce9aef65d7','N','N') +; + +-- May 30, 2021, 2:44:26 PM CEST +INSERT INTO AD_Window (AD_Window_ID,Name,Description,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,WindowType,Processing,EntityType,IsSOTrx,IsDefault,IsBetaFunctionality,AD_Window_UU) VALUES (200114,'MFA Method','Multi-factor Authentication Method',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:26','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:26','YYYY-MM-DD HH24:MI:SS'),100,'M','N','D','Y','N','N','a23a7b83-7c8f-4fdd-8417-17cb06d078f1') +; + +-- May 30, 2021, 2:44:26 PM CEST +INSERT INTO AD_Table (AD_Table_ID,Name,Description,AD_Window_ID,TableName,LoadSeq,AccessLevel,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsSecurityEnabled,IsDeleteable,IsHighVolume,IsView,EntityType,ImportTable,IsChangeLog,ReplicationType,CopyColumnsFromTable,IsCentrallyMaintained,AD_Table_UU,Processing,DatabaseViewDrop,CopyComponentsFromView,CreateWindowFromTable) VALUES (200273,'MFA Method','Multi-factor Authentication Method',200114,'MFA_Method',0,'4',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:26','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:26','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','N','N','D','N','Y','L','N','Y','52a472cb-eb8a-4a3e-a0f4-5631a0e564c2','N','N','N','N') +; + +-- May 30, 2021, 2:44:27 PM CEST +INSERT INTO AD_Sequence (Name,CurrentNext,IsAudited,StartNewYear,Description,IsActive,IsTableID,AD_Client_ID,AD_Org_ID,Created,CreatedBy,Updated,UpdatedBy,AD_Sequence_ID,IsAutoSequence,StartNo,IncrementNo,CurrentNextSys,AD_Sequence_UU) VALUES ('MFA_Method',1000000,'N','N','Table MFA_Method','Y','Y',0,0,TO_TIMESTAMP('2021-05-30 14:44:27','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:27','YYYY-MM-DD HH24:MI:SS'),100,200342,'Y',1000000,1,200000,'d2bc703d-8b95-4e07-bd97-166f4b33ac84') +; + +-- May 30, 2021, 2:44:27 PM CEST +INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,Description,PrintName,EntityType,AD_Element_UU) VALUES (203490,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:27','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:27','YYYY-MM-DD HH24:MI:SS'),100,'MFA_Method_ID','MFA Method','Multi-factor Authentication Method','MFA Method','D','948b99e9-b928-4fca-b57f-660cbd9d9a22') +; + +-- May 30, 2021, 2:44:28 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214429,1,'MFA Method','Multi-factor Authentication Method',200273,'MFA_Method_ID',22,'Y','N','Y','N','N',0,'N',13,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:27','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:27','YYYY-MM-DD HH24:MI:SS'),100,203490,'N','N','D','Y','N','N','Y','d98419f9-35b5-4232-9ef1-3589dab0ed49','N','N','N','N','N') +; + +-- May 30, 2021, 2:44:28 PM CEST +CREATE TABLE MFA_Method (MFA_Method_ID NUMERIC(10) NOT NULL, CONSTRAINT MFA_Method_Key PRIMARY KEY (MFA_Method_ID)) +; + +-- May 30, 2021, 2:44:28 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,AD_Val_Rule_ID,ColumnName,DefaultValue,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214430,1,'Client','Client/Tenant for this installation.','A Client is a company or a legal entity. You cannot share data between Clients. Tenant is a synonym for Client.',200273,129,'AD_Client_ID','@#AD_Client_ID@',22,'N','N','Y','N','N',0,'N',19,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:28','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:28','YYYY-MM-DD HH24:MI:SS'),100,102,'N','N','D','Y','N','N','Y','0af99da2-d540-4b44-8528-c9f319f86dfc','N','N','N','D','N') +; + +-- May 30, 2021, 2:44:28 PM CEST +ALTER TABLE MFA_Method ADD COLUMN AD_Client_ID NUMERIC(10) NOT NULL +; + +-- May 30, 2021, 2:44:28 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,AD_Val_Rule_ID,ColumnName,DefaultValue,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214431,1,'Organization','Organizational entity within client','An organization is a unit of your client or legal entity - examples are store, department. You can share data between organizations.',200273,104,'AD_Org_ID','@#AD_Org_ID@',22,'N','N','Y','N','N',0,'N',19,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:28','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:28','YYYY-MM-DD HH24:MI:SS'),100,113,'N','N','D','Y','N','N','Y','4eaef723-4c38-47b6-a857-0ee776cadb43','N','N','N','D','N') +; + +-- May 30, 2021, 2:44:28 PM CEST +ALTER TABLE MFA_Method ADD COLUMN AD_Org_ID NUMERIC(10) NOT NULL +; + +-- May 30, 2021, 2:44:28 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,DefaultValue,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214432,1,'Created','Date this record was created','The Created field indicates the date that this record was created.',200273,'Created','SYSDATE',7,'N','N','Y','N','N',0,'N',16,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:28','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:28','YYYY-MM-DD HH24:MI:SS'),100,245,'N','N','D','Y','N','N','Y','ade4c655-7810-43b6-827b-f522b0144ac3','N','N','N','N','N') +; + +-- May 30, 2021, 2:44:29 PM CEST +ALTER TABLE MFA_Method ADD COLUMN Created TIMESTAMP DEFAULT statement_timestamp() NOT NULL +; + +-- May 30, 2021, 2:44:29 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Reference_Value_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214433,1,'Created By','User who created this records','The Created By field indicates the user who created this record.',200273,'CreatedBy',22,'N','N','Y','N','N',0,'N',30,110,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:29','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:29','YYYY-MM-DD HH24:MI:SS'),100,246,'N','N','D','Y','N','N','Y','5dd143de-8630-403c-8e59-23af5b48c76c','N','N','N','D','N') +; + +-- May 30, 2021, 2:44:29 PM CEST +ALTER TABLE MFA_Method ADD COLUMN CreatedBy NUMERIC(10) NOT NULL +; + +-- May 30, 2021, 2:44:29 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214434,1,'Description','Optional short description of the record','A description is limited to 255 characters.',200273,'Description',255,'N','N','N','N','N',0,'N',10,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:29','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:29','YYYY-MM-DD HH24:MI:SS'),100,275,'Y','Y','D','Y','N','N','Y','8b767dc0-1c41-40f8-8ccf-7c45f893b06b','Y',10,'N','N','N','N') +; + +-- May 30, 2021, 2:44:29 PM CEST +ALTER TABLE MFA_Method ADD COLUMN Description VARCHAR(255) DEFAULT NULL +; + +-- May 30, 2021, 2:44:30 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214435,1,'Comment/Help','Comment or Hint','The Help field contains a hint, comment or help about the use of this item.',200273,'Help',2000,'N','N','N','N','N',0,'N',14,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:29','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:29','YYYY-MM-DD HH24:MI:SS'),100,326,'Y','N','D','Y','N','N','Y','07e2d516-3c1a-4a72-a6f1-2abaa73151c9','Y','N','N','N','N') +; + +-- May 30, 2021, 2:44:30 PM CEST +ALTER TABLE MFA_Method ADD COLUMN Help VARCHAR(2000) DEFAULT NULL +; + +-- May 30, 2021, 2:44:30 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,DefaultValue,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214436,1,'Active','The record is active in the system','There are two methods of making records unavailable in the system: One is to delete the record, the other is to de-activate the record. A de-activated record is not available for selection, but available for reports. +There are two reasons for de-activating and not deleting records: +(1) The system requires the record for audit purposes. +(2) The record is referenced by other records. E.g., you cannot delete a Business Partner, if there are invoices for this partner record existing. You de-activate the Business Partner and prevent that this record is used for future entries.',200273,'IsActive','Y',1,'N','N','Y','N','N',0,'N',20,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:30','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:30','YYYY-MM-DD HH24:MI:SS'),100,348,'Y','N','D','Y','N','N','Y','fedeb044-8209-44c2-b937-395b8006556f','N','N','N','N','N') +; + +-- May 30, 2021, 2:44:30 PM CEST +ALTER TABLE MFA_Method ADD COLUMN IsActive CHAR(1) DEFAULT 'Y' CHECK (IsActive IN ('Y','N')) NOT NULL +; + +-- May 30, 2021, 2:44:30 PM CEST +INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,PrintName,EntityType,AD_Element_UU) VALUES (203491,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:30','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:30','YYYY-MM-DD HH24:MI:SS'),100,'MFA_Method_UU','MFA_Method_UU','MFA_Method_UU','D','74581244-f581-417e-a0d5-9deb86914bd6') +; + +-- May 30, 2021, 2:44:31 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214437,1.00,'MFA_Method_UU',200273,'MFA_Method_UU',36,'N','N','N','N','N','N',10,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:30','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:30','YYYY-MM-DD HH24:MI:SS'),100,203491,'Y','N','D','Y','N','N','Y','225f76bb-131a-49dc-9e52-cd715cdf3fb7','N','N','N','N','N') +; + +-- May 30, 2021, 2:44:31 PM CEST +ALTER TABLE MFA_Method ADD COLUMN MFA_Method_UU VARCHAR(36) DEFAULT NULL +; + +-- May 30, 2021, 2:44:31 PM CEST +ALTER TABLE MFA_Method ADD CONSTRAINT MFA_Method_UU_idx UNIQUE (MFA_Method_UU) +; + +-- May 30, 2021, 2:44:31 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214438,1,'Name','Alphanumeric identifier of the entity','The name of an entity (record) is used as an default search option in addition to the search key. The name is up to 60 characters in length.',200273,'Name',60,'N','N','Y','N','Y',1,'N',10,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:31','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:31','YYYY-MM-DD HH24:MI:SS'),100,469,'Y','Y','D','Y','N','N','Y','9bd6de21-f93a-468d-a9ec-5e9dec166aa2','Y',20,'N','N','N','N') +; + +-- May 30, 2021, 2:44:31 PM CEST +ALTER TABLE MFA_Method ADD COLUMN Name VARCHAR(60) NOT NULL +; + +-- May 30, 2021, 2:44:31 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,DefaultValue,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214439,1,'Updated','Date this record was updated','The Updated field indicates the date that this record was updated.',200273,'Updated','SYSDATE',7,'N','N','Y','N','N',0,'N',16,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:31','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:31','YYYY-MM-DD HH24:MI:SS'),100,607,'N','N','D','Y','N','N','Y','c239ccb4-c6df-4669-97cd-81c11f4bd4a2','N','N','N','N','N') +; + +-- May 30, 2021, 2:44:31 PM CEST +ALTER TABLE MFA_Method ADD COLUMN Updated TIMESTAMP DEFAULT statement_timestamp() NOT NULL +; + +-- May 30, 2021, 2:44:32 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Reference_Value_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214440,1,'Updated By','User who updated this records','The Updated By field indicates the user who updated this record.',200273,'UpdatedBy',22,'N','N','Y','N','N',0,'N',30,110,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:31','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:31','YYYY-MM-DD HH24:MI:SS'),100,608,'N','N','D','Y','N','N','Y','c77bab50-72c6-4323-9192-18488156171e','N','N','N','D','N') +; + +-- May 30, 2021, 2:44:32 PM CEST +ALTER TABLE MFA_Method ADD COLUMN UpdatedBy NUMERIC(10) NOT NULL +; + +-- May 30, 2021, 2:44:32 PM CEST +INSERT INTO AD_Reference (AD_Reference_ID,Name,ValidationType,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,IsOrderByValue,AD_Reference_UU) VALUES (200187,'MFA_Method','L',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:32','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:32','YYYY-MM-DD HH24:MI:SS'),100,'D','N','6d3d1f40-0e38-4adf-93d6-b1bb2c44e93c') +; + +-- May 30, 2021, 2:44:32 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200507,'Time-Based One-Time Password',200187,'TOTP',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:32','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:32','YYYY-MM-DD HH24:MI:SS'),100,'D','9c6b8ffe-5d00-40d3-a511-d61238602654') +; + +-- May 30, 2021, 2:44:33 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200508,'EMail',200187,'EMail',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:32','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:32','YYYY-MM-DD HH24:MI:SS'),100,'D','45a33854-e3bd-407b-bda5-ff48e58a2eea') +; + +-- May 30, 2021, 2:44:33 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Reference_Value_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214441,0,'Method',200273,'Method',60,'N','N','Y','N','N',0,'N',17,200187,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:33','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:33','YYYY-MM-DD HH24:MI:SS'),100,200239,'Y','N','D','Y','N','N','Y','ed1f244e-22d4-4606-addd-e4855adeb8a7','Y',0,'N','N','N','N') +; + +-- May 30, 2021, 2:44:33 PM CEST +ALTER TABLE MFA_Method ADD COLUMN Method VARCHAR(60) NOT NULL +; + +-- May 30, 2021, 2:44:34 PM CEST +INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,Description,PrintName,EntityType,AD_Element_UU) VALUES (203492,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:33','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:33','YYYY-MM-DD HH24:MI:SS'),100,'MFAType','MFA Type','Multi-factor authentication type (Something you Know/Have/Are, Location)','MFA Type','D','8ac35e88-dfeb-4103-8ea8-f2ae4d7fe3c2') +; + +-- May 30, 2021, 2:44:34 PM CEST +INSERT INTO AD_Reference (AD_Reference_ID,Name,ValidationType,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,IsOrderByValue,AD_Reference_UU) VALUES (200188,'MFAType','L',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:34','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:34','YYYY-MM-DD HH24:MI:SS'),100,'D','N','c1fc1d9c-6b42-45e9-a9d1-67aa9a8e77f1') +; + +-- May 30, 2021, 2:44:34 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200510,'Something you Know',200188,'K',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:34','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:34','YYYY-MM-DD HH24:MI:SS'),100,'D','dad0212a-776c-476f-8ee1-f36d223b9899') +; + +-- May 30, 2021, 2:44:35 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200511,'Something you Have',200188,'H',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:34','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:34','YYYY-MM-DD HH24:MI:SS'),100,'D','e9f47e72-2282-4363-aaf2-5decec4d390b') +; + +-- May 30, 2021, 2:44:35 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200512,'Something you Are (Biometrics)',200188,'A',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:35','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:35','YYYY-MM-DD HH24:MI:SS'),100,'D','032e4006-0523-4f4b-bd01-50345a2476e5') +; + +-- May 30, 2021, 2:44:35 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200513,'Location',200188,'L',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:35','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:35','YYYY-MM-DD HH24:MI:SS'),100,'D','3c49620f-54d9-41cf-94a9-9c951f1ab271') +; + +-- May 30, 2021, 2:44:36 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Reference_Value_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214442,0,'MFA Type','Multi-factor authentication type (Something you Know/Have/Are, Location)',200273,'MFAType',1,'N','N','N','N','N',0,'N',17,200188,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:35','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:35','YYYY-MM-DD HH24:MI:SS'),100,203492,'Y','N','D','Y','N','N','Y','0a1e1c0f-4b22-4638-b03a-82fba98f65f6','Y',0,'N','N','N','N') +; + +-- May 30, 2021, 2:44:36 PM CEST +ALTER TABLE MFA_Method ADD COLUMN MFAType CHAR(1) DEFAULT NULL +; + +-- May 30, 2021, 2:44:36 PM CEST +INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,PrintName,EntityType,AD_Element_UU) VALUES (203493,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:36','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:36','YYYY-MM-DD HH24:MI:SS'),100,'MFAIssuer','Issuer','Issuer','D','4b7bdf09-91b0-4cac-be32-3b2ed8b3124a') +; + +-- May 30, 2021, 2:44:36 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214443,0,'Issuer',200273,'MFAIssuer',2000,'N','N','N','N','N',0,'N',10,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:36','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:36','YYYY-MM-DD HH24:MI:SS'),100,203493,'Y','N','D','Y','N','N','Y','19519991-f0b8-435d-bc36-595265244cbd','Y',0,'N','N','N','N') +; + +-- May 30, 2021, 2:44:36 PM CEST +ALTER TABLE MFA_Method ADD COLUMN MFAIssuer VARCHAR(2000) DEFAULT NULL +; + +-- May 30, 2021, 2:44:37 PM CEST +INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,PrintName,EntityType,AD_Element_UU) VALUES (203494,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:36','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:36','YYYY-MM-DD HH24:MI:SS'),100,'MFAAllowedTimeDiscrepancy','Allowed Time Period Discrepancy','Allowed Time Period Discrepancy','D','5aab867e-1e0c-4e50-93d0-bf3a9a37c5e8') +; + +-- May 30, 2021, 2:44:37 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214444,0,'Allowed Time Period Discrepancy',200273,'MFAAllowedTimeDiscrepancy',14,'N','N','N','N','N',0,'N',11,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:37','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:37','YYYY-MM-DD HH24:MI:SS'),100,203494,'Y','N','D','Y','N','N','Y','64c621a3-580a-4d16-85c6-7429ab6147dd','Y',0,'N','N','N','N') +; + +-- May 30, 2021, 2:44:37 PM CEST +ALTER TABLE MFA_Method ADD COLUMN MFAAllowedTimeDiscrepancy NUMERIC(10) DEFAULT NULL +; + +-- May 30, 2021, 2:44:37 PM CEST +INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,PrintName,EntityType,AD_Element_UU) VALUES (203495,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:37','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:37','YYYY-MM-DD HH24:MI:SS'),100,'MFATimeProvider','Time Provider','Time Provider','D','6e641fb6-95cc-4b6b-b547-45f17ad220af') +; + +-- May 30, 2021, 2:44:38 PM CEST +INSERT INTO AD_Reference (AD_Reference_ID,Name,ValidationType,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,IsOrderByValue,AD_Reference_UU) VALUES (200189,'MFATimeProvider','L',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:37','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:37','YYYY-MM-DD HH24:MI:SS'),100,'D','N','0c6758f4-b113-4ebc-91e9-0de6c565c139') +; + +-- May 30, 2021, 2:44:38 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200514,'System',200189,'S',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:38','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:38','YYYY-MM-DD HH24:MI:SS'),100,'D','bee8e82d-d76d-4c8e-8290-d5a25f59a08f') +; + +-- May 30, 2021, 2:44:38 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200515,'Ntp',200189,'N',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:38','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:38','YYYY-MM-DD HH24:MI:SS'),100,'D','4e72ac53-5c98-44dc-bf2e-72d36c221399') +; + +-- May 30, 2021, 2:44:39 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Reference_Value_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214445,0,'Time Provider',200273,'MFATimeProvider',1,'N','N','N','N','N',0,'N',17,200189,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:38','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:38','YYYY-MM-DD HH24:MI:SS'),100,203495,'Y','N','D','Y','N','N','Y','1294116a-1119-4d76-a543-757d9fb9e902','Y',0,'N','N','N','N') +; + +-- May 30, 2021, 2:44:39 PM CEST +ALTER TABLE MFA_Method ADD COLUMN MFATimeProvider CHAR(1) DEFAULT NULL +; + +-- May 30, 2021, 2:44:39 PM CEST +INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,PrintName,EntityType,AD_Element_UU) VALUES (203496,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:39','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:39','YYYY-MM-DD HH24:MI:SS'),100,'MFATimeServer','Time Server','Time Server','D','15fea993-88bc-4911-af5d-4c5145649a8e') +; + +-- May 30, 2021, 2:44:39 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214446,0,'Time Server',200273,'MFATimeServer',255,'N','N','N','N','N',0,'N',10,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:39','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:39','YYYY-MM-DD HH24:MI:SS'),100,203496,'Y','N','D','Y','N','N','Y','b81a2e75-550a-41d6-a635-94f6890dd50c','Y',0,'N','N','N','N') +; + +-- May 30, 2021, 2:44:39 PM CEST +ALTER TABLE MFA_Method ADD COLUMN MFATimeServer VARCHAR(255) DEFAULT NULL +; + +-- May 30, 2021, 2:44:40 PM CEST +INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,PrintName,EntityType,AD_Element_UU) VALUES (203497,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:39','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:39','YYYY-MM-DD HH24:MI:SS'),100,'ExpireInMinutes','Expire in Minutes','Expire in Minutes','D','e57c156c-7823-4cba-9658-b4ef76f5288f') +; + +-- May 30, 2021, 2:44:40 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,IsHtml) VALUES (214447,0,'Expire in Minutes',200273,'ExpireInMinutes',10,'N','N','N','N','N',0,'N',11,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:40','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:40','YYYY-MM-DD HH24:MI:SS'),100,203497,'Y','N','D','Y','N','N','Y','cb8ddae6-cd0b-41a1-a5d1-cc7f3abed025','Y',0,'N','N','N') +; + +-- May 30, 2021, 2:44:40 PM CEST +ALTER TABLE MFA_Method ADD COLUMN ExpireInMinutes NUMERIC(10) DEFAULT NULL +; + +-- May 30, 2021, 2:44:40 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintName,FKConstraintType,IsHtml) VALUES (214448,0,'Mail Template','Text templates for mailings','The Mail Template indicates the mail template for return messages. Mail text can include variables. The priority of parsing is User/Contact, Business Partner and then the underlying business object (like Request, Dunning, Workflow object).
+So, @Name@ would resolve into the User name (if user is defined defined), then Business Partner name (if business partner is defined) and then the Name of the business object if it has a Name.
+For Multi-Lingual systems, the template is translated based on the Business Partner''s language selection.',200273,'R_MailText_ID',10,'N','N','N','N','N',0,'N',19,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:40','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:40','YYYY-MM-DD HH24:MI:SS'),100,1515,'Y','N','D','Y','N','N','Y','c14d9d08-e4ab-4e94-b89f-4f83e6611abd','Y',0,'N','N','RMailText_MFAMethod','N','N') +; + +-- May 30, 2021, 2:44:40 PM CEST +ALTER TABLE MFA_Method ADD COLUMN R_MailText_ID NUMERIC(10) DEFAULT NULL +; + +-- May 30, 2021, 2:44:41 PM CEST +INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,PrintName,EntityType,AD_Element_UU) VALUES (203498,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:40','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:40','YYYY-MM-DD HH24:MI:SS'),100,'MFA_ElementPrm_ID','Parameter Element','Parameter Element','D','811fb12c-863b-48cd-83bd-e5add686b638') +; + +-- May 30, 2021, 2:44:41 PM CEST +INSERT INTO AD_Reference (AD_Reference_ID,Name,ValidationType,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,IsOrderByValue,AD_Reference_UU) VALUES (200190,'AD_Element','T',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:41','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:41','YYYY-MM-DD HH24:MI:SS'),100,'D','N','3a119c73-263b-4f8b-b45c-33d25562a1d2') +; + +-- May 30, 2021, 2:44:41 PM CEST +INSERT INTO AD_Ref_Table (AD_Reference_ID,AD_Table_ID,AD_Key,AD_Display,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsValueDisplayed,EntityType,AD_Ref_Table_UU) VALUES (200190,276,2594,2603,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:41','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:41','YYYY-MM-DD HH24:MI:SS'),100,'N','D','6463365d-a1b0-47f7-8cf6-553dcc50acc2') +; + +-- May 30, 2021, 2:44:41 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Reference_Value_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintName,FKConstraintType,IsHtml) VALUES (214449,0,'Parameter Element',200273,'MFA_ElementPrm_ID',10,'N','N','N','N','N',0,'N',30,200190,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:41','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:41','YYYY-MM-DD HH24:MI:SS'),100,203498,'Y','N','D','Y','N','N','Y','40200045-c6ad-4658-95f0-9e4de2f78fc2','Y',0,'N','N','MFAElementPrm_MFAMethod','N','N') +; + +-- May 30, 2021, 2:44:42 PM CEST +ALTER TABLE MFA_Method ADD COLUMN MFA_ElementPrm_ID NUMERIC(10) DEFAULT NULL +; + +-- May 30, 2021, 2:44:42 PM CEST +INSERT INTO AD_Tab (AD_Tab_ID,Name,Description,AD_Window_ID,SeqNo,IsSingleRow,AD_Table_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,HasTree,IsInfoTab,IsTranslationTab,IsReadOnly,OrderByClause,Processing,TabLevel,IsSortTab,EntityType,IsInsertRecord,IsAdvancedTab,AD_Tab_UU,TreeDisplayedOn,IsLookupOnlySelection,IsAllowAdvancedLookup,MaxQueryRecords) VALUES (200288,'MFA Method','Multi-factor Authentication Method',200114,10,'Y',200273,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:42','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:42','YYYY-MM-DD HH24:MI:SS'),100,'N','N','N','N','MFA_Method.Name','N',0,'N','D','Y','N','9306f3ac-9af6-4e1e-aeff-a48e90e9301b','B','N','Y',0) +; + +-- May 30, 2021, 2:44:42 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206611,'MFA_Method_UU',200288,214437,'N',36,0,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:42','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:42','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','a8bf5eaa-a374-460f-ab88-0a0106bb0c68','N',1,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:44:43 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206612,'MFA Method','Multi-factor Authentication Method',200288,214429,'N',22,0,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:42','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:42','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','868bed40-7adc-48e0-a2a2-1095fde13fdb','N',1,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:44:43 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206613,'Client','Client/Tenant for this installation.','A Client is a company or a legal entity. You cannot share data between Clients. Tenant is a synonym for Client.',200288,214430,'Y',22,10,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:43','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:43','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','13f7107c-77be-4b5e-8c90-3871f6b019f9','N',1,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:44:43 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsAllowCopy,IsDisplayedGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206614,'Organization','Organizational entity within client','An organization is a unit of your client or legal entity - examples are store, department. You can share data between organizations.',200288,214431,'Y',22,20,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:43','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:43','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','9ffd36e7-096e-4275-bad6-85de7671b77c','Y','N',4,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:44:44 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206615,'Name','Alphanumeric identifier of the entity','The name of an entity (record) is used as an default search option in addition to the search key. The name is up to 60 characters in length.',200288,214438,'Y',60,30,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:43','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:43','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','dee34ab4-1a66-4ea5-991f-7ad8c46170bd','Y',10,1,5,1,'N','N','N','N') +; + +-- May 30, 2021, 2:44:44 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206616,'Description','Optional short description of the record','A description is limited to 255 characters.',200288,214434,'Y',255,40,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:44','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:44','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','1e5db2b3-4703-4b51-a9cf-cdca64392016','Y',20,1,5,1,'N','N','N','N') +; + +-- May 30, 2021, 2:44:44 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206617,'Comment/Help','Comment or Hint','The Help field contains a hint, comment or help about the use of this item.',200288,214435,'Y',2000,50,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:44','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:44','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','d841cff6-25dc-4bab-8ae0-fba6aa6eb067','Y',30,1,5,3,'N','N','N','N') +; + +-- May 30, 2021, 2:44:45 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206618,'Method',200288,214441,'Y',60,60,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:44','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:44','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','514a9741-e739-46b2-ab07-977c81278bb9','Y',40,1,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:44:45 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206619,'MFA Type','Multi-factor authentication type (Something you Know/Have/Are, Location)',200288,214442,'Y',1,70,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:45','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:45','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','18e94064-2604-4fda-b3dd-1c4375d47cc6','Y',50,4,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:44:45 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206620,'Parameter Element',200288,214449,'Y',10,80,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:45','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:45','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','301a64c6-09a9-4f60-8f60-b978f565191f','Y',190,1,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:44:45 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206621,'Expire in Minutes',200288,214447,'Y',10,90,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:45','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:45','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','e778e00d-e130-4b30-ab79-912fa45295bc','Y',170,4,1,1,'N','N','N','N') +; + +-- May 30, 2021, 2:44:46 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206622,'Active','The record is active in the system','There are two methods of making records unavailable in the system: One is to delete the record, the other is to de-activate the record. A de-activated record is not available for selection, but available for reports. +There are two reasons for de-activating and not deleting records: +(1) The system requires the record for audit purposes. +(2) The record is referenced by other records. E.g., you cannot delete a Business Partner, if there are invoices for this partner record existing. You de-activate the Business Partner and prevent that this record is used for future entries.',200288,214436,'Y',1,100,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:45','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:45','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','3126acb5-db24-47cf-b2f7-d3d6e4e45ba0','Y',70,6,1,1,'N','N','N','N') +; + +-- May 30, 2021, 2:44:46 PM CEST +INSERT INTO AD_FieldGroup (AD_FieldGroup_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,EntityType,FieldGroupType,IsCollapsedByDefault,AD_FieldGroup_UU) VALUES (200027,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:46','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:46','YYYY-MM-DD HH24:MI:SS'),100,'EMail','D','C','N','2779dca5-1eb8-421c-a8ff-73fcebaf1324') +; + +-- May 30, 2021, 2:44:47 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,AD_FieldGroup_ID,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206623,'Mail Template','Text templates for mailings','The Mail Template indicates the mail template for return messages. Mail text can include variables. The priority of parsing is User/Contact, Business Partner and then the underlying business object (like Request, Dunning, Workflow object).
+So, @Name@ would resolve into the User name (if user is defined defined), then Business Partner name (if business partner is defined) and then the Name of the business object if it has a Name.
+For Multi-Lingual systems, the template is translated based on the Business Partner''s language selection.',200288,214448,'Y',10,110,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:46','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:46','YYYY-MM-DD HH24:MI:SS'),100,'N','Y',200027,'D','e1785367-c587-443c-bcd5-9e6bbef4b31e','Y',180,1,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:44:47 PM CEST +INSERT INTO AD_FieldGroup (AD_FieldGroup_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,EntityType,FieldGroupType,IsCollapsedByDefault,AD_FieldGroup_UU) VALUES (200028,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:47','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:47','YYYY-MM-DD HH24:MI:SS'),100,'TOTP','D','C','N','659d859f-1cb2-4157-ab2e-eb62fd04c23b') +; + +-- May 30, 2021, 2:44:47 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,AD_FieldGroup_ID,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206624,'Issuer',200288,214443,'Y',2000,120,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:47','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:47','YYYY-MM-DD HH24:MI:SS'),100,'N','Y',200028,'D','5dc13f32-8ca0-4132-a7c9-dec2935dc3dc','Y',80,1,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:44:47 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206625,'Allowed Time Period Discrepancy',200288,214444,'Y',14,130,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:47','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:47','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','f133bfc6-75a8-483f-b99e-9df797f9e26e','Y',130,4,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:44:48 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206626,'Time Provider',200288,214445,'Y',1,150,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:48','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:48','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','050eeafe-e41b-4289-8970-940852612cdc','Y',140,1,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:44:48 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLogic,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206627,'Time Server',200288,214446,'Y','@MFATimeProvider@=N',255,160,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:48','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:48','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','04369763-05e6-4f1a-b20e-39ee9d4b0e60','Y',160,4,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:44:48 PM CEST +INSERT INTO AD_Process (AD_Process_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,Description,IsReport,Value,IsDirectPrint,Classname,AccessLevel,EntityType,Statistic_Count,Statistic_Seconds,IsBetaFunctionality,ShowHelp,CopyFromProcess,AD_Process_UU,AllowMultipleExecution) VALUES (200131,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:48','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:48','YYYY-MM-DD HH24:MI:SS'),100,'Revoke MFA Trusted Device','Revoke one multi-factor authentication trusted device or all','N','MFARevokeDevice','N','org.idempiere.process.MFARevokeDevice','7','D',0,0,'N','Y','N','b009ee88-78dd-4adf-97ff-8847464d0bf7','P') +; + +-- May 30, 2021, 2:44:49 PM CEST +INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,PrintName,EntityType,AD_Element_UU) VALUES (203499,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:48','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:48','YYYY-MM-DD HH24:MI:SS'),100,'MFARevokeAll','Revoke All','Revoke All','D','ade34ca8-4a79-4b67-8d99-c32d5a290def') +; + +-- May 30, 2021, 2:44:49 PM CEST +INSERT INTO AD_Process_Para (AD_Process_Para_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,AD_Process_ID,SeqNo,AD_Reference_ID,IsRange,FieldLength,IsMandatory,DefaultValue,ColumnName,IsCentrallyMaintained,EntityType,AD_Element_ID,AD_Process_Para_UU,IsEncrypted,IsAutocomplete) VALUES (200348,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:49','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:49','YYYY-MM-DD HH24:MI:SS'),100,'Revoke All',200131,10,20,'N',1,'Y','N','MFARevokeAll','Y','D',203499,'162304fb-2d23-4c38-ae15-889ffa0b7ff3','N','N') +; + +-- May 30, 2021, 2:44:49 PM CEST +INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,PrintName,EntityType,AD_Element_UU) VALUES (203500,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:49','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:49','YYYY-MM-DD HH24:MI:SS'),100,'MFA_RegisteredDevice_ID','MFA Registered Device','MFA Registered Device','D','5286209e-eed9-4540-98b9-387819ac63d5') +; + +-- May 30, 2021, 2:44:50 PM CEST +INSERT INTO AD_Process_Para (AD_Process_Para_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,AD_Process_ID,SeqNo,AD_Reference_ID,IsRange,FieldLength,IsMandatory,ColumnName,IsCentrallyMaintained,EntityType,AD_Element_ID,DisplayLogic,AD_Process_Para_UU,IsEncrypted,IsAutocomplete) VALUES (200349,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:49','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:49','YYYY-MM-DD HH24:MI:SS'),100,'MFA Registered Device',200131,20,19,'N',22,'N','MFA_RegisteredDevice_ID','Y','D',203500,'@MFARevokeAll@=N','7ec29817-28a7-4f56-b905-3f2a24384b88','N','N') +; + +-- May 30, 2021, 2:44:50 PM CEST +INSERT INTO AD_Process (AD_Process_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,Description,IsReport,Value,IsDirectPrint,Classname,AccessLevel,EntityType,Statistic_Count,Statistic_Seconds,IsBetaFunctionality,ShowHelp,CopyFromProcess,AD_Process_UU,AllowMultipleExecution) VALUES (200132,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:50','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:50','YYYY-MM-DD HH24:MI:SS'),100,'Register MFA','Register a multi-factor authentication mechanism','N','MFARegister','N','org.idempiere.process.MFARegister','7','D',42,408,'N','Y','N','f8bf7446-35c7-4cea-913f-c41930f7c6fc','P') +; + +-- May 30, 2021, 2:44:50 PM CEST +INSERT INTO AD_Reference (AD_Reference_ID,Name,ValidationType,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,IsOrderByValue,AD_Reference_UU) VALUES (200191,'MFA_Method - on client rule','T',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:50','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:50','YYYY-MM-DD HH24:MI:SS'),100,'D','N','ab76ace8-d950-46d5-a262-d2de59f39d6e') +; + +-- May 30, 2021, 2:44:50 PM CEST +INSERT INTO AD_Ref_Table (AD_Reference_ID,AD_Table_ID,AD_Key,AD_Display,WhereClause,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsValueDisplayed,EntityType,AD_Ref_Table_UU) VALUES (200191,200273,214429,214438,'MFA_Method.MFA_Method_ID IN (SELECT MFA_Method_ID FROM MFA_Rule WHERE IsActive=''Y'' AND AD_Client_ID IN (0,@#AD_Client_ID@))',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:50','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:50','YYYY-MM-DD HH24:MI:SS'),100,'N','D','68ddf06f-e3af-45ed-843a-1a78cec49bb8') +; + +-- May 30, 2021, 2:44:51 PM CEST +INSERT INTO AD_Process_Para (AD_Process_Para_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,Description,AD_Process_ID,SeqNo,AD_Reference_ID,AD_Reference_Value_ID,IsRange,FieldLength,IsMandatory,ColumnName,IsCentrallyMaintained,EntityType,AD_Element_ID,AD_Process_Para_UU,IsEncrypted,IsAutocomplete) VALUES (200350,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:50','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:50','YYYY-MM-DD HH24:MI:SS'),100,'MFA Method','Multi-factor Authentication Method',200132,10,18,200191,'N',22,'Y','MFA_Method_ID','Y','D',203490,'6f3e3d51-51b7-4845-8c33-b7669f32a1eb','N','N') +; + +-- May 30, 2021, 2:44:51 PM CEST +INSERT INTO AD_Process_Para (AD_Process_Para_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,AD_Process_ID,SeqNo,AD_Reference_ID,IsRange,FieldLength,IsMandatory,ColumnName,IsCentrallyMaintained,EntityType,AD_Element_ID,AD_Process_Para_UU,IsEncrypted,IsAutocomplete) VALUES (200351,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:51','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:51','YYYY-MM-DD HH24:MI:SS'),100,'Parameter Value',200132,30,10,'N',2000,'N','ParameterValue','Y','D',53379,'a5bdb3ad-c28b-483f-81aa-472cf75d2424','N','N') +; + +-- May 30, 2021, 2:44:51 PM CEST +INSERT INTO AD_Process_Para (AD_Process_Para_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,AD_Process_ID,SeqNo,AD_Reference_ID,AD_Reference_Value_ID,IsRange,FieldLength,IsMandatory,ColumnName,IsCentrallyMaintained,EntityType,AD_Element_ID,ReadOnlyLogic,AD_Process_Para_UU,IsEncrypted,IsAutocomplete) VALUES (200352,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:51','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:51','YYYY-MM-DD HH24:MI:SS'),100,'Parameter Element',200132,20,30,200190,'N',10,'N','MFA_ElementPrm_ID','Y','D',203498,'1=1','82d2fd0e-f8a6-43ea-8681-99443d7c3174','N','N') +; + +-- May 30, 2021, 2:44:52 PM CEST +INSERT INTO AD_Window (AD_Window_ID,Name,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,WindowType,Processing,EntityType,IsSOTrx,IsDefault,IsBetaFunctionality,AD_Window_UU) VALUES (200115,'MFA Registered Device',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:51','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:51','YYYY-MM-DD HH24:MI:SS'),100,'M','N','D','Y','N','N','6e249a9d-541b-479b-ad74-bbcb7d06844d') +; + +-- May 30, 2021, 2:44:52 PM CEST +INSERT INTO AD_Table (AD_Table_ID,Name,Description,AD_Window_ID,TableName,LoadSeq,AccessLevel,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsSecurityEnabled,IsDeleteable,IsHighVolume,IsView,EntityType,ImportTable,IsChangeLog,ReplicationType,CopyColumnsFromTable,IsCentrallyMaintained,AD_Table_UU,Processing,DatabaseViewDrop,CopyComponentsFromView,CreateWindowFromTable) VALUES (200274,'MFA Registered Device','Multi-factor Authentication Registered Device',200115,'MFA_RegisteredDevice',0,'6',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:52','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:52','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','N','N','D','N','Y','L','N','Y','ce1694fc-32ce-46b4-ae8c-6dda7b652c3f','N','N','N','N') +; + +-- May 30, 2021, 2:44:52 PM CEST +INSERT INTO AD_Sequence (Name,CurrentNext,IsAudited,StartNewYear,Description,IsActive,IsTableID,AD_Client_ID,AD_Org_ID,Created,CreatedBy,Updated,UpdatedBy,AD_Sequence_ID,IsAutoSequence,StartNo,IncrementNo,CurrentNextSys,AD_Sequence_UU) VALUES ('MFA_RegisteredDevice',1000000,'N','N','Table MFA_RegisteredDevice','Y','Y',0,0,TO_TIMESTAMP('2021-05-30 14:44:52','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:52','YYYY-MM-DD HH24:MI:SS'),100,200343,'Y',1000000,1,200000,'3a5a9a56-486f-4e6d-adb1-9c9da5f8d5f5') +; + +-- May 30, 2021, 2:44:53 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214450,1,'MFA Registered Device',200274,'MFA_RegisteredDevice_ID',22,'Y','N','Y','N','N',0,'N',13,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:52','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:52','YYYY-MM-DD HH24:MI:SS'),100,203500,'N','N','D','Y','N','N','Y','dca35a97-edf8-4846-9cb7-e3ccb563e2d6','N','N','N','N','N') +; + +-- May 30, 2021, 2:44:53 PM CEST +CREATE TABLE MFA_RegisteredDevice (MFA_RegisteredDevice_ID NUMERIC(10) NOT NULL, CONSTRAINT MFA_RegisteredDevice_Key PRIMARY KEY (MFA_RegisteredDevice_ID)) +; + +-- May 30, 2021, 2:44:53 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,AD_Val_Rule_ID,ColumnName,DefaultValue,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214451,1,'Client','Client/Tenant for this installation.','A Client is a company or a legal entity. You cannot share data between Clients. Tenant is a synonym for Client.',200274,129,'AD_Client_ID','@#AD_Client_ID@',22,'N','N','Y','N','N',0,'N',19,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:53','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:53','YYYY-MM-DD HH24:MI:SS'),100,102,'N','N','D','Y','N','N','Y','f3c3a610-726a-44e7-b265-11f7841f6aed','N','N','N','D','N') +; + +-- May 30, 2021, 2:44:53 PM CEST +ALTER TABLE MFA_RegisteredDevice ADD COLUMN AD_Client_ID NUMERIC(10) NOT NULL +; + +-- May 30, 2021, 2:44:53 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,AD_Val_Rule_ID,ColumnName,DefaultValue,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214452,1,'Organization','Organizational entity within client','An organization is a unit of your client or legal entity - examples are store, department. You can share data between organizations.',200274,104,'AD_Org_ID','@#AD_Org_ID@',22,'N','N','Y','N','N',0,'N',19,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:53','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:53','YYYY-MM-DD HH24:MI:SS'),100,113,'N','N','D','Y','N','N','Y','1eac193f-deca-413d-9ba2-e2e5c9dbe34c','N','N','N','D','N') +; + +-- May 30, 2021, 2:44:53 PM CEST +ALTER TABLE MFA_RegisteredDevice ADD COLUMN AD_Org_ID NUMERIC(10) NOT NULL +; + +-- May 30, 2021, 2:44:54 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,DefaultValue,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214453,1,'Created','Date this record was created','The Created field indicates the date that this record was created.',200274,'Created','SYSDATE',7,'N','N','Y','N','N',0,'N',16,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:53','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:53','YYYY-MM-DD HH24:MI:SS'),100,245,'N','N','D','Y','N','N','Y','d9362d1f-cd9e-4e71-a23a-1033466efe09','N','N','N','N','N') +; + +-- May 30, 2021, 2:44:54 PM CEST +ALTER TABLE MFA_RegisteredDevice ADD COLUMN Created TIMESTAMP DEFAULT statement_timestamp() NOT NULL +; + +-- May 30, 2021, 2:44:54 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Reference_Value_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214454,1,'Created By','User who created this records','The Created By field indicates the user who created this record.',200274,'CreatedBy',22,'N','N','Y','N','N',0,'N',30,110,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:54','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:54','YYYY-MM-DD HH24:MI:SS'),100,246,'N','N','D','Y','N','N','Y','394f8325-3760-46ef-9703-42fbf76e3cb3','N','N','N','D','N') +; + +-- May 30, 2021, 2:44:54 PM CEST +ALTER TABLE MFA_RegisteredDevice ADD COLUMN CreatedBy NUMERIC(10) NOT NULL +; + +-- May 30, 2021, 2:44:54 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,DefaultValue,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214455,1,'Active','The record is active in the system','There are two methods of making records unavailable in the system: One is to delete the record, the other is to de-activate the record. A de-activated record is not available for selection, but available for reports. +There are two reasons for de-activating and not deleting records: +(1) The system requires the record for audit purposes. +(2) The record is referenced by other records. E.g., you cannot delete a Business Partner, if there are invoices for this partner record existing. You de-activate the Business Partner and prevent that this record is used for future entries.',200274,'IsActive','Y',1,'N','N','Y','N','N',0,'N',20,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:54','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:54','YYYY-MM-DD HH24:MI:SS'),100,348,'Y','N','D','Y','N','N','Y','4c04d7b0-2340-40ab-9cd3-241c04d08ccb','N','N','N','N','N') +; + +-- May 30, 2021, 2:44:54 PM CEST +ALTER TABLE MFA_RegisteredDevice ADD COLUMN IsActive CHAR(1) DEFAULT 'Y' CHECK (IsActive IN ('Y','N')) NOT NULL +; + +-- May 30, 2021, 2:44:55 PM CEST +INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,PrintName,EntityType,AD_Element_UU) VALUES (203501,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:54','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:54','YYYY-MM-DD HH24:MI:SS'),100,'MFA_RegisteredDevice_UU','MFA_RegisteredDevice_UU','MFA_RegisteredDevice_UU','D','3d08a37e-4824-4629-905c-351dce55048f') +; + +-- May 30, 2021, 2:44:55 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214456,1.00,'MFA_RegisteredDevice_UU',200274,'MFA_RegisteredDevice_UU',36,'N','N','N','N','N','N',10,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:55','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:55','YYYY-MM-DD HH24:MI:SS'),100,203501,'Y','N','D','Y','N','N','Y','a223f7ff-6f07-4a16-b1f0-6d85da4cdef1','N','N','N','N','N') +; + +-- May 30, 2021, 2:44:55 PM CEST +ALTER TABLE MFA_RegisteredDevice ADD COLUMN MFA_RegisteredDevice_UU VARCHAR(36) DEFAULT NULL +; + +-- May 30, 2021, 2:44:55 PM CEST +ALTER TABLE MFA_RegisteredDevice ADD CONSTRAINT MFA_RegisteredDevice_UU_idx UNIQUE (MFA_RegisteredDevice_UU) +; + +-- May 30, 2021, 2:44:55 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,DefaultValue,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214457,1,'Updated','Date this record was updated','The Updated field indicates the date that this record was updated.',200274,'Updated','SYSDATE',7,'N','N','Y','N','N',0,'N',16,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:55','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:55','YYYY-MM-DD HH24:MI:SS'),100,607,'N','N','D','Y','N','N','Y','76773355-f7ad-40cf-90f3-3b11e33893ac','N','N','N','N','N') +; + +-- May 30, 2021, 2:44:55 PM CEST +ALTER TABLE MFA_RegisteredDevice ADD COLUMN Updated TIMESTAMP DEFAULT statement_timestamp() NOT NULL +; + +-- May 30, 2021, 2:44:56 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Reference_Value_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214458,1,'Updated By','User who updated this records','The Updated By field indicates the user who updated this record.',200274,'UpdatedBy',22,'N','N','Y','N','N',0,'N',30,110,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:55','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:55','YYYY-MM-DD HH24:MI:SS'),100,608,'N','N','D','Y','N','N','Y','0442103e-eb9d-4e9c-88c8-3f1bff1fe6e0','N','N','N','D','N') +; + +-- May 30, 2021, 2:44:56 PM CEST +ALTER TABLE MFA_RegisteredDevice ADD COLUMN UpdatedBy NUMERIC(10) NOT NULL +; + +-- May 30, 2021, 2:44:56 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintName,FKConstraintType,IsHtml) VALUES (214459,0,'User/Contact','User within the system - Internal or Business Partner Contact','The User identifies a unique user in the system. This could be an internal user or a business partner contact',200274,'AD_User_ID',22,'N','N','Y','N','N',0,'N',30,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:56','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:56','YYYY-MM-DD HH24:MI:SS'),100,138,'Y','N','D','Y','N','N','Y','e303baea-478e-40a7-a2cc-c726bdf1ea2b','Y',0,'N','N','ADUser_MFARegisteredDevice','N','N') +; + +-- May 30, 2021, 2:44:56 PM CEST +ALTER TABLE MFA_RegisteredDevice ADD COLUMN AD_User_ID NUMERIC(10) NOT NULL +; + +-- May 30, 2021, 2:44:56 PM CEST +INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,Description,PrintName,EntityType,AD_Element_UU) VALUES (203502,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:56','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:56','YYYY-MM-DD HH24:MI:SS'),100,'MFADeviceIdentifier','MFA Device Identifier','Multi-factor Authentication Device Identifier','MFA Device Identifier','D','c2a0cbe6-3fe4-49de-ab8f-cc03a712f4f8') +; + +-- May 30, 2021, 2:44:57 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214460,0,'MFA Device Identifier','Multi-factor Authentication Device Identifier',200274,'MFADeviceIdentifier',2000,'N','N','Y','N','N',0,'N',10,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:56','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:56','YYYY-MM-DD HH24:MI:SS'),100,203502,'Y','N','D','Y','N','N','Y','1dd157be-f306-4aef-9f60-6fa41dd61544','Y',0,'N','N','N','N') +; + +-- May 30, 2021, 2:44:57 PM CEST +ALTER TABLE MFA_RegisteredDevice ADD COLUMN MFADeviceIdentifier VARCHAR(2000) NOT NULL +; + +-- May 30, 2021, 2:44:57 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214461,0,'Expire On','Expire On',200274,'Expiration',29,'N','N','N','N','N',0,'N',16,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:57','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:57','YYYY-MM-DD HH24:MI:SS'),100,200245,'Y','N','D','Y','N','N','Y','e3d4054a-7ac7-499c-95a7-32b31d345e11','Y',0,'N','N','N','N') +; + +-- May 30, 2021, 2:44:57 PM CEST +ALTER TABLE MFA_RegisteredDevice ADD COLUMN Expiration TIMESTAMP DEFAULT NULL +; + +-- May 30, 2021, 2:44:57 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214462,0,'Comment/Help','Comment or Hint','The Help field contains a hint, comment or help about the use of this item.',200274,'Help',2000,'N','N','N','N','N',0,'N',14,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:57','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:57','YYYY-MM-DD HH24:MI:SS'),100,326,'Y','N','D','Y','N','N','Y','576f9669-ee37-4846-84c0-05fd540bebac','Y',0,'N','N','N','N') +; + +-- May 30, 2021, 2:44:57 PM CEST +ALTER TABLE MFA_RegisteredDevice ADD COLUMN Help VARCHAR(2000) DEFAULT NULL +; + +-- May 30, 2021, 2:44:58 PM CEST +INSERT INTO AD_Tab (AD_Tab_ID,Name,AD_Window_ID,SeqNo,IsSingleRow,AD_Table_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,HasTree,IsInfoTab,IsTranslationTab,IsReadOnly,OrderByClause,Processing,TabLevel,IsSortTab,EntityType,IsInsertRecord,IsAdvancedTab,AD_Tab_UU,TreeDisplayedOn,IsLookupOnlySelection,IsAllowAdvancedLookup,MaxQueryRecords) VALUES (200289,'MFA Registered Device',200115,10,'Y',200274,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:57','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:57','YYYY-MM-DD HH24:MI:SS'),100,'N','N','N','N','MFA_RegisteredDevice.Created DESC','N',0,'N','D','Y','Y','d4125e71-276c-4fba-b857-0c83ff610a87','B','N','Y',0) +; + +-- May 30, 2021, 2:44:58 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206628,'MFA Registered Device',200289,214450,'N',22,0,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:58','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:58','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','29882a81-1c74-4068-9038-1027dc01bcd3','N',1,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:44:58 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206629,'MFA_RegisteredDevice_UU',200289,214456,'N',36,0,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:58','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:58','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','142dc396-7ca7-444b-99aa-31d5eec34084','N',1,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:44:58 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206630,'Client','Client/Tenant for this installation.','A Client is a company or a legal entity. You cannot share data between Clients. Tenant is a synonym for Client.',200289,214451,'Y',22,10,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:58','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:58','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','af6a1342-dabe-4b7a-a4b1-f6acff61e56f','Y',10,1,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:44:59 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsAllowCopy,IsDisplayedGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206631,'Organization','Organizational entity within client','An organization is a unit of your client or legal entity - examples are store, department. You can share data between organizations.',200289,214452,'Y',22,20,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:58','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:58','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','9f774c93-0cd7-4e22-bc4e-f900b0d6ee0f','Y','N',4,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:44:59 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206632,'User/Contact','User within the system - Internal or Business Partner Contact','The User identifies a unique user in the system. This could be an internal user or a business partner contact',200289,214459,'Y',22,30,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:59','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:59','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','0b327ebf-9e1b-4a6c-aa65-5b2461c1284e','Y',20,1,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:44:59 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206633,'MFA Device Identifier','Multi-factor Authentication Device Identifier',200289,214460,'Y',2000,40,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:59','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:59','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','7e58b4db-f209-4a74-b718-373d31042359','Y',30,1,5,1,'N','N','N','N') +; + +-- May 30, 2021, 2:45:00 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206634,'Comment/Help','Comment or Hint','The Help field contains a hint, comment or help about the use of this item.',200289,214462,'Y',2000,50,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:44:59','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:44:59','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','fed4ae1b-d8db-4735-9d24-b650b5e134a8','Y',60,1,5,3,'N','N','N','N') +; + +-- May 30, 2021, 2:45:00 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206635,'Expire On','Expire On',200289,214461,'Y',29,60,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:00','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:00','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','774f6ad1-9d07-4614-82cc-215230104a31','Y',40,1,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:45:00 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206636,'Active','The record is active in the system','There are two methods of making records unavailable in the system: One is to delete the record, the other is to de-activate the record. A de-activated record is not available for selection, but available for reports. +There are two reasons for de-activating and not deleting records: +(1) The system requires the record for audit purposes. +(2) The record is referenced by other records. E.g., you cannot delete a Business Partner, if there are invoices for this partner record existing. You de-activate the Business Partner and prevent that this record is used for future entries.',200289,214455,'Y',1,70,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:00','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:00','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','11219e02-68a6-4705-8ab6-5cdd766b9bec','Y',50,6,1,1,'N','N','N','N') +; + +-- May 30, 2021, 2:45:01 PM CEST +INSERT INTO AD_Window (AD_Window_ID,Name,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,WindowType,Processing,EntityType,IsSOTrx,IsDefault,IsBetaFunctionality,AD_Window_UU) VALUES (200116,'MFA Registration',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:00','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:00','YYYY-MM-DD HH24:MI:SS'),100,'M','N','D','Y','N','N','48632d2c-fd99-488d-a030-2ed3a54f99c1') +; + +-- May 30, 2021, 2:45:01 PM CEST +INSERT INTO AD_Table (AD_Table_ID,Name,Description,AD_Window_ID,TableName,LoadSeq,AccessLevel,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsSecurityEnabled,IsDeleteable,IsHighVolume,IsView,EntityType,ImportTable,IsChangeLog,ReplicationType,CopyColumnsFromTable,IsCentrallyMaintained,AD_Table_UU,Processing,DatabaseViewDrop,CopyComponentsFromView,CreateWindowFromTable) VALUES (200275,'MFA Registration','Multi-factor Authentication Registration',200116,'MFA_Registration',0,'6',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:01','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:01','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','N','N','D','N','Y','L','N','Y','0c80292c-8d90-4e7b-81d4-9e03a6397f70','N','N','N','N') +; + +-- May 30, 2021, 2:45:01 PM CEST +INSERT INTO AD_Sequence (Name,CurrentNext,IsAudited,StartNewYear,Description,IsActive,IsTableID,AD_Client_ID,AD_Org_ID,Created,CreatedBy,Updated,UpdatedBy,AD_Sequence_ID,IsAutoSequence,StartNo,IncrementNo,CurrentNextSys,AD_Sequence_UU) VALUES ('MFA_Registration',1000000,'N','N','Table MFA_Registration','Y','Y',0,0,TO_TIMESTAMP('2021-05-30 14:45:01','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:01','YYYY-MM-DD HH24:MI:SS'),100,200344,'Y',1000000,1,200000,'ca2a5e73-37c6-4a51-8219-006e0b19f79a') +; + +-- May 30, 2021, 2:45:02 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214463,1,'MFA Registration',200275,'MFA_Registration_ID',22,'Y','N','Y','N','N',0,'N',13,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:01','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:01','YYYY-MM-DD HH24:MI:SS'),100,203487,'N','N','D','Y','N','N','Y','3e6c4c15-603e-45fd-875f-eca9919c07cc','N','N','N','N','N') +; + +-- May 30, 2021, 2:45:02 PM CEST +CREATE TABLE MFA_Registration (MFA_Registration_ID NUMERIC(10) NOT NULL, CONSTRAINT MFA_Registration_Key PRIMARY KEY (MFA_Registration_ID)) +; + +-- May 30, 2021, 2:45:02 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,AD_Val_Rule_ID,ColumnName,DefaultValue,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214464,1,'Client','Client/Tenant for this installation.','A Client is a company or a legal entity. You cannot share data between Clients. Tenant is a synonym for Client.',200275,129,'AD_Client_ID','@#AD_Client_ID@',22,'N','N','Y','N','N',0,'N',19,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:02','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:02','YYYY-MM-DD HH24:MI:SS'),100,102,'N','N','D','Y','N','N','Y','0b347cca-16ae-4f32-874f-76521b2e3971','N','N','N','D','N') +; + +-- May 30, 2021, 2:45:02 PM CEST +ALTER TABLE MFA_Registration ADD COLUMN AD_Client_ID NUMERIC(10) NOT NULL +; + +-- May 30, 2021, 2:45:02 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,AD_Val_Rule_ID,ColumnName,DefaultValue,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214465,1,'Organization','Organizational entity within client','An organization is a unit of your client or legal entity - examples are store, department. You can share data between organizations.',200275,104,'AD_Org_ID','@#AD_Org_ID@',22,'N','N','Y','N','N',0,'N',19,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:02','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:02','YYYY-MM-DD HH24:MI:SS'),100,113,'N','N','D','Y','N','N','Y','55467df6-cae6-4a24-adde-50ced5f7ac63','N','N','N','D','N') +; + +-- May 30, 2021, 2:45:02 PM CEST +ALTER TABLE MFA_Registration ADD COLUMN AD_Org_ID NUMERIC(10) NOT NULL +; + +-- May 30, 2021, 2:45:03 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,DefaultValue,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214466,1,'Created','Date this record was created','The Created field indicates the date that this record was created.',200275,'Created','SYSDATE',7,'N','N','Y','N','N',0,'N',16,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:03','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:03','YYYY-MM-DD HH24:MI:SS'),100,245,'N','N','D','Y','N','N','Y','91cb1f9c-06bf-44ba-8ec5-776ba73439ec','N','N','N','N','N') +; + +-- May 30, 2021, 2:45:03 PM CEST +ALTER TABLE MFA_Registration ADD COLUMN Created TIMESTAMP DEFAULT statement_timestamp() NOT NULL +; + +-- May 30, 2021, 2:45:03 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Reference_Value_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214467,1,'Created By','User who created this records','The Created By field indicates the user who created this record.',200275,'CreatedBy',22,'N','N','Y','N','N',0,'N',30,110,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:03','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:03','YYYY-MM-DD HH24:MI:SS'),100,246,'N','N','D','Y','N','N','Y','0905234a-e64c-490f-8161-fdb3ab369a6e','N','N','N','D','N') +; + +-- May 30, 2021, 2:45:03 PM CEST +ALTER TABLE MFA_Registration ADD COLUMN CreatedBy NUMERIC(10) NOT NULL +; + +-- May 30, 2021, 2:45:03 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,IsHtml) VALUES (214468,1,'Name','Alphanumeric identifier of the entity','The name of an entity (record) is used as an default search option in addition to the search key. The name is up to 60 characters in length.',200275,'Name',1000,'N','N','N','N','Y',2,'N',10,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:03','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:03','YYYY-MM-DD HH24:MI:SS'),100,469,'Y','Y','D','Y','N','N','Y','364b1b1d-808f-44f1-98d5-58a7f39b1978','Y',10,'N','N','N') +; + +-- May 30, 2021, 2:45:03 PM CEST +ALTER TABLE MFA_Registration ADD COLUMN Name VARCHAR(1000) DEFAULT NULL +; + +-- May 30, 2021, 2:45:04 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214469,1,'Comment/Help','Comment or Hint','The Help field contains a hint, comment or help about the use of this item.',200275,'Help',2000,'N','N','N','N','N',0,'N',14,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:04','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:04','YYYY-MM-DD HH24:MI:SS'),100,326,'Y','N','D','Y','N','N','Y','047282d1-da77-4a40-b347-28c3ae3acc00','Y','N','N','N','N') +; + +-- May 30, 2021, 2:45:04 PM CEST +ALTER TABLE MFA_Registration ADD COLUMN Help VARCHAR(2000) DEFAULT NULL +; + +-- May 30, 2021, 2:45:04 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,DefaultValue,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214470,1,'Active','The record is active in the system','There are two methods of making records unavailable in the system: One is to delete the record, the other is to de-activate the record. A de-activated record is not available for selection, but available for reports. +There are two reasons for de-activating and not deleting records: +(1) The system requires the record for audit purposes. +(2) The record is referenced by other records. E.g., you cannot delete a Business Partner, if there are invoices for this partner record existing. You de-activate the Business Partner and prevent that this record is used for future entries.',200275,'IsActive','Y',1,'N','N','Y','N','N',0,'N',20,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:04','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:04','YYYY-MM-DD HH24:MI:SS'),100,348,'Y','N','D','Y','N','N','Y','2de645f9-01c5-4a03-a72b-8906750c3d28','N','N','N','N','N') +; + +-- May 30, 2021, 2:45:04 PM CEST +ALTER TABLE MFA_Registration ADD COLUMN IsActive CHAR(1) DEFAULT 'Y' CHECK (IsActive IN ('Y','N')) NOT NULL +; + +-- May 30, 2021, 2:45:05 PM CEST +INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,PrintName,EntityType,AD_Element_UU) VALUES (203503,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:04','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:04','YYYY-MM-DD HH24:MI:SS'),100,'MFA_Registration_UU','MFA_Registration_UU','MFA_Registration_UU','D','d933ab33-08d4-4772-ad49-5cd54e86870a') +; + +-- May 30, 2021, 2:45:05 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214471,1.00,'MFA_Registration_UU',200275,'MFA_Registration_UU',36,'N','N','N','N','N','N',10,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:05','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:05','YYYY-MM-DD HH24:MI:SS'),100,203503,'Y','N','D','Y','N','N','Y','a31634e6-b68e-4f1c-875d-037fd72e0eee','N','N','N','N','N') +; + +-- May 30, 2021, 2:45:05 PM CEST +ALTER TABLE MFA_Registration ADD COLUMN MFA_Registration_UU VARCHAR(36) DEFAULT NULL +; + +-- May 30, 2021, 2:45:05 PM CEST +ALTER TABLE MFA_Registration ADD CONSTRAINT MFA_Registration_UU_idx UNIQUE (MFA_Registration_UU) +; + +-- May 30, 2021, 2:45:05 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,DefaultValue,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214472,1,'Updated','Date this record was updated','The Updated field indicates the date that this record was updated.',200275,'Updated','SYSDATE',7,'N','N','Y','N','N',0,'N',16,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:05','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:05','YYYY-MM-DD HH24:MI:SS'),100,607,'N','N','D','Y','N','N','Y','6427e797-f3d0-40de-9851-a335bde9e5ac','N','N','N','N','N') +; + +-- May 30, 2021, 2:45:05 PM CEST +ALTER TABLE MFA_Registration ADD COLUMN Updated TIMESTAMP DEFAULT statement_timestamp() NOT NULL +; + +-- May 30, 2021, 2:45:06 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Reference_Value_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214473,1,'Updated By','User who updated this records','The Updated By field indicates the user who updated this record.',200275,'UpdatedBy',22,'N','N','Y','N','N',0,'N',30,110,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:05','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:05','YYYY-MM-DD HH24:MI:SS'),100,608,'N','N','D','Y','N','N','Y','a0af0c88-69e7-40e7-919d-0a4b90654829','N','N','N','D','N') +; + +-- May 30, 2021, 2:45:06 PM CEST +ALTER TABLE MFA_Registration ADD COLUMN UpdatedBy NUMERIC(10) NOT NULL +; + +-- May 30, 2021, 2:45:06 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintName,FKConstraintType,IsHtml) VALUES (214474,0,'MFA Method','Multi-factor Authentication Method',200275,'MFA_Method_ID',22,'N','N','Y','N','Y',1,'N',19,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:06','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:06','YYYY-MM-DD HH24:MI:SS'),100,203490,'Y','N','D','Y','N','N','Y','c6d57e6f-5ef8-4553-adf5-ae3e80a06d7f','Y',0,'N','N','MFAMethod_MFARegistration','N','N') +; + +-- May 30, 2021, 2:45:06 PM CEST +ALTER TABLE MFA_Registration ADD COLUMN MFA_Method_ID NUMERIC(10) NOT NULL +; + +-- May 30, 2021, 2:45:06 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintName,FKConstraintType,IsHtml) VALUES (214475,0,'User/Contact','User within the system - Internal or Business Partner Contact','The User identifies a unique user in the system. This could be an internal user or a business partner contact',200275,'AD_User_ID',22,'N','N','Y','N','N',0,'N',30,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:06','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:06','YYYY-MM-DD HH24:MI:SS'),100,138,'Y','N','D','Y','N','N','Y','957429c0-e82a-404f-8256-f14d98c8c7b6','Y',0,'N','N','ADUser_MFARegistration','N','N') +; + +-- May 30, 2021, 2:45:06 PM CEST +ALTER TABLE MFA_Registration ADD COLUMN AD_User_ID NUMERIC(10) NOT NULL +; + +-- May 30, 2021, 2:45:07 PM CEST +INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,Description,PrintName,EntityType,AD_Element_UU) VALUES (203504,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:06','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:06','YYYY-MM-DD HH24:MI:SS'),100,'MFASecret','MFA Secret','Multi-factor Authentication Secret','MFA Secret','D','75934c11-c373-44c4-a3a1-290e01dbae94') +; + +-- May 30, 2021, 2:45:07 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214476,0,'MFA Secret','Multi-factor Authentication Secret',200275,'MFASecret',2000,'N','N','N','N','N',0,'N',10,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:07','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:07','YYYY-MM-DD HH24:MI:SS'),100,203504,'Y','N','D','Y','N','N','Y','649b3d2f-6d06-43b0-a3b3-db377d66d138','Y',0,'N','N','N','N') +; + +-- May 30, 2021, 2:45:07 PM CEST +ALTER TABLE MFA_Registration ADD COLUMN MFASecret VARCHAR(2000) DEFAULT NULL +; + +-- May 30, 2021, 2:45:07 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,DefaultValue,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214477,0,'Valid','Element is valid','The element passed the validation check',200275,'IsValid','N',1,'N','N','Y','N','N',0,'N',20,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:07','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:07','YYYY-MM-DD HH24:MI:SS'),100,2002,'Y','N','D','Y','N','N','Y','07f81c2c-e77e-4425-a15a-7e8157eb6856','Y',0,'N','N','N','N') +; + +-- May 30, 2021, 2:45:07 PM CEST +ALTER TABLE MFA_Registration ADD COLUMN IsValid CHAR(1) DEFAULT 'N' CHECK (IsValid IN ('Y','N')) NOT NULL +; + +-- May 30, 2021, 2:45:08 PM CEST +INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,PrintName,EntityType,AD_Element_UU) VALUES (203505,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:07','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:07','YYYY-MM-DD HH24:MI:SS'),100,'MFAValidatedAt','Validated at','Validated at','D','26fad160-6cac-403b-9fcc-7d1fff1d79ec') +; + +-- May 30, 2021, 2:45:08 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214478,0,'Validated at',200275,'MFAValidatedAt',7,'N','N','N','N','N',0,'N',16,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:08','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:08','YYYY-MM-DD HH24:MI:SS'),100,203505,'Y','N','D','Y','N','N','Y','a6a98589-aabb-4960-aa7b-4f5935234e42','Y',0,'N','N','N','N') +; + +-- May 30, 2021, 2:45:08 PM CEST +ALTER TABLE MFA_Registration ADD COLUMN MFAValidatedAt TIMESTAMP DEFAULT NULL +; + +-- May 30, 2021, 2:45:08 PM CEST +INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,PrintName,EntityType,AD_Element_UU) VALUES (203506,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:08','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:08','YYYY-MM-DD HH24:MI:SS'),100,'MFAUnregisteredAt','Unregistered at','Unregistered at','D','576139cd-dd64-4fb6-ae5d-6cd1a9d470e0') +; + +-- May 30, 2021, 2:45:09 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214479,0,'Unregistered at',200275,'MFAUnregisteredAt',7,'N','N','N','N','N',0,'N',16,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:08','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:08','YYYY-MM-DD HH24:MI:SS'),100,203506,'Y','N','D','Y','N','N','Y','2adb4401-1b68-470f-aa03-01a3d3fdd350','Y',0,'N','N','N','N') +; + +-- May 30, 2021, 2:45:09 PM CEST +ALTER TABLE MFA_Registration ADD COLUMN MFAUnregisteredAt TIMESTAMP DEFAULT NULL +; + +-- May 30, 2021, 2:45:09 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,AD_Table_ID,ColumnName,DefaultValue,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214480,0,'Preferred',200275,'IsUserMFAPreferred','N',1,'N','N','Y','N','N',0,'N',20,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:09','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:09','YYYY-MM-DD HH24:MI:SS'),100,203489,'Y','N','D','Y','N','N','Y','5f25c961-b544-4868-8ad9-6eea0724fa03','Y',0,'N','N','N','N') +; + +-- May 30, 2021, 2:45:09 PM CEST +ALTER TABLE MFA_Registration ADD COLUMN IsUserMFAPreferred CHAR(1) DEFAULT 'N' CHECK (IsUserMFAPreferred IN ('Y','N')) NOT NULL +; + +-- May 30, 2021, 2:45:09 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214481,0,'Expire On','Expire On',200275,'Expiration',29,'N','N','N','N','N',0,'N',16,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:09','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:09','YYYY-MM-DD HH24:MI:SS'),100,200245,'Y','N','D','Y','N','N','Y','27e95438-f072-4e92-ac5b-6cd93a1b971a','Y',0,'N','N','N','N') +; + +-- May 30, 2021, 2:45:09 PM CEST +ALTER TABLE MFA_Registration ADD COLUMN Expiration TIMESTAMP DEFAULT NULL +; + +-- May 30, 2021, 2:45:10 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214482,0,'Parameter Value',200275,'ParameterValue',2000,'N','N','N','N','N',0,'N',10,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:09','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:09','YYYY-MM-DD HH24:MI:SS'),100,53379,'Y','N','D','Y','N','N','Y','19b59c42-fd59-4ff3-a486-f8b9cc5a4ce7','Y',0,'N','N','N','N') +; + +-- May 30, 2021, 2:45:10 PM CEST +ALTER TABLE MFA_Registration ADD COLUMN ParameterValue VARCHAR(2000) DEFAULT NULL +; + +-- May 30, 2021, 2:45:10 PM CEST +INSERT INTO AD_Tab (AD_Tab_ID,Name,AD_Window_ID,SeqNo,IsSingleRow,AD_Table_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,HasTree,IsInfoTab,IsTranslationTab,IsReadOnly,OrderByClause,Processing,TabLevel,IsSortTab,EntityType,IsInsertRecord,IsAdvancedTab,AD_Tab_UU,TreeDisplayedOn,IsLookupOnlySelection,IsAllowAdvancedLookup,MaxQueryRecords) VALUES (200290,'MFA Registration',200116,10,'Y',200275,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:10','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:10','YYYY-MM-DD HH24:MI:SS'),100,'N','N','N','N','MFA_Registration.Name','N',0,'N','D','Y','Y','9831281f-f29f-41ef-9d8f-baf9e14e4d4f','B','N','Y',0) +; + +-- May 30, 2021, 2:45:10 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206637,'MFA Registration',200290,214463,'N',22,0,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:10','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:10','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','d59d4ce0-7f32-4e75-bb7a-f49e77015b90','N',1,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:45:11 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206638,'MFA_Registration_UU',200290,214471,'N',36,0,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:10','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:10','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','7cbac4df-2f61-4bd9-aeaa-d42ce2c80842','N',1,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:45:11 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206639,'Client','Client/Tenant for this installation.','A Client is a company or a legal entity. You cannot share data between Clients. Tenant is a synonym for Client.',200290,214464,'Y',22,10,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:11','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:11','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','f03f6b4a-40df-42b5-8dcb-3629bd462af5','Y',10,1,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:45:11 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsAllowCopy,IsDisplayedGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206640,'Organization','Organizational entity within client','An organization is a unit of your client or legal entity - examples are store, department. You can share data between organizations.',200290,214465,'Y',22,20,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:11','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:11','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','8206502a-0d10-4de2-9324-7404c71ecafc','Y','N',4,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:45:12 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206641,'Name','Alphanumeric identifier of the entity','The name of an entity (record) is used as an default search option in addition to the search key. The name is up to 60 characters in length.',200290,214468,'Y',60,30,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:11','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:11','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','57bc1544-5e4e-4c40-99d5-9b869e884847','Y',20,1,5,1,'N','N','N','N') +; + +-- May 30, 2021, 2:45:12 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206642,'Comment/Help','Comment or Hint','The Help field contains a hint, comment or help about the use of this item.',200290,214469,'Y',2000,40,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:12','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:12','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','9df607dd-80b9-4c2a-97c7-a94e64f0d122','Y',30,1,5,3,'N','N','N','N') +; + +-- May 30, 2021, 2:45:12 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206643,'User/Contact','User within the system - Internal or Business Partner Contact','The User identifies a unique user in the system. This could be an internal user or a business partner contact',200290,214475,'Y',22,50,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:12','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:12','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','14dc9d13-ef51-44fa-92f5-98c791bc757e','Y',50,1,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:45:12 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206644,'MFA Method','Multi-factor Authentication Method',200290,214474,'Y',22,60,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:12','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:12','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','48512d1f-3e5e-41eb-b54c-538da325b7ee','Y',40,4,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:45:13 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206645,'Parameter Value',200290,214482,'Y',2000,70,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:12','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:12','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','4d689c8e-9f61-41ba-953a-d90361c61050','Y',140,1,5,1,'N','N','N','N') +; + +-- May 30, 2021, 2:45:13 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206646,'MFA Secret','Multi-factor Authentication Secret',200290,214476,'Y',2000,80,'N','N','N','Y',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:13','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:13','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','da72323c-6950-49e9-b2ce-97a26922e981','Y',60,1,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:45:13 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206647,'Expire On','Expire On',200290,214481,'Y',29,90,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:13','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:13','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','0816c719-de38-4951-8537-584bf795a544','Y',130,4,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:45:14 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206648,'Valid','Element is valid','The element passed the validation check',200290,214477,'Y',1,100,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:13','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:13','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','5c93c799-2b4f-4f00-a750-c09d62e5850e','Y',70,2,1,1,'N','N','N','N') +; + +-- May 30, 2021, 2:45:14 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206649,'Preferred',200290,214480,'Y',1,110,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:14','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:14','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','8dff0bc0-ecc8-4a9d-9521-b8ece1b90009','Y',110,3,1,1,'N','N','N','N') +; + +-- May 30, 2021, 2:45:14 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206650,'Validated at',200290,214478,'Y',7,120,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:14','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:14','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','6f8ea06e-2a03-45b0-99be-9ee52ffb8ed0','Y',90,4,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:45:15 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206651,'Unregistered at',200290,214479,'Y',7,140,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:14','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:14','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','398bfaac-b931-41d8-adb8-be36bf8b3047','Y',100,1,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:45:15 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206652,'Active','The record is active in the system','There are two methods of making records unavailable in the system: One is to delete the record, the other is to de-activate the record. A de-activated record is not available for selection, but available for reports. +There are two reasons for de-activating and not deleting records: +(1) The system requires the record for audit purposes. +(2) The record is referenced by other records. E.g., you cannot delete a Business Partner, if there are invoices for this partner record existing. You de-activate the Business Partner and prevent that this record is used for future entries.',200290,214470,'Y',1,150,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:15','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:15','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','54e089be-a428-448c-88da-df68438e5a17','Y',120,6,1,1,'N','N','N','N') +; + +-- May 30, 2021, 2:45:15 PM CEST +INSERT INTO AD_Window (AD_Window_ID,Name,Description,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,WindowType,Processing,EntityType,IsSOTrx,IsDefault,IsBetaFunctionality,AD_Window_UU) VALUES (200117,'MFA Rule','Multi-factor Authentication Rule',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:15','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:15','YYYY-MM-DD HH24:MI:SS'),100,'M','N','D','Y','N','N','d97ad960-feb6-4deb-9991-9af7955253d1') +; + +-- May 30, 2021, 2:45:16 PM CEST +INSERT INTO AD_Table (AD_Table_ID,Name,Description,AD_Window_ID,TableName,LoadSeq,AccessLevel,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsSecurityEnabled,IsDeleteable,IsHighVolume,IsView,EntityType,ImportTable,IsChangeLog,ReplicationType,CopyColumnsFromTable,IsCentrallyMaintained,AD_Table_UU,Processing,DatabaseViewDrop,CopyComponentsFromView,CreateWindowFromTable) VALUES (200276,'MFA Rule','Multi-factor Authentication Rule',200117,'MFA_Rule',0,'6',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:15','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:15','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','N','N','D','N','Y','L','N','Y','3143692d-dc6d-4a3d-8f01-40fce4bb398a','N','N','N','N') +; + +-- May 30, 2021, 2:45:16 PM CEST +INSERT INTO AD_Sequence (Name,CurrentNext,IsAudited,StartNewYear,Description,IsActive,IsTableID,AD_Client_ID,AD_Org_ID,Created,CreatedBy,Updated,UpdatedBy,AD_Sequence_ID,IsAutoSequence,StartNo,IncrementNo,CurrentNextSys,AD_Sequence_UU) VALUES ('MFA_Rule',1000000,'N','N','Table MFA_Rule','Y','Y',0,0,TO_TIMESTAMP('2021-05-30 14:45:16','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:16','YYYY-MM-DD HH24:MI:SS'),100,200345,'Y',1000000,1,200000,'a8365f4a-e13d-464e-b4ef-82ea4e6bad1d') +; + +-- May 30, 2021, 2:45:16 PM CEST +INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,Description,PrintName,EntityType,AD_Element_UU) VALUES (203507,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:16','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:16','YYYY-MM-DD HH24:MI:SS'),100,'MFA_Rule_ID','MFA Rule','Multi-factor Authentication Rule','MFA Rule','D','69b6070b-aa9c-4b26-bd0a-ec54171dae03') +; + +-- May 30, 2021, 2:45:17 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214483,1,'MFA Rule','Multi-factor Authentication Rule',200276,'MFA_Rule_ID',22,'Y','N','Y','N','N',0,'N',13,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:16','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:16','YYYY-MM-DD HH24:MI:SS'),100,203507,'N','N','D','Y','N','N','Y','a3204fe0-25ee-4aa6-a25c-4caaf9936b9c','N','N','N','N','N') +; + +-- May 30, 2021, 2:45:17 PM CEST +CREATE TABLE MFA_Rule (MFA_Rule_ID NUMERIC(10) NOT NULL, CONSTRAINT MFA_Rule_Key PRIMARY KEY (MFA_Rule_ID)) +; + +-- May 30, 2021, 2:45:17 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,AD_Val_Rule_ID,ColumnName,DefaultValue,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214484,1,'Client','Client/Tenant for this installation.','A Client is a company or a legal entity. You cannot share data between Clients. Tenant is a synonym for Client.',200276,129,'AD_Client_ID','@#AD_Client_ID@',22,'N','N','Y','N','N',0,'N',19,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:17','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:17','YYYY-MM-DD HH24:MI:SS'),100,102,'N','N','D','Y','N','N','Y','63061b21-b6c5-4a1d-82bb-ef8c32e42bf6','N','N','N','D','N') +; + +-- May 30, 2021, 2:45:17 PM CEST +ALTER TABLE MFA_Rule ADD COLUMN AD_Client_ID NUMERIC(10) NOT NULL +; + +-- May 30, 2021, 2:45:17 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,AD_Val_Rule_ID,ColumnName,DefaultValue,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214485,1,'Organization','Organizational entity within client','An organization is a unit of your client or legal entity - examples are store, department. You can share data between organizations.',200276,104,'AD_Org_ID','@#AD_Org_ID@',22,'N','N','Y','N','N',0,'N',19,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:17','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:17','YYYY-MM-DD HH24:MI:SS'),100,113,'N','N','D','Y','N','N','Y','afbfb795-112c-48eb-801e-1ac8edd77bf5','N','N','N','D','N') +; + +-- May 30, 2021, 2:45:17 PM CEST +ALTER TABLE MFA_Rule ADD COLUMN AD_Org_ID NUMERIC(10) NOT NULL +; + +-- May 30, 2021, 2:45:18 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,DefaultValue,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214486,1,'Created','Date this record was created','The Created field indicates the date that this record was created.',200276,'Created','SYSDATE',7,'N','N','Y','N','N',0,'N',16,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:17','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:17','YYYY-MM-DD HH24:MI:SS'),100,245,'N','N','D','Y','N','N','Y','f2ebf2ae-a4a4-4b72-b1b9-fda80421c6f0','N','N','N','N','N') +; + +-- May 30, 2021, 2:45:18 PM CEST +ALTER TABLE MFA_Rule ADD COLUMN Created TIMESTAMP DEFAULT statement_timestamp() NOT NULL +; + +-- May 30, 2021, 2:45:18 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Reference_Value_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214487,1,'Created By','User who created this records','The Created By field indicates the user who created this record.',200276,'CreatedBy',22,'N','N','Y','N','N',0,'N',30,110,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:18','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:18','YYYY-MM-DD HH24:MI:SS'),100,246,'N','N','D','Y','N','N','Y','839fc23c-7413-41fa-93a1-f5a193a1bcc4','N','N','N','D','N') +; + +-- May 30, 2021, 2:45:18 PM CEST +ALTER TABLE MFA_Rule ADD COLUMN CreatedBy NUMERIC(10) NOT NULL +; + +-- May 30, 2021, 2:45:18 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214488,1,'Comment/Help','Comment or Hint','The Help field contains a hint, comment or help about the use of this item.',200276,'Help',2000,'N','N','N','N','N',0,'N',14,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:18','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:18','YYYY-MM-DD HH24:MI:SS'),100,326,'Y','N','D','Y','N','N','Y','00b06810-1ac8-4614-8c54-928c0cb40fad','Y','N','N','N','N') +; + +-- May 30, 2021, 2:45:18 PM CEST +ALTER TABLE MFA_Rule ADD COLUMN Help VARCHAR(2000) DEFAULT NULL +; + +-- May 30, 2021, 2:45:19 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,DefaultValue,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214489,1,'Active','The record is active in the system','There are two methods of making records unavailable in the system: One is to delete the record, the other is to de-activate the record. A de-activated record is not available for selection, but available for reports. +There are two reasons for de-activating and not deleting records: +(1) The system requires the record for audit purposes. +(2) The record is referenced by other records. E.g., you cannot delete a Business Partner, if there are invoices for this partner record existing. You de-activate the Business Partner and prevent that this record is used for future entries.',200276,'IsActive','Y',1,'N','N','Y','N','N',0,'N',20,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:18','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:18','YYYY-MM-DD HH24:MI:SS'),100,348,'Y','N','D','Y','N','N','Y','10ee6d2f-b8cb-48ee-a385-fa4cb686b0b2','N','N','N','N','N') +; + +-- May 30, 2021, 2:45:19 PM CEST +ALTER TABLE MFA_Rule ADD COLUMN IsActive CHAR(1) DEFAULT 'Y' CHECK (IsActive IN ('Y','N')) NOT NULL +; + +-- May 30, 2021, 2:45:19 PM CEST +INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,PrintName,EntityType,AD_Element_UU) VALUES (203508,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:19','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:19','YYYY-MM-DD HH24:MI:SS'),100,'MFA_Rule_UU','MFA_Rule_UU','MFA_Rule_UU','D','ab218afd-6a60-4300-9d14-2bc70ee5b405') +; + +-- May 30, 2021, 2:45:19 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214490,1.00,'MFA_Rule_UU',200276,'MFA_Rule_UU',36,'N','N','N','N','N','N',10,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:19','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:19','YYYY-MM-DD HH24:MI:SS'),100,203508,'Y','N','D','Y','N','N','Y','39f43c92-27d0-48f2-b435-a44124b28c84','N','N','N','N','N') +; + +-- May 30, 2021, 2:45:19 PM CEST +ALTER TABLE MFA_Rule ADD COLUMN MFA_Rule_UU VARCHAR(36) DEFAULT NULL +; + +-- May 30, 2021, 2:45:19 PM CEST +ALTER TABLE MFA_Rule ADD CONSTRAINT MFA_Rule_UU_idx UNIQUE (MFA_Rule_UU) +; + +-- May 30, 2021, 2:45:20 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,DefaultValue,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214491,1,'Updated','Date this record was updated','The Updated field indicates the date that this record was updated.',200276,'Updated','SYSDATE',7,'N','N','Y','N','N',0,'N',16,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:19','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:19','YYYY-MM-DD HH24:MI:SS'),100,607,'N','N','D','Y','N','N','Y','0bcf9ffc-1f5f-4c3b-8596-ebadcdcc15de','N','N','N','N','N') +; + +-- May 30, 2021, 2:45:20 PM CEST +ALTER TABLE MFA_Rule ADD COLUMN Updated TIMESTAMP DEFAULT statement_timestamp() NOT NULL +; + +-- May 30, 2021, 2:45:20 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Reference_Value_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214492,1,'Updated By','User who updated this records','The Updated By field indicates the user who updated this record.',200276,'UpdatedBy',22,'N','N','Y','N','N',0,'N',30,110,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:20','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:20','YYYY-MM-DD HH24:MI:SS'),100,608,'N','N','D','Y','N','N','Y','81d2913a-f0c4-4ce3-b369-6abd6c6cc32e','N','N','N','D','N') +; + +-- May 30, 2021, 2:45:20 PM CEST +ALTER TABLE MFA_Rule ADD COLUMN UpdatedBy NUMERIC(10) NOT NULL +; + +-- May 30, 2021, 2:45:20 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintName,FKConstraintType,IsHtml) VALUES (214493,0,'MFA Method','Multi-factor Authentication Method',200276,'MFA_Method_ID',22,'N','N','Y','N','N',0,'N',19,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:20','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:20','YYYY-MM-DD HH24:MI:SS'),100,203490,'N','N','D','Y','N','N','Y','e46cba84-bc2e-47dd-8945-2c41e44e4fcb','Y',0,'N','N','MFAMethod_MFARule','N','N') +; + +-- May 30, 2021, 2:45:20 PM CEST +ALTER TABLE MFA_Rule ADD COLUMN MFA_Method_ID NUMERIC(10) NOT NULL +; + +-- May 30, 2021, 2:45:23 PM CEST +INSERT INTO AD_Tab (AD_Tab_ID,Name,Description,AD_Window_ID,SeqNo,IsSingleRow,AD_Table_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,HasTree,IsInfoTab,IsTranslationTab,IsReadOnly,OrderByClause,Processing,TabLevel,IsSortTab,EntityType,IsInsertRecord,IsAdvancedTab,AD_Tab_UU,TreeDisplayedOn,IsLookupOnlySelection,IsAllowAdvancedLookup,MaxQueryRecords) VALUES (200291,'MFA Rule','Multi-factor Authentication Rule',200117,10,'Y',200276,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:22','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:22','YYYY-MM-DD HH24:MI:SS'),100,'N','N','N','N','MFA_Rule.Created DESC','N',0,'N','D','Y','Y','b870c13f-8ff8-462a-80fa-9e27ca0fb329','B','N','Y',0) +; + +-- May 30, 2021, 2:45:23 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206653,'MFA_Rule_UU',200291,214490,'N',36,0,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:23','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:23','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','a0ccfd12-5e27-45ef-9344-c2b554f12a1e','N',1,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:45:23 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206654,'MFA Rule','Multi-factor Authentication Rule',200291,214483,'N',22,0,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:23','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:23','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','0a4a6136-0536-4ff0-bb60-e445f5a4b25e','N',1,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:45:24 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206655,'Client','Client/Tenant for this installation.','A Client is a company or a legal entity. You cannot share data between Clients. Tenant is a synonym for Client.',200291,214484,'Y',22,10,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:23','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:23','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','8668ecbd-4965-4823-a074-4ee6ae0c8727','Y',10,1,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:45:24 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsAllowCopy,IsDisplayedGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206656,'Organization','Organizational entity within client','An organization is a unit of your client or legal entity - examples are store, department. You can share data between organizations.',200291,214485,'Y',22,20,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:24','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:24','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','1a88050c-4ad9-4944-bdf5-e22de820d5a6','Y','N',4,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:45:24 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206657,'MFA Method','Multi-factor Authentication Method',200291,214493,'Y',22,30,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:24','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:24','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','d30c7b06-5930-469e-8c5a-73bcc78eabcf','Y',30,1,2,1,'N','N','N','N') +; + +-- May 30, 2021, 2:45:25 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206658,'Comment/Help','Comment or Hint','The Help field contains a hint, comment or help about the use of this item.',200291,214488,'Y',2000,50,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:24','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:24','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','fa1f35dc-1ad6-445e-9157-14357b2273e3','Y',20,1,5,3,'N','N','N','N') +; + +-- May 30, 2021, 2:45:26 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField,IsQuickForm) VALUES (206662,'Active','The record is active in the system','There are two methods of making records unavailable in the system: One is to delete the record, the other is to de-activate the record. A de-activated record is not available for selection, but available for reports. +There are two reasons for de-activating and not deleting records: +(1) The system requires the record for audit purposes. +(2) The record is referenced by other records. E.g., you cannot delete a Business Partner, if there are invoices for this partner record existing. You de-activate the Business Partner and prevent that this record is used for future entries.',200291,214489,'Y',1,90,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:26','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:26','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','2bb3137e-35e5-49d1-ac7c-944d560b37f3','Y',80,5,1,1,'N','N','N','N') +; + +-- May 30, 2021, 2:45:26 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('E','The provided code doesn''t match with the expected secret',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:26','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:26','YYYY-MM-DD HH24:MI:SS'),100,200686,'MFACodeInvalid','D','fc8f217f-7734-4614-b93d-0b593847607b') +; + +-- May 30, 2021, 2:45:27 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('E','Code required to complete MFA registration',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:26','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:26','YYYY-MM-DD HH24:MI:SS'),100,200687,'MFACodeRequired','D','b75a4b06-82f8-4262-9f05-e78fcbdcb233') +; + +-- May 30, 2021, 2:45:27 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','A validation code was sent to the provided address, please check the EMail, remember to check spam folder in case you don''t receive it soon.',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:27','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:27','YYYY-MM-DD HH24:MI:SS'),100,200688,'MFAEMailCodeSent','D','24785891-890a-4f87-8961-1441495e55ec') +; + +-- May 30, 2021, 2:45:27 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('E','For EMail authentication method the EMail is required',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:27','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:27','YYYY-MM-DD HH24:MI:SS'),100,200689,'MFAEMailRequired','D','839569eb-d57b-42ca-bd52-b9a1b9ba8b90') +; + +-- May 30, 2021, 2:45:28 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','A validation code was sent to the email {0}',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:27','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:27','YYYY-MM-DD HH24:MI:SS'),100,200690,'MFAEMailValidationCodeSent','D','fcf83a42-2e5b-413e-a482-c5418ed0d0a3') +; + +-- May 30, 2021, 2:45:28 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','The EMail address provided is not valid',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:28','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:28','YYYY-MM-DD HH24:MI:SS'),100,200691,'MFAInvalidEMail','D','65fc1b0c-d5dc-48ed-a04d-e4bd6faf74a2') +; + +-- May 30, 2021, 2:45:28 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','MFA Mechanism',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:28','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:28','YYYY-MM-DD HH24:MI:SS'),100,200692,'MFALoginMechanism','D','6d8b9d59-9080-4803-b461-f9ed239c3157') +; + +-- May 30, 2021, 2:45:28 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','Select a mechanism and click OK to start',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:28','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:28','YYYY-MM-DD HH24:MI:SS'),100,200693,'MFALoginMessage','D','41e6fb50-2876-40cd-ac05-c1ad19267a05') +; + +-- May 30, 2021, 2:45:29 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','Set as Preferred',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:29','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:29','YYYY-MM-DD HH24:MI:SS'),100,200694,'MFALoginSetPreferred','D','88658383-0553-4b30-9f2d-29e392355049') +; + +-- May 30, 2021, 2:45:29 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','Validation Code',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:29','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:29','YYYY-MM-DD HH24:MI:SS'),100,200695,'MFALoginValidationCode','D','c6d302d0-ac83-4d63-8b7b-f4b2da50dcbd') +; + +-- May 30, 2021, 2:45:29 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','Multi-Factor Authentication',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:29','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:29','YYYY-MM-DD HH24:MI:SS'),100,200696,'MFALoginValidationHeader','D','11681326-f0c2-405b-9b81-ba79b4616565') +; + +-- May 30, 2021, 2:45:30 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('E','The user has a valid mechanism already registered for this method',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:29','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:29','YYYY-MM-DD HH24:MI:SS'),100,200697,'MFAMethodAlreadyRegistered','D','5d128030-9924-49c6-8ad0-005643440b59') +; + +-- May 30, 2021, 2:45:30 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('E','There was an error contacting the NTP server',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:30','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:30','YYYY-MM-DD HH24:MI:SS'),100,200698,'MFANTPServerError','D','bec57e99-cd5b-47bd-a6e0-03b0ff092b2e') +; + +-- May 30, 2021, 2:45:30 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('E','There was a problem trying to send the EMail, please contact support.',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:30','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:30','YYYY-MM-DD HH24:MI:SS'),100,200699,'MFAProblemSendingEMail','D','29523709-e005-4bab-98fc-b7fe065bac9f') +; + +-- May 30, 2021, 2:45:31 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('E','The MFA registration was already completed',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:30','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:30','YYYY-MM-DD HH24:MI:SS'),100,200700,'MFARegistrationAlreadyValid','D','70cc56f5-a381-4a62-9d14-c780d3861f5d') +; + +-- May 30, 2021, 2:45:31 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','The MFA registration was completed successfully',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:31','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:31','YYYY-MM-DD HH24:MI:SS'),100,200701,'MFARegistrationCompleted','D','bb76e61e-96de-4247-b300-3e52a005b90c') +; + +-- May 30, 2021, 2:45:31 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('E','The registration expired, please register again',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:31','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:31','YYYY-MM-DD HH24:MI:SS'),100,200702,'MFARegistrationExpired','D','127c4a80-d80b-4fcc-ae7f-1d1844996798') +; + +-- May 30, 2021, 2:45:32 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','Enter the validation code generated by your TOTP application',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:31','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:31','YYYY-MM-DD HH24:MI:SS'),100,200703,'MFATOTPEnterValidationCode','D','b059e87e-fe07-40c2-8f27-f5463c6d5e15') +; + +-- May 30, 2021, 2:45:32 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('E','There was an error generating the QR Code',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:32','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:32','YYYY-MM-DD HH24:MI:SS'),100,200704,'MFATOTPErrorGeneratingQR','D','09b7504e-f371-4435-ae64-e6207f5db9d8') +; + +-- May 30, 2021, 2:45:32 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','Barcode:',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:32','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:32','YYYY-MM-DD HH24:MI:SS'),100,200705,'MFATOTPImage','D','11b238ff-0b52-4f9a-beab-beefa94374cc') +; + +-- May 30, 2021, 2:45:33 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('E','Wrong TOTP configuration, issuer required',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:32','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:32','YYYY-MM-DD HH24:MI:SS'),100,200706,'MFATOTPIssuerRequired','D','ec8ef5c1-0680-42e5-aef4-82a3c40c9f0e') +; + +-- May 30, 2021, 2:45:33 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','The TOTP mechanism was successfully registered, you can scan the barcode for the registration process, or manually enter the secret code in your TOTP application to register it',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:33','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:33','YYYY-MM-DD HH24:MI:SS'),100,200707,'MFATOTPRegistered','D','56d95714-9355-4d2d-a36c-d572f53f11f7') +; + +-- May 30, 2021, 2:45:33 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','Secret:',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:33','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:33','YYYY-MM-DD HH24:MI:SS'),100,200708,'MFATOTPSecret','D','fa6009c5-89d9-47f1-9b5e-5948ae71d8b7') +; + +-- May 30, 2021, 2:45:34 PM CEST +INSERT INTO R_MailText (R_MailText_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,IsHtml,MailHeader,MailText,R_MailText_UU) VALUES (200001,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:33','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:33','YYYY-MM-DD HH24:MI:SS'),100,'MFA Validation Code','Y','MFA Validation Code for iDempiere','

Hello @Name@,

+ +

The validation code for multi-factor authentication on iDempiere is: @MFASecret@

+ +

This validation code expires in @MFA_Method_ID@ minutes.

','e49493ce-1e00-4d65-a537-bc962e419bbc') +; + +-- May 30, 2021, 2:45:34 PM CEST +INSERT INTO AD_SysConfig (AD_SysConfig_ID,AD_Client_ID,AD_Org_ID,Created,Updated,CreatedBy,UpdatedBy,IsActive,Name,Value,Description,EntityType,ConfigurationLevel,AD_SysConfig_UU) VALUES (200174,0,0,TO_TIMESTAMP('2021-05-30 14:45:34','YYYY-MM-DD HH24:MI:SS'),TO_TIMESTAMP('2021-05-30 14:45:34','YYYY-MM-DD HH24:MI:SS'),100,100,'Y','MFA_REGISTERED_DEVICE_EXPIRATION_DAYS','30','Days of expiration for a registered device - if zero then registering device is not allowed','D','C','a93e2d8c-c09f-4b99-b0ff-d57420d922a0') +; + +-- May 30, 2021, 2:45:34 PM CEST +INSERT INTO AD_Menu (AD_Menu_ID,Name,Description,"action",AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsSummary,AD_Process_ID,IsSOTrx,IsReadOnly,EntityType,IsCentrallyMaintained,AD_Menu_UU) VALUES (200185,'Unregister MFA Mechanism','Unregister a multi-factor authentication registration','P',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:34','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:34','YYYY-MM-DD HH24:MI:SS'),100,'N',200129,'Y','N','D','Y','abfd0551-f6e6-42a9-842f-df58039cc942') +; + +-- May 30, 2021, 2:45:34 PM CEST +INSERT INTO AD_TREENODEMM(AD_Client_ID, AD_Org_ID, CreatedBy, UpdatedBy, Parent_ID, SeqNo, AD_Tree_ID, Node_ID)VALUES(0, 0, 0, 0, 200184,8, 10, 200185) +; + +-- May 30, 2021, 2:45:35 PM CEST +INSERT INTO AD_Menu (AD_Menu_ID,Name,Description,"action",AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsSummary,AD_Process_ID,IsSOTrx,IsReadOnly,EntityType,IsCentrallyMaintained,AD_Menu_UU) VALUES (200186,'Complete MFA Registration','Complete a registration for a multi-factor authentication mechanism','P',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:34','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:34','YYYY-MM-DD HH24:MI:SS'),100,'N',200130,'Y','N','D','Y','944b0ed7-5760-4d8b-8c32-02c0247e4dba') +; + +-- May 30, 2021, 2:45:35 PM CEST +INSERT INTO AD_TREENODEMM(AD_Client_ID, AD_Org_ID, CreatedBy, UpdatedBy, Parent_ID, SeqNo, AD_Tree_ID, Node_ID)VALUES(0, 0, 0, 0, 200184,6, 10, 200186) +; + +-- May 30, 2021, 2:45:35 PM CEST +INSERT INTO AD_Menu (AD_Menu_ID,Name,Description,"action",AD_Window_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsSummary,IsSOTrx,IsReadOnly,EntityType,IsCentrallyMaintained,AD_Menu_UU) VALUES (200187,'MFA Method','Multi-factor Authentication Method','W',200114,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:35','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:35','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','N','D','Y','37259222-7dbd-4127-a38e-0ff06edb133b') +; + +-- May 30, 2021, 2:45:35 PM CEST +INSERT INTO AD_TREENODEMM(AD_Client_ID, AD_Org_ID, CreatedBy, UpdatedBy, Parent_ID, SeqNo, AD_Tree_ID, Node_ID)VALUES(0, 0, 0, 0, 200184,0, 10, 200187) +; + +-- May 30, 2021, 2:45:35 PM CEST +INSERT INTO AD_Menu (AD_Menu_ID,Name,Description,"action",AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsSummary,AD_Process_ID,IsSOTrx,IsReadOnly,EntityType,IsCentrallyMaintained,AD_Menu_UU) VALUES (200188,'Revoke MFA Trusted Device','Revoke one multi-factor authentication trusted device or all','P',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:35','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:35','YYYY-MM-DD HH24:MI:SS'),100,'N',200131,'Y','N','D','Y','37af83e2-d444-4e79-aa20-dd9d24884cbe') +; + +-- May 30, 2021, 2:45:35 PM CEST +INSERT INTO AD_TREENODEMM(AD_Client_ID, AD_Org_ID, CreatedBy, UpdatedBy, Parent_ID, SeqNo, AD_Tree_ID, Node_ID)VALUES(0, 0, 0, 0, 200184,9, 10, 200188) +; + +-- May 30, 2021, 2:45:36 PM CEST +INSERT INTO AD_Menu (AD_Menu_ID,Name,Description,"action",AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsSummary,AD_Process_ID,IsSOTrx,IsReadOnly,EntityType,IsCentrallyMaintained,AD_Menu_UU) VALUES (200189,'Register MFA','Register a multi-factor authentication mechanism','P',0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:35','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:35','YYYY-MM-DD HH24:MI:SS'),100,'N',200132,'Y','N','D','Y','4578e2a5-d26d-4548-8879-dd09f7a1abeb') +; + +-- May 30, 2021, 2:45:36 PM CEST +INSERT INTO AD_TREENODEMM(AD_Client_ID, AD_Org_ID, CreatedBy, UpdatedBy, Parent_ID, SeqNo, AD_Tree_ID, Node_ID)VALUES(0, 0, 0, 0, 200184,5, 10, 200189) +; + +-- May 30, 2021, 2:45:36 PM CEST +INSERT INTO AD_Menu (AD_Menu_ID,Name,"action",AD_Window_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsSummary,IsSOTrx,IsReadOnly,EntityType,IsCentrallyMaintained,AD_Menu_UU) VALUES (200190,'MFA Registered Device','W',200115,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:36','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:36','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','N','D','Y','7305e121-e83b-4f4a-9e8b-f6a404c741ed') +; + +-- May 30, 2021, 2:45:36 PM CEST +INSERT INTO AD_TREENODEMM(AD_Client_ID, AD_Org_ID, CreatedBy, UpdatedBy, Parent_ID, SeqNo, AD_Tree_ID, Node_ID)VALUES(0, 0, 0, 0, 200184,3, 10, 200190) +; + +-- May 30, 2021, 2:45:36 PM CEST +INSERT INTO AD_Menu (AD_Menu_ID,Name,"action",AD_Window_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsSummary,IsSOTrx,IsReadOnly,EntityType,IsCentrallyMaintained,AD_Menu_UU) VALUES (200191,'MFA Registration','W',200116,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:36','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:36','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','N','D','Y','bf1107dc-629b-4b0e-b30e-88ce65d302de') +; + +-- May 30, 2021, 2:45:36 PM CEST +INSERT INTO AD_TREENODEMM(AD_Client_ID, AD_Org_ID, CreatedBy, UpdatedBy, Parent_ID, SeqNo, AD_Tree_ID, Node_ID)VALUES(0, 0, 0, 0, 200184,2, 10, 200191) +; + +-- May 30, 2021, 2:45:37 PM CEST +INSERT INTO AD_Menu (AD_Menu_ID,Name,Description,"action",AD_Window_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsSummary,IsSOTrx,IsReadOnly,EntityType,IsCentrallyMaintained,AD_Menu_UU) VALUES (200192,'MFA Rule','Multi-factor Authentication Rule','W',200117,0,0,'Y',TO_TIMESTAMP('2021-05-30 14:45:36','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-05-30 14:45:36','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','N','D','Y','467583a6-b278-445e-b684-a0278f7f6b91') +; + +-- May 30, 2021, 2:45:37 PM CEST +INSERT INTO AD_TREENODEMM(AD_Client_ID, AD_Org_ID, CreatedBy, UpdatedBy, Parent_ID, SeqNo, AD_Tree_ID, Node_ID)VALUES(0, 0, 0, 0, 200184,1, 10, 200192) +; + +-- May 30, 2021, 2:45:37 PM CEST +ALTER TABLE MFA_Method ADD CONSTRAINT RMailText_MFAMethod FOREIGN KEY (R_MailText_ID) REFERENCES r_mailtext(r_mailtext_id) DEFERRABLE INITIALLY DEFERRED +; + +-- May 30, 2021, 2:45:37 PM CEST +ALTER TABLE MFA_Method ADD CONSTRAINT MFAElementPrm_MFAMethod FOREIGN KEY (MFA_ElementPrm_ID) REFERENCES ad_element(ad_element_id) DEFERRABLE INITIALLY DEFERRED +; + +-- May 30, 2021, 2:45:37 PM CEST +ALTER TABLE MFA_RegisteredDevice ADD CONSTRAINT ADUser_MFARegisteredDevice FOREIGN KEY (AD_User_ID) REFERENCES ad_user(ad_user_id) DEFERRABLE INITIALLY DEFERRED +; + +-- May 30, 2021, 2:45:37 PM CEST +ALTER TABLE MFA_Registration ADD CONSTRAINT MFAMethod_MFARegistration FOREIGN KEY (MFA_Method_ID) REFERENCES mfa_method(mfa_method_id) DEFERRABLE INITIALLY DEFERRED +; + +-- May 30, 2021, 2:45:37 PM CEST +ALTER TABLE MFA_Registration ADD CONSTRAINT ADUser_MFARegistration FOREIGN KEY (AD_User_ID) REFERENCES ad_user(ad_user_id) DEFERRABLE INITIALLY DEFERRED +; + +-- May 30, 2021, 2:45:37 PM CEST +ALTER TABLE MFA_Rule ADD CONSTRAINT MFAMethod_MFARule FOREIGN KEY (MFA_Method_ID) REFERENCES mfa_method(mfa_method_id) DEFERRABLE INITIALLY DEFERRED +; + +-- May 30, 2021, 2:46:41 PM CEST +INSERT INTO MFA_Method (MFA_Method_ID,AD_Client_ID,AD_Org_ID,Created,CreatedBy,IsActive,MFA_Method_UU,Name,Updated,UpdatedBy,Method,MFAType,MFAIssuer,ExpireInMinutes,MFA_ElementPrm_ID) VALUES (200000,0,0,TO_TIMESTAMP('2021-05-30 14:46:40','YYYY-MM-DD HH24:MI:SS'),100,'Y','9a3b4d6e-0c31-4a06-9f05-54a0227bdd66','TOTP',TO_TIMESTAMP('2021-05-30 14:46:40','YYYY-MM-DD HH24:MI:SS'),100,'TOTP','H','iDempiere ERP',60,469) +; + +-- May 30, 2021, 2:46:41 PM CEST +INSERT INTO MFA_Method (MFA_Method_ID,AD_Client_ID,AD_Org_ID,Created,CreatedBy,IsActive,MFA_Method_UU,Name,Updated,UpdatedBy,Method,MFAType,ExpireInMinutes,R_MailText_ID,MFA_ElementPrm_ID) VALUES (200001,0,0,TO_TIMESTAMP('2021-05-30 14:46:41','YYYY-MM-DD HH24:MI:SS'),100,'Y','6773bdd1-496f-49af-ad57-9fb077bb9de9','EMail',TO_TIMESTAMP('2021-05-30 14:46:41','YYYY-MM-DD HH24:MI:SS'),100,'EMail','H',15,200001,881) +; + +-- May 30, 2021, 2:46:41 PM CEST +INSERT INTO MFA_Rule (MFA_Rule_ID,AD_Client_ID,AD_Org_ID,Created,CreatedBy,IsActive,MFA_Rule_UU,Updated,UpdatedBy,MFA_Method_ID) VALUES (200000,0,0,TO_TIMESTAMP('2021-05-30 14:46:41','YYYY-MM-DD HH24:MI:SS'),100,'Y','2c0c1a47-398d-4e25-9d8c-d13296e5703e',TO_TIMESTAMP('2021-05-30 14:46:41','YYYY-MM-DD HH24:MI:SS'),100,200000) +; + +-- May 30, 2021, 2:46:42 PM CEST +INSERT INTO MFA_Rule (MFA_Rule_ID,AD_Client_ID,AD_Org_ID,Created,CreatedBy,IsActive,MFA_Rule_UU,Updated,UpdatedBy,MFA_Method_ID) VALUES (200001,0,0,TO_TIMESTAMP('2021-05-30 14:46:41','YYYY-MM-DD HH24:MI:SS'),100,'Y','ac727f25-ca8c-4de9-a2e7-934ee9b4569d',TO_TIMESTAMP('2021-05-30 14:46:41','YYYY-MM-DD HH24:MI:SS'),100,200001) +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=0, SeqNo=0, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=218 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=0, SeqNo=1, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=153 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=0, SeqNo=2, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=263 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=0, SeqNo=3, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=166 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=0, SeqNo=4, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=203 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=0, SeqNo=5, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=53242 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=0, SeqNo=6, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=236 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=0, SeqNo=7, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=183 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=0, SeqNo=8, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=160 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=0, SeqNo=9, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=278 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=0, SeqNo=10, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=345 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=0, SeqNo=11, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=53296 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=0, SeqNo=12, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=53014 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=0, SeqNo=13, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=53108 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=0, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=161 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=1, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=367 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=2, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=456 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=3, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=501 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=4, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=326 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=5, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=566 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=6, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=392 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=7, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=200178 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=8, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=200184 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=9, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=113 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=10, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=220 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=11, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=351 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=12, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=289 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=13, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=302 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=14, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=200168 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=15, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=200169 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=16, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=303 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=17, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=200047 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=18, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=200048 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=19, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=321 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=20, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=461 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=21, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=53193 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=22, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=200161 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=23, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=53322 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=24, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=383 +; + +-- May 30, 2021, 2:47:38 PM CEST +UPDATE AD_TreeNodeMM SET Parent_ID=155, SeqNo=25, Updated=statement_timestamp() WHERE AD_Tree_ID=10 AND Node_ID=200177 +; + +-- Jun 1, 2021, 1:02:42 AM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','Register this device for {0} days',0,0,'Y',TO_TIMESTAMP('2021-06-01 01:02:42','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-06-01 01:02:42','YYYY-MM-DD HH24:MI:SS'),100,200709,'MFALoginRegisterDevice','D','0c9b5463-497b-4cd4-b4f0-932fc07c920d') +; + +-- Jun 1, 2021, 1:11:52 AM CEST +INSERT INTO AD_Val_Rule (AD_Val_Rule_ID,Name,Type,Code,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Val_Rule_UU) VALUES (200150,'MFA_RegisteredDevice - not expired','S','MFA_RegisteredDevice.AD_User_ID=@#AD_User_ID@ AND MFA_RegisteredDevice.Expiration>SYSDATE',0,0,'Y',TO_TIMESTAMP('2021-06-01 01:11:52','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-06-01 01:11:52','YYYY-MM-DD HH24:MI:SS'),100,'D','a3f149eb-b40f-4479-aa8e-34c4ba25ca46') +; + +-- Jun 1, 2021, 1:11:59 AM CEST +UPDATE AD_Process_Para SET AD_Val_Rule_ID=200150,Updated=TO_TIMESTAMP('2021-06-01 01:11:59','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_Para_ID=200349 +; + +-- Jun 1, 2021, 1:13:06 AM CEST +UPDATE AD_Val_Rule SET Name='MFA_Registration - Pending to Complete from User', Code='MFA_Registration.IsValid=''N'' AND MFA_Registration.IsActive=''Y'' AND MFA_Registration.AD_User_ID=@#AD_User_ID@',Updated=TO_TIMESTAMP('2021-06-01 01:13:06','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Val_Rule_ID=200149 +; + +-- Jun 1, 2021, 1:13:16 AM CEST +UPDATE AD_Val_Rule SET Name='MFA_RegisteredDevice - not expired from User',Updated=TO_TIMESTAMP('2021-06-01 01:13:16','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Val_Rule_ID=200150 +; + +-- Jun 4, 2021, 1:01:16 PM CEST +UPDATE AD_Message SET MsgText=' +',Updated=TO_TIMESTAMP('2021-06-04 13:01:16','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Message_ID=200707 +; + +-- Jun 4, 2021, 1:27:06 PM CEST +UPDATE AD_Message SET MsgText='Register this device for {0,choice,1#1 day|1<{0} days}',Updated=TO_TIMESTAMP('2021-06-04 13:27:06','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Message_ID=200709 +; + +-- Jun 4, 2021, 1:33:09 PM CEST +INSERT INTO AD_Form (AD_Form_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,Classname,AccessLevel,EntityType,IsBetaFunctionality,AD_Form_UU) VALUES (200017,0,0,'Y',TO_TIMESTAMP('2021-06-04 13:33:08','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-06-04 13:33:08','YYYY-MM-DD HH24:MI:SS'),100,'Register MFA','org.adempiere.webui.apps.form.MFARegister','7','D','N','225070fb-7912-4873-b9aa-785e377c9980') +; + +-- Jun 4, 2021, 1:34:46 PM CEST +UPDATE AD_Form SET Description='Register a multi-factor authentication mechanism',Updated=TO_TIMESTAMP('2021-06-04 13:34:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Form_ID=200017 +; + +-- Jun 4, 2021, 5:42:58 PM CEST +UPDATE AD_Process SET Classname='org.compiere.process.MFACompleteRegistration',Updated=TO_TIMESTAMP('2021-06-04 17:42:58','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_ID=200130 +; + +-- Jun 4, 2021, 5:43:05 PM CEST +UPDATE AD_Process SET Classname='org.compiere.process.MFARegister',Updated=TO_TIMESTAMP('2021-06-04 17:43:05','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_ID=200132 +; + +-- Jun 4, 2021, 5:43:10 PM CEST +UPDATE AD_Process SET Classname='org.compiere.process.MFARevokeDevice',Updated=TO_TIMESTAMP('2021-06-04 17:43:10','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_ID=200131 +; + +-- Jun 4, 2021, 5:43:15 PM CEST +UPDATE AD_Process SET Classname='org.compiere.process.MFAUnregister',Updated=TO_TIMESTAMP('2021-06-04 17:43:15','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_ID=200129 +; + +-- Jun 4, 2021, 6:15:23 PM CEST +UPDATE AD_Form SET Classname='org.adempiere.webui.apps.form.MFARegisterForm',Updated=TO_TIMESTAMP('2021-06-04 18:15:23','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Form_ID=200017 +; + +-- Jun 5, 2021, 11:11:16 AM CEST +UPDATE MFA_Method SET Name='TOTP (Google Auth, Authy, etc)',Updated=TO_TIMESTAMP('2021-06-05 11:11:16','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE MFA_Method_ID=200000 +; + +-- Jun 5, 2021, 11:31:46 AM CEST +UPDATE AD_Column SET SeqNo=3,Updated=TO_TIMESTAMP('2021-06-05 11:31:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=214468 +; + +-- Jun 5, 2021, 11:31:49 AM CEST +UPDATE AD_Column SET SeqNo=2,Updated=TO_TIMESTAMP('2021-06-05 11:31:49','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=214474 +; + +-- Jun 5, 2021, 11:31:53 AM CEST +UPDATE AD_Column SET SeqNo=1,Updated=TO_TIMESTAMP('2021-06-05 11:31:53','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=214468 +; + +SELECT register_migration_script('202105301448_IDEMPIERE-4782.sql') FROM dual +; + diff --git a/migration/i8.2z/oracle/202106072201_IDEMPIERE-4782.sql b/migration/i8.2z/oracle/202106072201_IDEMPIERE-4782.sql new file mode 100644 index 0000000000..d353863441 --- /dev/null +++ b/migration/i8.2z/oracle/202106072201_IDEMPIERE-4782.sql @@ -0,0 +1,95 @@ +SET SQLBLANKLINES ON +SET DEFINE OFF + +-- IDEMPIERE-4782 Multi-factor authentication (FHCA-2034) +-- Jun 7, 2021, 9:39:32 PM CEST +INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,PrintName,EntityType,AD_Element_UU) VALUES (203515,0,0,'Y',TO_DATE('2021-06-07 21:39:32','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-06-07 21:39:32','YYYY-MM-DD HH24:MI:SS'),100,'MFALastSecret','Last MFA Secret','Last MFA Secret','D','e65db29f-25a3-4b07-acd3-1d442897e22f') +; + +-- Jun 7, 2021, 9:02:33 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214500,0,'Last MFA Secret',200275,'MFALastSecret',2000,'N','N','N','N','N',0,'N',10,0,0,'Y',TO_DATE('2021-06-07 21:02:32','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-06-07 21:02:32','YYYY-MM-DD HH24:MI:SS'),100,203515,'Y','N','D','N','N','N','Y','13927461-61b7-4008-b867-25147cbc6eb3','Y',0,'N','N','N','N') +; + +-- Jun 7, 2021, 9:02:59 PM CEST +INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,Description,Help,PrintName,EntityType,AD_Element_UU) VALUES (203513,0,0,'Y',TO_DATE('2021-06-07 21:02:48','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-06-07 21:02:48','YYYY-MM-DD HH24:MI:SS'),100,'LastSuccess','Last Success',NULL,NULL,'Last Success','D','b9882967-1536-463b-ba6b-e185ea647e20') +; + +-- Jun 7, 2021, 9:03:07 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214501,0,'Last Success',200275,'LastSuccess',7,'N','N','N','N','N',0,'N',16,0,0,'Y',TO_DATE('2021-06-07 21:03:07','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-06-07 21:03:07','YYYY-MM-DD HH24:MI:SS'),100,203513,'Y','N','D','N','N','N','Y','b71e7f11-90be-4596-8368-26fd0a0606af','Y',0,'N','N','N','N') +; + +-- Jun 7, 2021, 9:03:32 PM CEST +ALTER TABLE MFA_Registration ADD MFALastSecret VARCHAR2(2000 CHAR) DEFAULT NULL +; + +-- Jun 7, 2021, 9:03:56 PM CEST +ALTER TABLE MFA_Registration ADD LastSuccess DATE DEFAULT NULL +; + +-- Jun 7, 2021, 9:04:16 PM CEST +INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,Description,Help,PrintName,EntityType,AD_Element_UU) VALUES (203514,0,0,'Y',TO_DATE('2021-06-07 21:04:09','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-06-07 21:04:09','YYYY-MM-DD HH24:MI:SS'),100,'LastFailure','Last Failure',NULL,NULL,'Last Failure','D','d1f7a3ad-db3c-47a1-9d6a-67163d72a88d') +; + +-- Jun 7, 2021, 9:04:20 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214502,0,'Last Failure',200275,'LastFailure',7,'N','N','N','N','N',0,'N',16,0,0,'Y',TO_DATE('2021-06-07 21:04:20','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-06-07 21:04:20','YYYY-MM-DD HH24:MI:SS'),100,203514,'Y','N','D','N','N','N','Y','3dff6b96-912a-405e-bcf4-662466d708f6','Y',0,'N','N','N','N') +; + +-- Jun 7, 2021, 9:04:21 PM CEST +ALTER TABLE MFA_Registration ADD LastFailure DATE DEFAULT NULL +; + +-- Jun 7, 2021, 9:04:56 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214503,0,'Failed Login Count',200275,'FailedLoginCount',10,'N','N','N','N','N',0,'N',11,0,0,'Y',TO_DATE('2021-06-07 21:04:56','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-06-07 21:04:56','YYYY-MM-DD HH24:MI:SS'),100,200113,'N','N','D','N','N','N','Y','ab6cf862-137c-4b10-939a-f97b19dc3943','Y',0,'N','N','N','N') +; + +-- Jun 7, 2021, 9:04:58 PM CEST +ALTER TABLE MFA_Registration ADD FailedLoginCount NUMBER(10) DEFAULT NULL +; + +-- Jun 7, 2021, 9:05:11 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,ColumnSpan) VALUES (206666,'Last MFA Secret',200290,214500,'Y',2000,160,'N','N','N','N',0,0,'Y',TO_DATE('2021-06-07 21:05:11','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-06-07 21:05:11','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','f1754863-8ed2-468c-be3a-6ebff14996a7','Y',150,5) +; + +-- Jun 7, 2021, 9:05:12 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,ColumnSpan) VALUES (206667,'Last Success',200290,214501,'Y',7,170,'N','N','N','N',0,0,'Y',TO_DATE('2021-06-07 21:05:11','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-06-07 21:05:11','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','b2473190-ee58-47fb-b99a-d21242187b7f','Y',160,2) +; + +-- Jun 7, 2021, 9:05:12 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,ColumnSpan) VALUES (206668,'Last Failure',200290,214502,'Y',7,180,'N','N','N','N',0,0,'Y',TO_DATE('2021-06-07 21:05:12','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-06-07 21:05:12','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','57cce993-f54c-48c0-b130-384162ab73ea','Y',170,2) +; + +-- Jun 7, 2021, 9:05:12 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,ColumnSpan) VALUES (206669,'Failed Login Count',200290,214503,'Y',10,190,'N','N','N','N',0,0,'Y',TO_DATE('2021-06-07 21:05:12','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-06-07 21:05:12','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','d5738f08-cdfe-4417-97c1-875db62bf899','Y',180,2) +; + +-- Jun 7, 2021, 9:05:50 PM CEST +UPDATE AD_Field SET SeqNo=130, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2021-06-07 21:05:50','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=206651 +; + +-- Jun 7, 2021, 9:05:50 PM CEST +UPDATE AD_Field SET SeqNo=140, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2021-06-07 21:05:50','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=206652 +; + +-- Jun 7, 2021, 9:05:50 PM CEST +UPDATE AD_Field SET SeqNo=150, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, ColumnSpan=2, IsToolbarButton=NULL,Updated=TO_DATE('2021-06-07 21:05:50','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=206666 +; + +-- Jun 7, 2021, 9:05:50 PM CEST +UPDATE AD_Field SET IsDisplayed='Y', SeqNo=160, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=4, IsToolbarButton=NULL,Updated=TO_DATE('2021-06-07 21:05:50','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=206667 +; + +-- Jun 7, 2021, 9:05:50 PM CEST +UPDATE AD_Field SET SeqNo=170, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2021-06-07 21:05:50','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=206668 +; + +-- Jun 7, 2021, 9:05:50 PM CEST +UPDATE AD_Field SET IsDisplayed='Y', SeqNo=180, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=4, IsToolbarButton=NULL,Updated=TO_DATE('2021-06-07 21:05:50','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=206669 +; + +-- Jun 7, 2021, 9:58:42 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('E','The one-time validation code has been used, please try again with a different code',0,0,'Y',TO_DATE('2021-06-07 21:58:41','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-06-07 21:58:41','YYYY-MM-DD HH24:MI:SS'),100,200710,'MFACodeAlreadyConsumed','D','a1c11929-d6ae-410b-a57a-eb9f6259fbee') +; + +SELECT register_migration_script('202106072201_IDEMPIERE-4782.sql') FROM dual +; + diff --git a/migration/i8.2z/postgresql/202106072201_IDEMPIERE-4782.sql b/migration/i8.2z/postgresql/202106072201_IDEMPIERE-4782.sql new file mode 100644 index 0000000000..b64ae592de --- /dev/null +++ b/migration/i8.2z/postgresql/202106072201_IDEMPIERE-4782.sql @@ -0,0 +1,92 @@ +-- IDEMPIERE-4782 Multi-factor authentication (FHCA-2034) +-- Jun 7, 2021, 9:39:32 PM CEST +INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,PrintName,EntityType,AD_Element_UU) VALUES (203515,0,0,'Y',TO_TIMESTAMP('2021-06-07 21:39:32','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-06-07 21:39:32','YYYY-MM-DD HH24:MI:SS'),100,'MFALastSecret','Last MFA Secret','Last MFA Secret','D','e65db29f-25a3-4b07-acd3-1d442897e22f') +; + +-- Jun 7, 2021, 9:02:33 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214500,0,'Last MFA Secret',200275,'MFALastSecret',2000,'N','N','N','N','N',0,'N',10,0,0,'Y',TO_TIMESTAMP('2021-06-07 21:02:32','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-06-07 21:02:32','YYYY-MM-DD HH24:MI:SS'),100,203515,'Y','N','D','N','N','N','Y','13927461-61b7-4008-b867-25147cbc6eb3','Y',0,'N','N','N','N') +; + +-- Jun 7, 2021, 9:02:59 PM CEST +INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,Description,Help,PrintName,EntityType,AD_Element_UU) VALUES (203513,0,0,'Y',TO_TIMESTAMP('2021-06-07 21:02:48','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-06-07 21:02:48','YYYY-MM-DD HH24:MI:SS'),100,'LastSuccess','Last Success',NULL,NULL,'Last Success','D','b9882967-1536-463b-ba6b-e185ea647e20') +; + +-- Jun 7, 2021, 9:03:07 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214501,0,'Last Success',200275,'LastSuccess',7,'N','N','N','N','N',0,'N',16,0,0,'Y',TO_TIMESTAMP('2021-06-07 21:03:07','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-06-07 21:03:07','YYYY-MM-DD HH24:MI:SS'),100,203513,'Y','N','D','N','N','N','Y','b71e7f11-90be-4596-8368-26fd0a0606af','Y',0,'N','N','N','N') +; + +-- Jun 7, 2021, 9:03:32 PM CEST +ALTER TABLE MFA_Registration ADD COLUMN MFALastSecret VARCHAR(2000) DEFAULT NULL +; + +-- Jun 7, 2021, 9:03:56 PM CEST +ALTER TABLE MFA_Registration ADD COLUMN LastSuccess TIMESTAMP DEFAULT NULL +; + +-- Jun 7, 2021, 9:04:16 PM CEST +INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,Description,Help,PrintName,EntityType,AD_Element_UU) VALUES (203514,0,0,'Y',TO_TIMESTAMP('2021-06-07 21:04:09','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-06-07 21:04:09','YYYY-MM-DD HH24:MI:SS'),100,'LastFailure','Last Failure',NULL,NULL,'Last Failure','D','d1f7a3ad-db3c-47a1-9d6a-67163d72a88d') +; + +-- Jun 7, 2021, 9:04:20 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214502,0,'Last Failure',200275,'LastFailure',7,'N','N','N','N','N',0,'N',16,0,0,'Y',TO_TIMESTAMP('2021-06-07 21:04:20','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-06-07 21:04:20','YYYY-MM-DD HH24:MI:SS'),100,203514,'Y','N','D','N','N','N','Y','3dff6b96-912a-405e-bcf4-662466d708f6','Y',0,'N','N','N','N') +; + +-- Jun 7, 2021, 9:04:21 PM CEST +ALTER TABLE MFA_Registration ADD COLUMN LastFailure TIMESTAMP DEFAULT NULL +; + +-- Jun 7, 2021, 9:04:56 PM CEST +INSERT INTO AD_Column (AD_Column_ID,Version,Name,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (214503,0,'Failed Login Count',200275,'FailedLoginCount',10,'N','N','N','N','N',0,'N',11,0,0,'Y',TO_TIMESTAMP('2021-06-07 21:04:56','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-06-07 21:04:56','YYYY-MM-DD HH24:MI:SS'),100,200113,'N','N','D','N','N','N','Y','ab6cf862-137c-4b10-939a-f97b19dc3943','Y',0,'N','N','N','N') +; + +-- Jun 7, 2021, 9:04:58 PM CEST +ALTER TABLE MFA_Registration ADD COLUMN FailedLoginCount NUMERIC(10) DEFAULT NULL +; + +-- Jun 7, 2021, 9:05:11 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,ColumnSpan) VALUES (206666,'Last MFA Secret',200290,214500,'Y',2000,160,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2021-06-07 21:05:11','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-06-07 21:05:11','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','f1754863-8ed2-468c-be3a-6ebff14996a7','Y',150,5) +; + +-- Jun 7, 2021, 9:05:12 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,ColumnSpan) VALUES (206667,'Last Success',200290,214501,'Y',7,170,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2021-06-07 21:05:11','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-06-07 21:05:11','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','b2473190-ee58-47fb-b99a-d21242187b7f','Y',160,2) +; + +-- Jun 7, 2021, 9:05:12 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,ColumnSpan) VALUES (206668,'Last Failure',200290,214502,'Y',7,180,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2021-06-07 21:05:12','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-06-07 21:05:12','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','57cce993-f54c-48c0-b130-384162ab73ea','Y',170,2) +; + +-- Jun 7, 2021, 9:05:12 PM CEST +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,ColumnSpan) VALUES (206669,'Failed Login Count',200290,214503,'Y',10,190,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2021-06-07 21:05:12','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-06-07 21:05:12','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','d5738f08-cdfe-4417-97c1-875db62bf899','Y',180,2) +; + +-- Jun 7, 2021, 9:05:50 PM CEST +UPDATE AD_Field SET SeqNo=130, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2021-06-07 21:05:50','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=206651 +; + +-- Jun 7, 2021, 9:05:50 PM CEST +UPDATE AD_Field SET SeqNo=140, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2021-06-07 21:05:50','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=206652 +; + +-- Jun 7, 2021, 9:05:50 PM CEST +UPDATE AD_Field SET SeqNo=150, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, ColumnSpan=2, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2021-06-07 21:05:50','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=206666 +; + +-- Jun 7, 2021, 9:05:50 PM CEST +UPDATE AD_Field SET IsDisplayed='Y', SeqNo=160, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=4, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2021-06-07 21:05:50','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=206667 +; + +-- Jun 7, 2021, 9:05:50 PM CEST +UPDATE AD_Field SET SeqNo=170, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2021-06-07 21:05:50','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=206668 +; + +-- Jun 7, 2021, 9:05:50 PM CEST +UPDATE AD_Field SET IsDisplayed='Y', SeqNo=180, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=4, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2021-06-07 21:05:50','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=206669 +; + +-- Jun 7, 2021, 9:58:42 PM CEST +INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('E','The one-time validation code has been used, please try again with a different code',0,0,'Y',TO_TIMESTAMP('2021-06-07 21:58:41','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-06-07 21:58:41','YYYY-MM-DD HH24:MI:SS'),100,200710,'MFACodeAlreadyConsumed','D','a1c11929-d6ae-410b-a57a-eb9f6259fbee') +; + +SELECT register_migration_script('202106072201_IDEMPIERE-4782.sql') FROM dual +; + diff --git a/org.adempiere.base-feature/model.generator.launch b/org.adempiere.base-feature/model.generator.launch index 6b19c547d1..f688b557da 100644 --- a/org.adempiere.base-feature/model.generator.launch +++ b/org.adempiere.base-feature/model.generator.launch @@ -90,6 +90,8 @@ + + diff --git a/org.adempiere.base-feature/packinfolder.app.launch b/org.adempiere.base-feature/packinfolder.app.launch index 6cbe72de5b..d959b78a3b 100644 --- a/org.adempiere.base-feature/packinfolder.app.launch +++ b/org.adempiere.base-feature/packinfolder.app.launch @@ -107,6 +107,8 @@ + + diff --git a/org.adempiere.base-feature/sign.database.build.launch b/org.adempiere.base-feature/sign.database.build.launch index 9a99040855..053d83f020 100644 --- a/org.adempiere.base-feature/sign.database.build.launch +++ b/org.adempiere.base-feature/sign.database.build.launch @@ -104,6 +104,8 @@ + + diff --git a/org.adempiere.base-feature/synchronize-terminology.app.launch b/org.adempiere.base-feature/synchronize-terminology.app.launch index f8ddef4074..9c571edbec 100644 --- a/org.adempiere.base-feature/synchronize-terminology.app.launch +++ b/org.adempiere.base-feature/synchronize-terminology.app.launch @@ -105,6 +105,8 @@ + + diff --git a/org.adempiere.base-feature/translation.app.launch b/org.adempiere.base-feature/translation.app.launch index 0866b697fd..34ee71c5c4 100644 --- a/org.adempiere.base-feature/translation.app.launch +++ b/org.adempiere.base-feature/translation.app.launch @@ -104,6 +104,8 @@ + + diff --git a/org.adempiere.base/.project b/org.adempiere.base/.project index 1b6e817e2e..dea9827e1e 100644 --- a/org.adempiere.base/.project +++ b/org.adempiere.base/.project @@ -30,6 +30,11 @@ + + org.eclipse.pde.ds.core.builder + + + org.eclipse.m2e.core.maven2Nature diff --git a/org.adempiere.base/META-INF/MANIFEST.MF b/org.adempiere.base/META-INF/MANIFEST.MF index b6d06fcd36..a71f0f66ed 100644 --- a/org.adempiere.base/META-INF/MANIFEST.MF +++ b/org.adempiere.base/META-INF/MANIFEST.MF @@ -151,6 +151,8 @@ Require-Bundle: org.eclipse.equinox.app;bundle-version="0.0.0", wrapped.com.google.http-client.google-http-client-gson;bundle-version="1.38.1", org.apache.httpcomponents.httpclient;bundle-version="4.5.10", org.apache.httpcomponents.httpcore;bundle-version="4.4.12", - com.google.guava;bundle-version="28.2.0" + com.google.guava;bundle-version="28.2.0", + wrapped.com.google.zxing.javase;bundle-version="3.4.1", + wrapped.dev.samstevens.totp.totp;bundle-version="1.7.1" Automatic-Module-Name: org.adempiere.base Bundle-Vendor: iDempiere Community diff --git a/org.adempiere.base/OSGI-INF/MFAEMailMechanism.xml b/org.adempiere.base/OSGI-INF/MFAEMailMechanism.xml new file mode 100644 index 0000000000..f7140a0a82 --- /dev/null +++ b/org.adempiere.base/OSGI-INF/MFAEMailMechanism.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/org.adempiere.base/OSGI-INF/MFATOTPMechanism.xml b/org.adempiere.base/OSGI-INF/MFATOTPMechanism.xml new file mode 100644 index 0000000000..5084f5452f --- /dev/null +++ b/org.adempiere.base/OSGI-INF/MFATOTPMechanism.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/org.adempiere.base/build.properties b/org.adempiere.base/build.properties index 7d3bd4bcce..3efca01f4c 100644 --- a/org.adempiere.base/build.properties +++ b/org.adempiere.base/build.properties @@ -1,20 +1,5 @@ bin.includes = plugin.xml,\ OSGI-INF/,\ - OSGI-INF/dslocator.xml,\ - OSGI-INF/defaultmodelfactory.xml,\ - OSGI-INF/defaultdocfactory.xml,\ - OSGI-INF/defaultcolumncalloutfactory.xml,\ - OSGI-INF/defaultmodelvalidatorfactory.xml,\ - OSGI-INF/defaultprocessfactory.xml,\ - OSGI-INF/defaultshipmentprocessorfactory.xml,\ - OSGI-INF/defaultpaymentprocessorfactory.xml,\ - OSGI-INF/broadcastutil.xml,\ - OSGI-INF/requesteventhandler.xml,\ - OSGI-INF/requestpropertyservice.xml,\ - OSGI-INF/defaultaddressvalidationfactory.xml,\ - OSGI-INF/defaulttaxproviderfactory.xml,\ - OSGI-INF/addressvalidationeventhandler.xml,\ - OSGI-INF/defaultproductpricingfactory.xml,\ schema/,\ .,\ META-INF/,\ diff --git a/org.adempiere.base/src/org/compiere/model/IMFAMechanism.java b/org.adempiere.base/src/org/compiere/model/IMFAMechanism.java new file mode 100644 index 0000000000..0e00b490b5 --- /dev/null +++ b/org.adempiere.base/src/org/compiere/model/IMFAMechanism.java @@ -0,0 +1,76 @@ +/*********************************************************************** + * This file is part of iDempiere ERP Open Source * + * http://www.idempiere.org * + * * + * Copyright (C) Contributors * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License * + * as published by the Free Software Foundation; either version 2 * + * of the License, or (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the Free Software * + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * + * MA 02110-1301, USA. * + * * + * Contributors: * + * - Carlos Ruiz (sponsored by FH) * + **********************************************************************/ + +package org.compiere.model; + +import java.util.Properties; + +public interface IMFAMechanism { + + /** + * Registration mechanism for the method + * Here the registration method executes the actions expected for this method, like sending an email, or an SMS, or nothing + * and creates the registration record + * @param ctx + * @param method + * @param prm optional, for example the email + * @param trxName + * @return Object[] - first object is the String with the instructions to follow + * second object is the registration generated + * third and posterior objects are optional additional information for the method + * like QRCode image for example, or html img object, or URL, or File + */ + Object[] register(Properties ctx, MMFAMethod method, String prm, String trxName); + + /** + * Complete/Validate a previous registration + * Here it must check for validity of the mechanism, mark the record as valid or throw exception when not + * @param ctx + * @param reg The registration object + * @param code The code to be validated + * @param name Optional - a name to assign the registration + * @param preferred + * @param trxName + * @return msg A message indicating success, errors throw exception + */ + String complete(Properties ctx, MMFARegistration reg, String code, String name, boolean preferred, String trxName); + + /** + * Generate a validation code (when needed depending on the method) + * @param reg + * @return + */ + String generateValidationCode(MMFARegistration reg); + + /** + * Validate a code + * @param reg + * @param code + * @param setPreferred + * @return message on error, null when OK + */ + String validateCode(MMFARegistration reg, String code, boolean setPreferred); + +} diff --git a/org.adempiere.base/src/org/compiere/model/I_MFA_Method.java b/org.adempiere.base/src/org/compiere/model/I_MFA_Method.java new file mode 100644 index 0000000000..ebba5515d1 --- /dev/null +++ b/org.adempiere.base/src/org/compiere/model/I_MFA_Method.java @@ -0,0 +1,263 @@ +/****************************************************************************** + * Product: iDempiere ERP & CRM Smart Business Solution * + * Copyright (C) 1999-2012 ComPiere, Inc. All Rights Reserved. * + * This program is free software, you can redistribute it and/or modify it * + * under the terms version 2 of the GNU General Public License as published * + * by the Free Software Foundation. This program is distributed in the hope * + * that it will be useful, but WITHOUT ANY WARRANTY, without even the implied * + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * + * See the GNU General Public License for more details. * + * You should have received a copy of the GNU General Public License along * + * with this program, if not, write to the Free Software Foundation, Inc., * + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. * + * For the text or an alternative of this public license, you may reach us * + * ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA * + * or via info@compiere.org or http://www.compiere.org/license.html * + *****************************************************************************/ +package org.compiere.model; + +import java.math.BigDecimal; +import java.sql.Timestamp; +import org.compiere.util.KeyNamePair; + +/** Generated Interface for MFA_Method + * @author iDempiere (generated) + * @version Release 8.2 + */ +public interface I_MFA_Method +{ + + /** TableName=MFA_Method */ + public static final String Table_Name = "MFA_Method"; + + /** AD_Table_ID=200273 */ + public static final int Table_ID = 200273; + + KeyNamePair Model = new KeyNamePair(Table_ID, Table_Name); + + /** AccessLevel = 4 - System + */ + BigDecimal accessLevel = BigDecimal.valueOf(4); + + /** Load Meta Data */ + + /** Column name AD_Client_ID */ + public static final String COLUMNNAME_AD_Client_ID = "AD_Client_ID"; + + /** Get Client. + * Client/Tenant for this installation. + */ + public int getAD_Client_ID(); + + /** Column name AD_Org_ID */ + public static final String COLUMNNAME_AD_Org_ID = "AD_Org_ID"; + + /** Set Organization. + * Organizational entity within client + */ + public void setAD_Org_ID (int AD_Org_ID); + + /** Get Organization. + * Organizational entity within client + */ + public int getAD_Org_ID(); + + /** Column name Created */ + public static final String COLUMNNAME_Created = "Created"; + + /** Get Created. + * Date this record was created + */ + public Timestamp getCreated(); + + /** Column name CreatedBy */ + public static final String COLUMNNAME_CreatedBy = "CreatedBy"; + + /** Get Created By. + * User who created this records + */ + public int getCreatedBy(); + + /** Column name Description */ + public static final String COLUMNNAME_Description = "Description"; + + /** Set Description. + * Optional short description of the record + */ + public void setDescription (String Description); + + /** Get Description. + * Optional short description of the record + */ + public String getDescription(); + + /** Column name ExpireInMinutes */ + public static final String COLUMNNAME_ExpireInMinutes = "ExpireInMinutes"; + + /** Set Expire in Minutes */ + public void setExpireInMinutes (int ExpireInMinutes); + + /** Get Expire in Minutes */ + public int getExpireInMinutes(); + + /** Column name Help */ + public static final String COLUMNNAME_Help = "Help"; + + /** Set Comment/Help. + * Comment or Hint + */ + public void setHelp (String Help); + + /** Get Comment/Help. + * Comment or Hint + */ + public String getHelp(); + + /** Column name IsActive */ + public static final String COLUMNNAME_IsActive = "IsActive"; + + /** Set Active. + * The record is active in the system + */ + public void setIsActive (boolean IsActive); + + /** Get Active. + * The record is active in the system + */ + public boolean isActive(); + + /** Column name Method */ + public static final String COLUMNNAME_Method = "Method"; + + /** Set Method */ + public void setMethod (String Method); + + /** Get Method */ + public String getMethod(); + + /** Column name MFAAllowedTimeDiscrepancy */ + public static final String COLUMNNAME_MFAAllowedTimeDiscrepancy = "MFAAllowedTimeDiscrepancy"; + + /** Set Allowed Time Period Discrepancy */ + public void setMFAAllowedTimeDiscrepancy (int MFAAllowedTimeDiscrepancy); + + /** Get Allowed Time Period Discrepancy */ + public int getMFAAllowedTimeDiscrepancy(); + + /** Column name MFA_ElementPrm_ID */ + public static final String COLUMNNAME_MFA_ElementPrm_ID = "MFA_ElementPrm_ID"; + + /** Set Parameter Element */ + public void setMFA_ElementPrm_ID (int MFA_ElementPrm_ID); + + /** Get Parameter Element */ + public int getMFA_ElementPrm_ID(); + + public org.compiere.model.I_AD_Element getMFA_ElementPrm() throws RuntimeException; + + /** Column name MFAIssuer */ + public static final String COLUMNNAME_MFAIssuer = "MFAIssuer"; + + /** Set Issuer */ + public void setMFAIssuer (String MFAIssuer); + + /** Get Issuer */ + public String getMFAIssuer(); + + /** Column name MFA_Method_ID */ + public static final String COLUMNNAME_MFA_Method_ID = "MFA_Method_ID"; + + /** Set MFA Method. + * Multi-factor Authentication Method + */ + public void setMFA_Method_ID (int MFA_Method_ID); + + /** Get MFA Method. + * Multi-factor Authentication Method + */ + public int getMFA_Method_ID(); + + /** Column name MFA_Method_UU */ + public static final String COLUMNNAME_MFA_Method_UU = "MFA_Method_UU"; + + /** Set MFA_Method_UU */ + public void setMFA_Method_UU (String MFA_Method_UU); + + /** Get MFA_Method_UU */ + public String getMFA_Method_UU(); + + /** Column name MFATimeProvider */ + public static final String COLUMNNAME_MFATimeProvider = "MFATimeProvider"; + + /** Set Time Provider */ + public void setMFATimeProvider (String MFATimeProvider); + + /** Get Time Provider */ + public String getMFATimeProvider(); + + /** Column name MFATimeServer */ + public static final String COLUMNNAME_MFATimeServer = "MFATimeServer"; + + /** Set Time Server */ + public void setMFATimeServer (String MFATimeServer); + + /** Get Time Server */ + public String getMFATimeServer(); + + /** Column name MFAType */ + public static final String COLUMNNAME_MFAType = "MFAType"; + + /** Set MFA Type. + * Multi-factor authentication type (Something you Know/Have/Are, Location) + */ + public void setMFAType (String MFAType); + + /** Get MFA Type. + * Multi-factor authentication type (Something you Know/Have/Are, Location) + */ + public String getMFAType(); + + /** Column name Name */ + public static final String COLUMNNAME_Name = "Name"; + + /** Set Name. + * Alphanumeric identifier of the entity + */ + public void setName (String Name); + + /** Get Name. + * Alphanumeric identifier of the entity + */ + public String getName(); + + /** Column name R_MailText_ID */ + public static final String COLUMNNAME_R_MailText_ID = "R_MailText_ID"; + + /** Set Mail Template. + * Text templates for mailings + */ + public void setR_MailText_ID (int R_MailText_ID); + + /** Get Mail Template. + * Text templates for mailings + */ + public int getR_MailText_ID(); + + public org.compiere.model.I_R_MailText getR_MailText() throws RuntimeException; + + /** Column name Updated */ + public static final String COLUMNNAME_Updated = "Updated"; + + /** Get Updated. + * Date this record was updated + */ + public Timestamp getUpdated(); + + /** Column name UpdatedBy */ + public static final String COLUMNNAME_UpdatedBy = "UpdatedBy"; + + /** Get Updated By. + * User who updated this records + */ + public int getUpdatedBy(); +} diff --git a/org.adempiere.base/src/org/compiere/model/I_MFA_RegisteredDevice.java b/org.adempiere.base/src/org/compiere/model/I_MFA_RegisteredDevice.java new file mode 100644 index 0000000000..51082f331f --- /dev/null +++ b/org.adempiere.base/src/org/compiere/model/I_MFA_RegisteredDevice.java @@ -0,0 +1,181 @@ +/****************************************************************************** + * Product: iDempiere ERP & CRM Smart Business Solution * + * Copyright (C) 1999-2012 ComPiere, Inc. All Rights Reserved. * + * This program is free software, you can redistribute it and/or modify it * + * under the terms version 2 of the GNU General Public License as published * + * by the Free Software Foundation. This program is distributed in the hope * + * that it will be useful, but WITHOUT ANY WARRANTY, without even the implied * + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * + * See the GNU General Public License for more details. * + * You should have received a copy of the GNU General Public License along * + * with this program, if not, write to the Free Software Foundation, Inc., * + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. * + * For the text or an alternative of this public license, you may reach us * + * ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA * + * or via info@compiere.org or http://www.compiere.org/license.html * + *****************************************************************************/ +package org.compiere.model; + +import java.math.BigDecimal; +import java.sql.Timestamp; +import org.compiere.util.KeyNamePair; + +/** Generated Interface for MFA_RegisteredDevice + * @author iDempiere (generated) + * @version Release 8.2 + */ +public interface I_MFA_RegisteredDevice +{ + + /** TableName=MFA_RegisteredDevice */ + public static final String Table_Name = "MFA_RegisteredDevice"; + + /** AD_Table_ID=200274 */ + public static final int Table_ID = 200274; + + KeyNamePair Model = new KeyNamePair(Table_ID, Table_Name); + + /** AccessLevel = 6 - System - Client + */ + BigDecimal accessLevel = BigDecimal.valueOf(6); + + /** Load Meta Data */ + + /** Column name AD_Client_ID */ + public static final String COLUMNNAME_AD_Client_ID = "AD_Client_ID"; + + /** Get Client. + * Client/Tenant for this installation. + */ + public int getAD_Client_ID(); + + /** Column name AD_Org_ID */ + public static final String COLUMNNAME_AD_Org_ID = "AD_Org_ID"; + + /** Set Organization. + * Organizational entity within client + */ + public void setAD_Org_ID (int AD_Org_ID); + + /** Get Organization. + * Organizational entity within client + */ + public int getAD_Org_ID(); + + /** Column name AD_User_ID */ + public static final String COLUMNNAME_AD_User_ID = "AD_User_ID"; + + /** Set User/Contact. + * User within the system - Internal or Business Partner Contact + */ + public void setAD_User_ID (int AD_User_ID); + + /** Get User/Contact. + * User within the system - Internal or Business Partner Contact + */ + public int getAD_User_ID(); + + public org.compiere.model.I_AD_User getAD_User() throws RuntimeException; + + /** Column name Created */ + public static final String COLUMNNAME_Created = "Created"; + + /** Get Created. + * Date this record was created + */ + public Timestamp getCreated(); + + /** Column name CreatedBy */ + public static final String COLUMNNAME_CreatedBy = "CreatedBy"; + + /** Get Created By. + * User who created this records + */ + public int getCreatedBy(); + + /** Column name Expiration */ + public static final String COLUMNNAME_Expiration = "Expiration"; + + /** Set Expire On. + * Expire On + */ + public void setExpiration (Timestamp Expiration); + + /** Get Expire On. + * Expire On + */ + public Timestamp getExpiration(); + + /** Column name Help */ + public static final String COLUMNNAME_Help = "Help"; + + /** Set Comment/Help. + * Comment or Hint + */ + public void setHelp (String Help); + + /** Get Comment/Help. + * Comment or Hint + */ + public String getHelp(); + + /** Column name IsActive */ + public static final String COLUMNNAME_IsActive = "IsActive"; + + /** Set Active. + * The record is active in the system + */ + public void setIsActive (boolean IsActive); + + /** Get Active. + * The record is active in the system + */ + public boolean isActive(); + + /** Column name MFADeviceIdentifier */ + public static final String COLUMNNAME_MFADeviceIdentifier = "MFADeviceIdentifier"; + + /** Set MFA Device Identifier. + * Multi-factor Authentication Device Identifier + */ + public void setMFADeviceIdentifier (String MFADeviceIdentifier); + + /** Get MFA Device Identifier. + * Multi-factor Authentication Device Identifier + */ + public String getMFADeviceIdentifier(); + + /** Column name MFA_RegisteredDevice_ID */ + public static final String COLUMNNAME_MFA_RegisteredDevice_ID = "MFA_RegisteredDevice_ID"; + + /** Set MFA Registered Device */ + public void setMFA_RegisteredDevice_ID (int MFA_RegisteredDevice_ID); + + /** Get MFA Registered Device */ + public int getMFA_RegisteredDevice_ID(); + + /** Column name MFA_RegisteredDevice_UU */ + public static final String COLUMNNAME_MFA_RegisteredDevice_UU = "MFA_RegisteredDevice_UU"; + + /** Set MFA_RegisteredDevice_UU */ + public void setMFA_RegisteredDevice_UU (String MFA_RegisteredDevice_UU); + + /** Get MFA_RegisteredDevice_UU */ + public String getMFA_RegisteredDevice_UU(); + + /** Column name Updated */ + public static final String COLUMNNAME_Updated = "Updated"; + + /** Get Updated. + * Date this record was updated + */ + public Timestamp getUpdated(); + + /** Column name UpdatedBy */ + public static final String COLUMNNAME_UpdatedBy = "UpdatedBy"; + + /** Get Updated By. + * User who updated this records + */ + public int getUpdatedBy(); +} diff --git a/org.adempiere.base/src/org/compiere/model/I_MFA_Registration.java b/org.adempiere.base/src/org/compiere/model/I_MFA_Registration.java new file mode 100644 index 0000000000..ad7029c329 --- /dev/null +++ b/org.adempiere.base/src/org/compiere/model/I_MFA_Registration.java @@ -0,0 +1,294 @@ +/****************************************************************************** + * Product: iDempiere ERP & CRM Smart Business Solution * + * Copyright (C) 1999-2012 ComPiere, Inc. All Rights Reserved. * + * This program is free software, you can redistribute it and/or modify it * + * under the terms version 2 of the GNU General Public License as published * + * by the Free Software Foundation. This program is distributed in the hope * + * that it will be useful, but WITHOUT ANY WARRANTY, without even the implied * + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * + * See the GNU General Public License for more details. * + * You should have received a copy of the GNU General Public License along * + * with this program, if not, write to the Free Software Foundation, Inc., * + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. * + * For the text or an alternative of this public license, you may reach us * + * ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA * + * or via info@compiere.org or http://www.compiere.org/license.html * + *****************************************************************************/ +package org.compiere.model; + +import java.math.BigDecimal; +import java.sql.Timestamp; +import org.compiere.util.KeyNamePair; + +/** Generated Interface for MFA_Registration + * @author iDempiere (generated) + * @version Release 8.2 + */ +public interface I_MFA_Registration +{ + + /** TableName=MFA_Registration */ + public static final String Table_Name = "MFA_Registration"; + + /** AD_Table_ID=200275 */ + public static final int Table_ID = 200275; + + KeyNamePair Model = new KeyNamePair(Table_ID, Table_Name); + + /** AccessLevel = 6 - System - Client + */ + BigDecimal accessLevel = BigDecimal.valueOf(6); + + /** Load Meta Data */ + + /** Column name AD_Client_ID */ + public static final String COLUMNNAME_AD_Client_ID = "AD_Client_ID"; + + /** Get Client. + * Client/Tenant for this installation. + */ + public int getAD_Client_ID(); + + /** Column name AD_Org_ID */ + public static final String COLUMNNAME_AD_Org_ID = "AD_Org_ID"; + + /** Set Organization. + * Organizational entity within client + */ + public void setAD_Org_ID (int AD_Org_ID); + + /** Get Organization. + * Organizational entity within client + */ + public int getAD_Org_ID(); + + /** Column name AD_User_ID */ + public static final String COLUMNNAME_AD_User_ID = "AD_User_ID"; + + /** Set User/Contact. + * User within the system - Internal or Business Partner Contact + */ + public void setAD_User_ID (int AD_User_ID); + + /** Get User/Contact. + * User within the system - Internal or Business Partner Contact + */ + public int getAD_User_ID(); + + public org.compiere.model.I_AD_User getAD_User() throws RuntimeException; + + /** Column name Created */ + public static final String COLUMNNAME_Created = "Created"; + + /** Get Created. + * Date this record was created + */ + public Timestamp getCreated(); + + /** Column name CreatedBy */ + public static final String COLUMNNAME_CreatedBy = "CreatedBy"; + + /** Get Created By. + * User who created this records + */ + public int getCreatedBy(); + + /** Column name Expiration */ + public static final String COLUMNNAME_Expiration = "Expiration"; + + /** Set Expire On. + * Expire On + */ + public void setExpiration (Timestamp Expiration); + + /** Get Expire On. + * Expire On + */ + public Timestamp getExpiration(); + + /** Column name FailedLoginCount */ + public static final String COLUMNNAME_FailedLoginCount = "FailedLoginCount"; + + /** Set Failed Login Count */ + public void setFailedLoginCount (int FailedLoginCount); + + /** Get Failed Login Count */ + public int getFailedLoginCount(); + + /** Column name Help */ + public static final String COLUMNNAME_Help = "Help"; + + /** Set Comment/Help. + * Comment or Hint + */ + public void setHelp (String Help); + + /** Get Comment/Help. + * Comment or Hint + */ + public String getHelp(); + + /** Column name IsActive */ + public static final String COLUMNNAME_IsActive = "IsActive"; + + /** Set Active. + * The record is active in the system + */ + public void setIsActive (boolean IsActive); + + /** Get Active. + * The record is active in the system + */ + public boolean isActive(); + + /** Column name IsUserMFAPreferred */ + public static final String COLUMNNAME_IsUserMFAPreferred = "IsUserMFAPreferred"; + + /** Set Preferred */ + public void setIsUserMFAPreferred (boolean IsUserMFAPreferred); + + /** Get Preferred */ + public boolean isUserMFAPreferred(); + + /** Column name IsValid */ + public static final String COLUMNNAME_IsValid = "IsValid"; + + /** Set Valid. + * Element is valid + */ + public void setIsValid (boolean IsValid); + + /** Get Valid. + * Element is valid + */ + public boolean isValid(); + + /** Column name LastFailure */ + public static final String COLUMNNAME_LastFailure = "LastFailure"; + + /** Set Last Failure */ + public void setLastFailure (Timestamp LastFailure); + + /** Get Last Failure */ + public Timestamp getLastFailure(); + + /** Column name LastSuccess */ + public static final String COLUMNNAME_LastSuccess = "LastSuccess"; + + /** Set Last Success */ + public void setLastSuccess (Timestamp LastSuccess); + + /** Get Last Success */ + public Timestamp getLastSuccess(); + + /** Column name MFALastSecret */ + public static final String COLUMNNAME_MFALastSecret = "MFALastSecret"; + + /** Set Last MFA Secret */ + public void setMFALastSecret (String MFALastSecret); + + /** Get Last MFA Secret */ + public String getMFALastSecret(); + + /** Column name MFA_Method_ID */ + public static final String COLUMNNAME_MFA_Method_ID = "MFA_Method_ID"; + + /** Set MFA Method. + * Multi-factor Authentication Method + */ + public void setMFA_Method_ID (int MFA_Method_ID); + + /** Get MFA Method. + * Multi-factor Authentication Method + */ + public int getMFA_Method_ID(); + + public org.compiere.model.I_MFA_Method getMFA_Method() throws RuntimeException; + + /** Column name MFA_Registration_ID */ + public static final String COLUMNNAME_MFA_Registration_ID = "MFA_Registration_ID"; + + /** Set MFA Registration */ + public void setMFA_Registration_ID (int MFA_Registration_ID); + + /** Get MFA Registration */ + public int getMFA_Registration_ID(); + + /** Column name MFA_Registration_UU */ + public static final String COLUMNNAME_MFA_Registration_UU = "MFA_Registration_UU"; + + /** Set MFA_Registration_UU */ + public void setMFA_Registration_UU (String MFA_Registration_UU); + + /** Get MFA_Registration_UU */ + public String getMFA_Registration_UU(); + + /** Column name MFASecret */ + public static final String COLUMNNAME_MFASecret = "MFASecret"; + + /** Set MFA Secret. + * Multi-factor Authentication Secret + */ + public void setMFASecret (String MFASecret); + + /** Get MFA Secret. + * Multi-factor Authentication Secret + */ + public String getMFASecret(); + + /** Column name MFAUnregisteredAt */ + public static final String COLUMNNAME_MFAUnregisteredAt = "MFAUnregisteredAt"; + + /** Set Unregistered at */ + public void setMFAUnregisteredAt (Timestamp MFAUnregisteredAt); + + /** Get Unregistered at */ + public Timestamp getMFAUnregisteredAt(); + + /** Column name MFAValidatedAt */ + public static final String COLUMNNAME_MFAValidatedAt = "MFAValidatedAt"; + + /** Set Validated at */ + public void setMFAValidatedAt (Timestamp MFAValidatedAt); + + /** Get Validated at */ + public Timestamp getMFAValidatedAt(); + + /** Column name Name */ + public static final String COLUMNNAME_Name = "Name"; + + /** Set Name. + * Alphanumeric identifier of the entity + */ + public void setName (String Name); + + /** Get Name. + * Alphanumeric identifier of the entity + */ + public String getName(); + + /** Column name ParameterValue */ + public static final String COLUMNNAME_ParameterValue = "ParameterValue"; + + /** Set Parameter Value */ + public void setParameterValue (String ParameterValue); + + /** Get Parameter Value */ + public String getParameterValue(); + + /** Column name Updated */ + public static final String COLUMNNAME_Updated = "Updated"; + + /** Get Updated. + * Date this record was updated + */ + public Timestamp getUpdated(); + + /** Column name UpdatedBy */ + public static final String COLUMNNAME_UpdatedBy = "UpdatedBy"; + + /** Get Updated By. + * User who updated this records + */ + public int getUpdatedBy(); +} diff --git a/org.adempiere.base/src/org/compiere/model/I_MFA_Rule.java b/org.adempiere.base/src/org/compiere/model/I_MFA_Rule.java new file mode 100644 index 0000000000..25480f4b1a --- /dev/null +++ b/org.adempiere.base/src/org/compiere/model/I_MFA_Rule.java @@ -0,0 +1,159 @@ +/****************************************************************************** + * Product: iDempiere ERP & CRM Smart Business Solution * + * Copyright (C) 1999-2012 ComPiere, Inc. All Rights Reserved. * + * This program is free software, you can redistribute it and/or modify it * + * under the terms version 2 of the GNU General Public License as published * + * by the Free Software Foundation. This program is distributed in the hope * + * that it will be useful, but WITHOUT ANY WARRANTY, without even the implied * + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * + * See the GNU General Public License for more details. * + * You should have received a copy of the GNU General Public License along * + * with this program, if not, write to the Free Software Foundation, Inc., * + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. * + * For the text or an alternative of this public license, you may reach us * + * ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA * + * or via info@compiere.org or http://www.compiere.org/license.html * + *****************************************************************************/ +package org.compiere.model; + +import java.math.BigDecimal; +import java.sql.Timestamp; +import org.compiere.util.KeyNamePair; + +/** Generated Interface for MFA_Rule + * @author iDempiere (generated) + * @version Release 8.2 + */ +public interface I_MFA_Rule +{ + + /** TableName=MFA_Rule */ + public static final String Table_Name = "MFA_Rule"; + + /** AD_Table_ID=200276 */ + public static final int Table_ID = 200276; + + KeyNamePair Model = new KeyNamePair(Table_ID, Table_Name); + + /** AccessLevel = 6 - System - Client + */ + BigDecimal accessLevel = BigDecimal.valueOf(6); + + /** Load Meta Data */ + + /** Column name AD_Client_ID */ + public static final String COLUMNNAME_AD_Client_ID = "AD_Client_ID"; + + /** Get Client. + * Client/Tenant for this installation. + */ + public int getAD_Client_ID(); + + /** Column name AD_Org_ID */ + public static final String COLUMNNAME_AD_Org_ID = "AD_Org_ID"; + + /** Set Organization. + * Organizational entity within client + */ + public void setAD_Org_ID (int AD_Org_ID); + + /** Get Organization. + * Organizational entity within client + */ + public int getAD_Org_ID(); + + /** Column name Created */ + public static final String COLUMNNAME_Created = "Created"; + + /** Get Created. + * Date this record was created + */ + public Timestamp getCreated(); + + /** Column name CreatedBy */ + public static final String COLUMNNAME_CreatedBy = "CreatedBy"; + + /** Get Created By. + * User who created this records + */ + public int getCreatedBy(); + + /** Column name Help */ + public static final String COLUMNNAME_Help = "Help"; + + /** Set Comment/Help. + * Comment or Hint + */ + public void setHelp (String Help); + + /** Get Comment/Help. + * Comment or Hint + */ + public String getHelp(); + + /** Column name IsActive */ + public static final String COLUMNNAME_IsActive = "IsActive"; + + /** Set Active. + * The record is active in the system + */ + public void setIsActive (boolean IsActive); + + /** Get Active. + * The record is active in the system + */ + public boolean isActive(); + + /** Column name MFA_Method_ID */ + public static final String COLUMNNAME_MFA_Method_ID = "MFA_Method_ID"; + + /** Set MFA Method. + * Multi-factor Authentication Method + */ + public void setMFA_Method_ID (int MFA_Method_ID); + + /** Get MFA Method. + * Multi-factor Authentication Method + */ + public int getMFA_Method_ID(); + + public org.compiere.model.I_MFA_Method getMFA_Method() throws RuntimeException; + + /** Column name MFA_Rule_ID */ + public static final String COLUMNNAME_MFA_Rule_ID = "MFA_Rule_ID"; + + /** Set MFA Rule. + * Multi-factor Authentication Rule + */ + public void setMFA_Rule_ID (int MFA_Rule_ID); + + /** Get MFA Rule. + * Multi-factor Authentication Rule + */ + public int getMFA_Rule_ID(); + + /** Column name MFA_Rule_UU */ + public static final String COLUMNNAME_MFA_Rule_UU = "MFA_Rule_UU"; + + /** Set MFA_Rule_UU */ + public void setMFA_Rule_UU (String MFA_Rule_UU); + + /** Get MFA_Rule_UU */ + public String getMFA_Rule_UU(); + + /** Column name Updated */ + public static final String COLUMNNAME_Updated = "Updated"; + + /** Get Updated. + * Date this record was updated + */ + public Timestamp getUpdated(); + + /** Column name UpdatedBy */ + public static final String COLUMNNAME_UpdatedBy = "UpdatedBy"; + + /** Get Updated By. + * User who updated this records + */ + public int getUpdatedBy(); +} diff --git a/org.adempiere.base/src/org/compiere/model/MMFAMethod.java b/org.adempiere.base/src/org/compiere/model/MMFAMethod.java new file mode 100644 index 0000000000..68be373917 --- /dev/null +++ b/org.adempiere.base/src/org/compiere/model/MMFAMethod.java @@ -0,0 +1,110 @@ +/*********************************************************************** + * This file is part of iDempiere ERP Open Source * + * http://www.idempiere.org * + * * + * Copyright (C) Contributors * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License * + * as published by the Free Software Foundation; either version 2 * + * of the License, or (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the Free Software * + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * + * MA 02110-1301, USA. * + * * + * Contributors: * + * - Carlos Ruiz (sponsored by FH) * + **********************************************************************/ + +package org.compiere.model; + +import java.sql.ResultSet; +import java.util.Properties; + +import org.adempiere.base.IServiceReferenceHolder; +import org.adempiere.base.Service; +import org.adempiere.base.ServiceQuery; +import org.adempiere.exceptions.AdempiereException; +import org.compiere.util.CCache; + +/** + * Multi-factor Authentication Method + */ +public class MMFAMethod extends X_MFA_Method { + /** + * + */ + private static final long serialVersionUID = -7954271872310037840L; + + /** + * Read/Create empty MFA Method + * + * @param ctx context + * @param MFA_Method_ID ID + * @param trxName transaction + */ + public MMFAMethod(Properties ctx, int MFA_Method_ID, String trxName) { + super(ctx, MFA_Method_ID, trxName); + } // MMFAMethod + + /** + * Read MFA Method from current row in ResultSet + * + * @param ctx context + * @param rs ResultSet + * @param trxName transaction + */ + public MMFAMethod(Properties ctx, ResultSet rs, String trxName) { + super(ctx, rs, trxName); + } // MMFAMethod + + /** + * + * @return {@link IMFAMechanism} + */ + public IMFAMechanism getMFAMechanism() { + ServiceQuery query = new ServiceQuery(); + String method = getMethod(); + if (method == null) + throw new AdempiereException("No method"); + query.put("method", method); + IMFAMechanism mechanism = getMFAMechanismService(query); + if (mechanism == null) + throw new AdempiereException("No MFA mechanism provider found"); + return mechanism; + } + + private static CCache> s_MFAMechanismReference = new CCache<>(null, "IMFAMechanism", 3, false); + + /** + * + * @param query + * @return {@link IMFAMechanism} + */ + public static IMFAMechanism getMFAMechanismService(ServiceQuery query) { + IMFAMechanism mechanism = null; + IServiceReferenceHolder cache = s_MFAMechanismReference.get(query); + if (cache != null) { + mechanism = cache.getService(); + if (mechanism != null) + return mechanism; + else + s_MFAMechanismReference.remove(query); + } + IServiceReferenceHolder serviceReference = Service.locator().locate(IMFAMechanism.class, query).getServiceReference(); + if (serviceReference != null) { + mechanism = serviceReference.getService(); + if (mechanism != null) + s_MFAMechanismReference.put(query, serviceReference); + } + return mechanism; + } + +} // MMFAMethod diff --git a/org.adempiere.base/src/org/compiere/model/MMFARegisteredDevice.java b/org.adempiere.base/src/org/compiere/model/MMFARegisteredDevice.java new file mode 100644 index 0000000000..5c472eb47f --- /dev/null +++ b/org.adempiere.base/src/org/compiere/model/MMFARegisteredDevice.java @@ -0,0 +1,94 @@ +/*********************************************************************** + * This file is part of iDempiere ERP Open Source * + * http://www.idempiere.org * + * * + * Copyright (C) Contributors * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License * + * as published by the Free Software Foundation; either version 2 * + * of the License, or (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the Free Software * + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * + * MA 02110-1301, USA. * + * * + * Contributors: * + * - Carlos Ruiz (sponsored by FH) * + **********************************************************************/ + +package org.compiere.model; + +import java.sql.ResultSet; +import java.util.Properties; + +import org.compiere.util.Env; + +/** + * Multi-factor Authentication Registered Device + */ +public class MMFARegisteredDevice extends X_MFA_RegisteredDevice { + /** + * + */ + private static final long serialVersionUID = 7913538709234444407L; + + /** + * Read/Create empty MFA Registered Device + * + * @param ctx context + * @param MFA_RegisteredDevice_ID ID + * @param trxName transaction + */ + public MMFARegisteredDevice(Properties ctx, int MFA_RegisteredDevice_ID, String trxName) { + super(ctx, MFA_RegisteredDevice_ID, trxName); + } // MMFARegisteredDevice + + /** + * Read MFA Registered Device from current row in ResultSet + * + * @param ctx context + * @param rs ResultSet + * @param trxName transaction + */ + public MMFARegisteredDevice(Properties ctx, ResultSet rs, String trxName) { + super(ctx, rs, trxName); + } // MMFARegisteredDevice + + /** + * Validate if there is a non-expired device registered with that code + * @param registerCookie + * @return true if device is valid + */ + public static boolean isValid(String identifier) { + final String where = "AD_User_ID=? AND MFADeviceIdentifier=? AND Expiration>SYSDATE"; + MMFARegisteredDevice rd = new Query(Env.getCtx(), Table_Name, where, null) + .setParameters(Env.getAD_User_ID(Env.getCtx()), identifier) + .setClient_ID() + .setOnlyActiveRecords(true) + .first(); + return (rd != null); + } + + /** + * Set User/Contact. + * @param AD_User_ID + * User within the system - Internal or Business Partner Contact + * Overridden to allow saving System record (zero ID) + */ + @Override + public void setAD_User_ID (int AD_User_ID) + { + if (AD_User_ID == 0) + set_ValueNoCheck (COLUMNNAME_AD_User_ID, AD_User_ID); + else + super.setAD_User_ID(AD_User_ID); + } //setAD_User_ID + +} // MMFARegisteredDevice diff --git a/org.adempiere.base/src/org/compiere/model/MMFARegistration.java b/org.adempiere.base/src/org/compiere/model/MMFARegistration.java new file mode 100644 index 0000000000..7fd3d2e7f9 --- /dev/null +++ b/org.adempiere.base/src/org/compiere/model/MMFARegistration.java @@ -0,0 +1,208 @@ +/*********************************************************************** + * This file is part of iDempiere ERP Open Source * + * http://www.idempiere.org * + * * + * Copyright (C) Contributors * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License * + * as published by the Free Software Foundation; either version 2 * + * of the License, or (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the Free Software * + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * + * MA 02110-1301, USA. * + * * + * Contributors: * + * - Carlos Ruiz (sponsored by FH) * + **********************************************************************/ + +package org.compiere.model; + +import java.sql.ResultSet; +import java.util.ArrayList; +import java.util.List; +import java.util.Properties; + +import org.compiere.util.DB; +import org.compiere.util.Env; + +/** + * Multi-factor Authentication Registration + */ +public class MMFARegistration extends X_MFA_Registration { + /** + * + */ + private static final long serialVersionUID = -2032862057961778934L; + + /** + * Read/Create empty MFA Registration + * + * @param ctx context + * @param MFA_Registration_ID ID + * @param trxName transaction + */ + public MMFARegistration(Properties ctx, int MFA_Registration_ID, String trxName) { + super(ctx, MFA_Registration_ID, trxName); + } // MMFARegistration + + /** + * Read MFA Registration from current row in ResultSet + * + * @param ctx context + * @param rs ResultSet + * @param trxName transaction + */ + public MMFARegistration(Properties ctx, ResultSet rs, String trxName) { + super(ctx, rs, trxName); + } // MMFARegistration + + /** + * Validate if a method is already registered for this user + * @param method + * @param prm + * @return + */ + public static boolean alreadyExistsValid(MMFAMethod method, String prm) { + List params = new ArrayList(); + params.add(Env.getAD_User_ID(method.getCtx())); + params.add(method.getMFA_Method_ID()); + params.add(Env.getAD_Client_ID(method.getCtx())); + StringBuilder sql = new StringBuilder(); + sql.append("SELECT COUNT(*)" + + " FROM MFA_Registration" + + " WHERE AD_User_ID=?" + + " AND MFA_Method_ID=?" + + " AND IsValid='Y'" + + " AND AD_Client_ID=?" + + " AND IsActive='Y'"); + if (prm != null) { + sql.append(" AND ParameterValue=?"); + params.add(prm); + } + int cnt = DB.getSQLValueEx(method.get_TrxName(), sql.toString(), params); + return cnt != 0; + } + + public static void invalidatePreviousPending(MMFAMethod method, String prm, MMFARegistration reg) { + List params = new ArrayList(); + params.add(Env.getAD_User_ID(method.getCtx())); + params.add(method.getMFA_Method_ID()); + params.add(Env.getAD_Client_ID(method.getCtx())); + params.add(reg.getMFA_Registration_ID()); + StringBuilder sql = new StringBuilder(); + sql.append("UPDATE MFA_Registration" + + " SET IsActive='N'" + + " WHERE AD_User_ID=?" + + " AND MFA_Method_ID=?" + + " AND AD_Client_ID=?" + + " AND IsValid='N'" + + " AND IsActive='Y'" + + " AND MFA_Registration_ID!=?"); + if (prm != null) { + sql.append(" AND ParameterValue=?"); + params.add(prm); + } + DB.executeUpdateEx(sql.toString(), params.toArray(), method.get_TrxName()); + } + + /** + * Set record as preferred, and set all the others from this user as not preferred + */ + @Override + public void setIsUserMFAPreferred(boolean IsUserMFAPreferred) { + super.setIsUserMFAPreferred(IsUserMFAPreferred); + if (IsUserMFAPreferred) { + int userId = getAD_User_ID(); + int clientId = getAD_Client_ID(); + int regId = getMFA_Registration_ID(); + final String sql = "" + + "UPDATE MFA_Registration" + + " SET IsUserMFAPreferred='N'" + + " WHERE AD_User_ID=?" + + " AND AD_Client_ID=?" + + " AND IsUserMFAPreferred='Y'" + + " AND MFA_Registration_ID!=?"; + DB.executeUpdateEx(sql, new Object[] {userId, clientId, regId}, get_TrxName()); + } + } + + /** + * Get the valid registrations from this user + * @return + */ + public static List getValidRegistrationsFromUser() { + final String where = "IsValid ='Y' AND AD_User_ID=? AND AD_Client_ID IN (0,?)"; + List ret = new Query(Env.getCtx(), Table_Name, where, null) + .setParameters(Env.getAD_User_ID(Env.getCtx()), Env.getAD_Client_ID(Env.getCtx())) + .setOnlyActiveRecords(true) + .setOrderBy("IsUserMFAPreferred DESC, Name") + .list(); + return ret; + } + + /** + * If the user has valid registration mechanisms + * @return + */ + public static boolean userHasValidRegistration() { + final String sql = "" + + "SELECT COUNT(*)" + + " FROM MFA_Registration" + + " WHERE IsActive='Y'" + + " AND IsValid ='Y'" + + " AND AD_User_ID=?" + + " AND AD_Client_ID IN (0,?)"; + int cnt = DB.getSQLValueEx(null, sql, Env.getAD_User_ID(Env.getCtx()), Env.getAD_Client_ID(Env.getCtx())); + return cnt > 0; + } + + /** + * Generate a validation code using the registered method + * @param reg + * @return + */ + public String generateValidationCode(MMFARegistration reg) { + MMFAMethod method = new MMFAMethod(getCtx(), getMFA_Method_ID(), get_TrxName()); + IMFAMechanism mechanism = method.getMFAMechanism(); + String msg = mechanism.generateValidationCode(reg); + return msg; + } + + /** + * Validate the code using the registered method + * @param reg + * @param code + * @param setPreferred + * @return + */ + public String validateCode(MMFARegistration reg, String code, boolean setPreferred) { + MMFAMethod method = new MMFAMethod(getCtx(), getMFA_Method_ID(), get_TrxName()); + IMFAMechanism mechanism = method.getMFAMechanism(); + String msg = mechanism.validateCode(reg, code, setPreferred); + return msg; + } + + /** + * Set User/Contact. + * @param AD_User_ID + * User within the system - Internal or Business Partner Contact + * Overridden to allow saving System record (zero ID) + */ + @Override + public void setAD_User_ID (int AD_User_ID) + { + if (AD_User_ID == 0) + set_ValueNoCheck (COLUMNNAME_AD_User_ID, AD_User_ID); + else + super.setAD_User_ID(AD_User_ID); + } //setAD_User_ID + +} // MMFARegistration diff --git a/org.adempiere.base/src/org/compiere/model/MSysConfig.java b/org.adempiere.base/src/org/compiere/model/MSysConfig.java index 977aa2c18d..939f70883a 100644 --- a/org.adempiere.base/src/org/compiere/model/MSysConfig.java +++ b/org.adempiere.base/src/org/compiere/model/MSysConfig.java @@ -43,7 +43,7 @@ public class MSysConfig extends X_AD_SysConfig /** * */ - private static final long serialVersionUID = 8581992138870649241L; + private static final long serialVersionUID = 2454757193097243912L; public static final String ADDRESS_VALIDATION = "ADDRESS_VALIDATION"; public static final String ALERT_SEND_ATTACHMENT_AS_XLS = "ALERT_SEND_ATTACHMENT_AS_XLS"; @@ -124,6 +124,8 @@ public class MSysConfig extends X_AD_SysConfig public static final String MAX_RESULTS_PER_SEARCH_IN_DOCUMENT_CONTROLLER = "MAX_RESULTS_PER_SEARCH_IN_DOCUMENT_CONTROLLER"; public static final String MAX_TEXT_LENGTH_ON_GRID_VIEW = "MAX_TEXT_LENGTH_ON_GRID_VIEW"; public static final String MENU_INFOUPDATER_SLEEP_MS = "MENU_INFOUPDATER_SLEEP_MS"; + public static final String MFA_NTP_TIMEOUT_IN_MILLISECONDS = "MFA_NTP_TIMEOUT_IN_MILLISECONDS"; + public static final String MFA_REGISTERED_DEVICE_EXPIRATION_DAYS = "MFA_REGISTERED_DEVICE_EXPIRATION_DAYS"; public static final String MONITOR_INITIAL_WAIT_FOR_CLUSTER_IN_SECONDS = "MONITOR_INITIAL_WAIT_FOR_CLUSTER_IN_SECONDS"; public static final String MONITOR_MAX_WAIT_FOR_CLUSTER_IN_SECONDS = "MONITOR_MAX_WAIT_FOR_CLUSTER_IN_SECONDS"; public static final String MFG_ValidateCostsDifferenceOnCreate = "MFG_ValidateCostsDifferenceOnCreate"; diff --git a/org.adempiere.base/src/org/compiere/model/SystemIDs.java b/org.adempiere.base/src/org/compiere/model/SystemIDs.java index 388921bf4f..5a1059c4ff 100644 --- a/org.adempiere.base/src/org/compiere/model/SystemIDs.java +++ b/org.adempiere.base/src/org/compiere/model/SystemIDs.java @@ -60,6 +60,7 @@ public class SystemIDs public final static int FORM_REPORT_WIZARD = 200002; public final static int FORM_SETUP_WIZARD = 200000; public final static int FORM_ADD_AUTHORIZATION = 200016; + public final static int FORM_MFA_REGISTER = 200017; public final static int MENU_NOTICE = 233; diff --git a/org.adempiere.base/src/org/compiere/model/X_MFA_Method.java b/org.adempiere.base/src/org/compiere/model/X_MFA_Method.java new file mode 100644 index 0000000000..42a2ec60cd --- /dev/null +++ b/org.adempiere.base/src/org/compiere/model/X_MFA_Method.java @@ -0,0 +1,355 @@ +/****************************************************************************** + * Product: iDempiere ERP & CRM Smart Business Solution * + * Copyright (C) 1999-2012 ComPiere, Inc. All Rights Reserved. * + * This program is free software, you can redistribute it and/or modify it * + * under the terms version 2 of the GNU General Public License as published * + * by the Free Software Foundation. This program is distributed in the hope * + * that it will be useful, but WITHOUT ANY WARRANTY, without even the implied * + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * + * See the GNU General Public License for more details. * + * You should have received a copy of the GNU General Public License along * + * with this program, if not, write to the Free Software Foundation, Inc., * + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. * + * For the text or an alternative of this public license, you may reach us * + * ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA * + * or via info@compiere.org or http://www.compiere.org/license.html * + *****************************************************************************/ +/** Generated Model - DO NOT CHANGE */ +package org.compiere.model; + +import java.sql.ResultSet; +import java.util.Properties; +import org.compiere.util.KeyNamePair; + +/** Generated Model for MFA_Method + * @author iDempiere (generated) + * @version Release 8.2 - $Id$ */ +public class X_MFA_Method extends PO implements I_MFA_Method, I_Persistent +{ + + /** + * + */ + private static final long serialVersionUID = 20210605L; + + /** Standard Constructor */ + public X_MFA_Method (Properties ctx, int MFA_Method_ID, String trxName) + { + super (ctx, MFA_Method_ID, trxName); + /** if (MFA_Method_ID == 0) + { + setMethod (null); + setMFA_Method_ID (0); + setName (null); + } */ + } + + /** Load Constructor */ + public X_MFA_Method (Properties ctx, ResultSet rs, String trxName) + { + super (ctx, rs, trxName); + } + + /** AccessLevel + * @return 4 - System + */ + protected int get_AccessLevel() + { + return accessLevel.intValue(); + } + + /** Load Meta Data */ + protected POInfo initPO (Properties ctx) + { + POInfo poi = POInfo.getPOInfo (ctx, Table_ID, get_TrxName()); + return poi; + } + + public String toString() + { + StringBuilder sb = new StringBuilder ("X_MFA_Method[") + .append(get_ID()).append(",Name=").append(getName()).append("]"); + return sb.toString(); + } + + /** Set Description. + @param Description + Optional short description of the record + */ + public void setDescription (String Description) + { + set_Value (COLUMNNAME_Description, Description); + } + + /** Get Description. + @return Optional short description of the record + */ + public String getDescription () + { + return (String)get_Value(COLUMNNAME_Description); + } + + /** Set Expire in Minutes. + @param ExpireInMinutes Expire in Minutes */ + public void setExpireInMinutes (int ExpireInMinutes) + { + set_Value (COLUMNNAME_ExpireInMinutes, Integer.valueOf(ExpireInMinutes)); + } + + /** Get Expire in Minutes. + @return Expire in Minutes */ + public int getExpireInMinutes () + { + Integer ii = (Integer)get_Value(COLUMNNAME_ExpireInMinutes); + if (ii == null) + return 0; + return ii.intValue(); + } + + /** Set Comment/Help. + @param Help + Comment or Hint + */ + public void setHelp (String Help) + { + set_Value (COLUMNNAME_Help, Help); + } + + /** Get Comment/Help. + @return Comment or Hint + */ + public String getHelp () + { + return (String)get_Value(COLUMNNAME_Help); + } + + /** Method AD_Reference_ID=200187 */ + public static final int METHOD_AD_Reference_ID=200187; + /** Time-Based One-Time Password = TOTP */ + public static final String METHOD_Time_BasedOne_TimePassword = "TOTP"; + /** EMail = EMail */ + public static final String METHOD_EMail = "EMail"; + /** Set Method. + @param Method Method */ + public void setMethod (String Method) + { + + set_Value (COLUMNNAME_Method, Method); + } + + /** Get Method. + @return Method */ + public String getMethod () + { + return (String)get_Value(COLUMNNAME_Method); + } + + /** Set Allowed Time Period Discrepancy. + @param MFAAllowedTimeDiscrepancy Allowed Time Period Discrepancy */ + public void setMFAAllowedTimeDiscrepancy (int MFAAllowedTimeDiscrepancy) + { + set_Value (COLUMNNAME_MFAAllowedTimeDiscrepancy, Integer.valueOf(MFAAllowedTimeDiscrepancy)); + } + + /** Get Allowed Time Period Discrepancy. + @return Allowed Time Period Discrepancy */ + public int getMFAAllowedTimeDiscrepancy () + { + Integer ii = (Integer)get_Value(COLUMNNAME_MFAAllowedTimeDiscrepancy); + if (ii == null) + return 0; + return ii.intValue(); + } + + public org.compiere.model.I_AD_Element getMFA_ElementPrm() throws RuntimeException + { + return (org.compiere.model.I_AD_Element)MTable.get(getCtx(), org.compiere.model.I_AD_Element.Table_Name) + .getPO(getMFA_ElementPrm_ID(), get_TrxName()); } + + /** Set Parameter Element. + @param MFA_ElementPrm_ID Parameter Element */ + public void setMFA_ElementPrm_ID (int MFA_ElementPrm_ID) + { + if (MFA_ElementPrm_ID < 1) + set_Value (COLUMNNAME_MFA_ElementPrm_ID, null); + else + set_Value (COLUMNNAME_MFA_ElementPrm_ID, Integer.valueOf(MFA_ElementPrm_ID)); + } + + /** Get Parameter Element. + @return Parameter Element */ + public int getMFA_ElementPrm_ID () + { + Integer ii = (Integer)get_Value(COLUMNNAME_MFA_ElementPrm_ID); + if (ii == null) + return 0; + return ii.intValue(); + } + + /** Set Issuer. + @param MFAIssuer Issuer */ + public void setMFAIssuer (String MFAIssuer) + { + set_Value (COLUMNNAME_MFAIssuer, MFAIssuer); + } + + /** Get Issuer. + @return Issuer */ + public String getMFAIssuer () + { + return (String)get_Value(COLUMNNAME_MFAIssuer); + } + + /** Set MFA Method. + @param MFA_Method_ID + Multi-factor Authentication Method + */ + public void setMFA_Method_ID (int MFA_Method_ID) + { + if (MFA_Method_ID < 1) + set_ValueNoCheck (COLUMNNAME_MFA_Method_ID, null); + else + set_ValueNoCheck (COLUMNNAME_MFA_Method_ID, Integer.valueOf(MFA_Method_ID)); + } + + /** Get MFA Method. + @return Multi-factor Authentication Method + */ + public int getMFA_Method_ID () + { + Integer ii = (Integer)get_Value(COLUMNNAME_MFA_Method_ID); + if (ii == null) + return 0; + return ii.intValue(); + } + + /** Set MFA_Method_UU. + @param MFA_Method_UU MFA_Method_UU */ + public void setMFA_Method_UU (String MFA_Method_UU) + { + set_Value (COLUMNNAME_MFA_Method_UU, MFA_Method_UU); + } + + /** Get MFA_Method_UU. + @return MFA_Method_UU */ + public String getMFA_Method_UU () + { + return (String)get_Value(COLUMNNAME_MFA_Method_UU); + } + + /** MFATimeProvider AD_Reference_ID=200189 */ + public static final int MFATIMEPROVIDER_AD_Reference_ID=200189; + /** System = S */ + public static final String MFATIMEPROVIDER_System = "S"; + /** Ntp = N */ + public static final String MFATIMEPROVIDER_Ntp = "N"; + /** Set Time Provider. + @param MFATimeProvider Time Provider */ + public void setMFATimeProvider (String MFATimeProvider) + { + + set_Value (COLUMNNAME_MFATimeProvider, MFATimeProvider); + } + + /** Get Time Provider. + @return Time Provider */ + public String getMFATimeProvider () + { + return (String)get_Value(COLUMNNAME_MFATimeProvider); + } + + /** Set Time Server. + @param MFATimeServer Time Server */ + public void setMFATimeServer (String MFATimeServer) + { + set_Value (COLUMNNAME_MFATimeServer, MFATimeServer); + } + + /** Get Time Server. + @return Time Server */ + public String getMFATimeServer () + { + return (String)get_Value(COLUMNNAME_MFATimeServer); + } + + /** MFAType AD_Reference_ID=200188 */ + public static final int MFATYPE_AD_Reference_ID=200188; + /** Something you Know = K */ + public static final String MFATYPE_SomethingYouKnow = "K"; + /** Something you Have = H */ + public static final String MFATYPE_SomethingYouHave = "H"; + /** Something you Are (Biometrics) = A */ + public static final String MFATYPE_SomethingYouAreBiometrics = "A"; + /** Location = L */ + public static final String MFATYPE_Location = "L"; + /** Set MFA Type. + @param MFAType + Multi-factor authentication type (Something you Know/Have/Are, Location) + */ + public void setMFAType (String MFAType) + { + + set_Value (COLUMNNAME_MFAType, MFAType); + } + + /** Get MFA Type. + @return Multi-factor authentication type (Something you Know/Have/Are, Location) + */ + public String getMFAType () + { + return (String)get_Value(COLUMNNAME_MFAType); + } + + /** Set Name. + @param Name + Alphanumeric identifier of the entity + */ + public void setName (String Name) + { + set_Value (COLUMNNAME_Name, Name); + } + + /** Get Name. + @return Alphanumeric identifier of the entity + */ + public String getName () + { + return (String)get_Value(COLUMNNAME_Name); + } + + /** Get Record ID/ColumnName + @return ID/ColumnName pair + */ + public KeyNamePair getKeyNamePair() + { + return new KeyNamePair(get_ID(), getName()); + } + + public org.compiere.model.I_R_MailText getR_MailText() throws RuntimeException + { + return (org.compiere.model.I_R_MailText)MTable.get(getCtx(), org.compiere.model.I_R_MailText.Table_Name) + .getPO(getR_MailText_ID(), get_TrxName()); } + + /** Set Mail Template. + @param R_MailText_ID + Text templates for mailings + */ + public void setR_MailText_ID (int R_MailText_ID) + { + if (R_MailText_ID < 1) + set_Value (COLUMNNAME_R_MailText_ID, null); + else + set_Value (COLUMNNAME_R_MailText_ID, Integer.valueOf(R_MailText_ID)); + } + + /** Get Mail Template. + @return Text templates for mailings + */ + public int getR_MailText_ID () + { + Integer ii = (Integer)get_Value(COLUMNNAME_R_MailText_ID); + if (ii == null) + return 0; + return ii.intValue(); + } +} \ No newline at end of file diff --git a/org.adempiere.base/src/org/compiere/model/X_MFA_RegisteredDevice.java b/org.adempiere.base/src/org/compiere/model/X_MFA_RegisteredDevice.java new file mode 100644 index 0000000000..84f725fe85 --- /dev/null +++ b/org.adempiere.base/src/org/compiere/model/X_MFA_RegisteredDevice.java @@ -0,0 +1,187 @@ +/****************************************************************************** + * Product: iDempiere ERP & CRM Smart Business Solution * + * Copyright (C) 1999-2012 ComPiere, Inc. All Rights Reserved. * + * This program is free software, you can redistribute it and/or modify it * + * under the terms version 2 of the GNU General Public License as published * + * by the Free Software Foundation. This program is distributed in the hope * + * that it will be useful, but WITHOUT ANY WARRANTY, without even the implied * + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * + * See the GNU General Public License for more details. * + * You should have received a copy of the GNU General Public License along * + * with this program, if not, write to the Free Software Foundation, Inc., * + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. * + * For the text or an alternative of this public license, you may reach us * + * ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA * + * or via info@compiere.org or http://www.compiere.org/license.html * + *****************************************************************************/ +/** Generated Model - DO NOT CHANGE */ +package org.compiere.model; + +import java.sql.ResultSet; +import java.sql.Timestamp; +import java.util.Properties; + +/** Generated Model for MFA_RegisteredDevice + * @author iDempiere (generated) + * @version Release 8.2 - $Id$ */ +public class X_MFA_RegisteredDevice extends PO implements I_MFA_RegisteredDevice, I_Persistent +{ + + /** + * + */ + private static final long serialVersionUID = 20210605L; + + /** Standard Constructor */ + public X_MFA_RegisteredDevice (Properties ctx, int MFA_RegisteredDevice_ID, String trxName) + { + super (ctx, MFA_RegisteredDevice_ID, trxName); + /** if (MFA_RegisteredDevice_ID == 0) + { + setAD_User_ID (0); + setMFADeviceIdentifier (null); + setMFA_RegisteredDevice_ID (0); + } */ + } + + /** Load Constructor */ + public X_MFA_RegisteredDevice (Properties ctx, ResultSet rs, String trxName) + { + super (ctx, rs, trxName); + } + + /** AccessLevel + * @return 6 - System - Client + */ + protected int get_AccessLevel() + { + return accessLevel.intValue(); + } + + /** Load Meta Data */ + protected POInfo initPO (Properties ctx) + { + POInfo poi = POInfo.getPOInfo (ctx, Table_ID, get_TrxName()); + return poi; + } + + public String toString() + { + StringBuilder sb = new StringBuilder ("X_MFA_RegisteredDevice[") + .append(get_ID()).append("]"); + return sb.toString(); + } + + public org.compiere.model.I_AD_User getAD_User() throws RuntimeException + { + return (org.compiere.model.I_AD_User)MTable.get(getCtx(), org.compiere.model.I_AD_User.Table_Name) + .getPO(getAD_User_ID(), get_TrxName()); } + + /** Set User/Contact. + @param AD_User_ID + User within the system - Internal or Business Partner Contact + */ + public void setAD_User_ID (int AD_User_ID) + { + if (AD_User_ID < 1) + set_Value (COLUMNNAME_AD_User_ID, null); + else + set_Value (COLUMNNAME_AD_User_ID, Integer.valueOf(AD_User_ID)); + } + + /** Get User/Contact. + @return User within the system - Internal or Business Partner Contact + */ + public int getAD_User_ID () + { + Integer ii = (Integer)get_Value(COLUMNNAME_AD_User_ID); + if (ii == null) + return 0; + return ii.intValue(); + } + + /** Set Expire On. + @param Expiration + Expire On + */ + public void setExpiration (Timestamp Expiration) + { + set_Value (COLUMNNAME_Expiration, Expiration); + } + + /** Get Expire On. + @return Expire On + */ + public Timestamp getExpiration () + { + return (Timestamp)get_Value(COLUMNNAME_Expiration); + } + + /** Set Comment/Help. + @param Help + Comment or Hint + */ + public void setHelp (String Help) + { + set_Value (COLUMNNAME_Help, Help); + } + + /** Get Comment/Help. + @return Comment or Hint + */ + public String getHelp () + { + return (String)get_Value(COLUMNNAME_Help); + } + + /** Set MFA Device Identifier. + @param MFADeviceIdentifier + Multi-factor Authentication Device Identifier + */ + public void setMFADeviceIdentifier (String MFADeviceIdentifier) + { + set_Value (COLUMNNAME_MFADeviceIdentifier, MFADeviceIdentifier); + } + + /** Get MFA Device Identifier. + @return Multi-factor Authentication Device Identifier + */ + public String getMFADeviceIdentifier () + { + return (String)get_Value(COLUMNNAME_MFADeviceIdentifier); + } + + /** Set MFA Registered Device. + @param MFA_RegisteredDevice_ID MFA Registered Device */ + public void setMFA_RegisteredDevice_ID (int MFA_RegisteredDevice_ID) + { + if (MFA_RegisteredDevice_ID < 1) + set_ValueNoCheck (COLUMNNAME_MFA_RegisteredDevice_ID, null); + else + set_ValueNoCheck (COLUMNNAME_MFA_RegisteredDevice_ID, Integer.valueOf(MFA_RegisteredDevice_ID)); + } + + /** Get MFA Registered Device. + @return MFA Registered Device */ + public int getMFA_RegisteredDevice_ID () + { + Integer ii = (Integer)get_Value(COLUMNNAME_MFA_RegisteredDevice_ID); + if (ii == null) + return 0; + return ii.intValue(); + } + + /** Set MFA_RegisteredDevice_UU. + @param MFA_RegisteredDevice_UU MFA_RegisteredDevice_UU */ + public void setMFA_RegisteredDevice_UU (String MFA_RegisteredDevice_UU) + { + set_Value (COLUMNNAME_MFA_RegisteredDevice_UU, MFA_RegisteredDevice_UU); + } + + /** Get MFA_RegisteredDevice_UU. + @return MFA_RegisteredDevice_UU */ + public String getMFA_RegisteredDevice_UU () + { + return (String)get_Value(COLUMNNAME_MFA_RegisteredDevice_UU); + } +} \ No newline at end of file diff --git a/org.adempiere.base/src/org/compiere/model/X_MFA_Registration.java b/org.adempiere.base/src/org/compiere/model/X_MFA_Registration.java new file mode 100644 index 0000000000..29be5c31bd --- /dev/null +++ b/org.adempiere.base/src/org/compiere/model/X_MFA_Registration.java @@ -0,0 +1,391 @@ +/****************************************************************************** + * Product: iDempiere ERP & CRM Smart Business Solution * + * Copyright (C) 1999-2012 ComPiere, Inc. All Rights Reserved. * + * This program is free software, you can redistribute it and/or modify it * + * under the terms version 2 of the GNU General Public License as published * + * by the Free Software Foundation. This program is distributed in the hope * + * that it will be useful, but WITHOUT ANY WARRANTY, without even the implied * + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * + * See the GNU General Public License for more details. * + * You should have received a copy of the GNU General Public License along * + * with this program, if not, write to the Free Software Foundation, Inc., * + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. * + * For the text or an alternative of this public license, you may reach us * + * ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA * + * or via info@compiere.org or http://www.compiere.org/license.html * + *****************************************************************************/ +/** Generated Model - DO NOT CHANGE */ +package org.compiere.model; + +import java.sql.ResultSet; +import java.sql.Timestamp; +import java.util.Properties; +import org.compiere.util.KeyNamePair; + +/** Generated Model for MFA_Registration + * @author iDempiere (generated) + * @version Release 8.2 - $Id$ */ +public class X_MFA_Registration extends PO implements I_MFA_Registration, I_Persistent +{ + + /** + * + */ + private static final long serialVersionUID = 20210607L; + + /** Standard Constructor */ + public X_MFA_Registration (Properties ctx, int MFA_Registration_ID, String trxName) + { + super (ctx, MFA_Registration_ID, trxName); + /** if (MFA_Registration_ID == 0) + { + setAD_User_ID (0); + setIsUserMFAPreferred (false); +// N + setIsValid (false); +// N + setMFA_Method_ID (0); + setMFA_Registration_ID (0); + } */ + } + + /** Load Constructor */ + public X_MFA_Registration (Properties ctx, ResultSet rs, String trxName) + { + super (ctx, rs, trxName); + } + + /** AccessLevel + * @return 6 - System - Client + */ + protected int get_AccessLevel() + { + return accessLevel.intValue(); + } + + /** Load Meta Data */ + protected POInfo initPO (Properties ctx) + { + POInfo poi = POInfo.getPOInfo (ctx, Table_ID, get_TrxName()); + return poi; + } + + public String toString() + { + StringBuilder sb = new StringBuilder ("X_MFA_Registration[") + .append(get_ID()).append(",Name=").append(getName()).append("]"); + return sb.toString(); + } + + public org.compiere.model.I_AD_User getAD_User() throws RuntimeException + { + return (org.compiere.model.I_AD_User)MTable.get(getCtx(), org.compiere.model.I_AD_User.Table_Name) + .getPO(getAD_User_ID(), get_TrxName()); } + + /** Set User/Contact. + @param AD_User_ID + User within the system - Internal or Business Partner Contact + */ + public void setAD_User_ID (int AD_User_ID) + { + if (AD_User_ID < 1) + set_Value (COLUMNNAME_AD_User_ID, null); + else + set_Value (COLUMNNAME_AD_User_ID, Integer.valueOf(AD_User_ID)); + } + + /** Get User/Contact. + @return User within the system - Internal or Business Partner Contact + */ + public int getAD_User_ID () + { + Integer ii = (Integer)get_Value(COLUMNNAME_AD_User_ID); + if (ii == null) + return 0; + return ii.intValue(); + } + + /** Set Expire On. + @param Expiration + Expire On + */ + public void setExpiration (Timestamp Expiration) + { + set_Value (COLUMNNAME_Expiration, Expiration); + } + + /** Get Expire On. + @return Expire On + */ + public Timestamp getExpiration () + { + return (Timestamp)get_Value(COLUMNNAME_Expiration); + } + + /** Set Failed Login Count. + @param FailedLoginCount Failed Login Count */ + public void setFailedLoginCount (int FailedLoginCount) + { + set_ValueNoCheck (COLUMNNAME_FailedLoginCount, Integer.valueOf(FailedLoginCount)); + } + + /** Get Failed Login Count. + @return Failed Login Count */ + public int getFailedLoginCount () + { + Integer ii = (Integer)get_Value(COLUMNNAME_FailedLoginCount); + if (ii == null) + return 0; + return ii.intValue(); + } + + /** Set Comment/Help. + @param Help + Comment or Hint + */ + public void setHelp (String Help) + { + set_Value (COLUMNNAME_Help, Help); + } + + /** Get Comment/Help. + @return Comment or Hint + */ + public String getHelp () + { + return (String)get_Value(COLUMNNAME_Help); + } + + /** Set Preferred. + @param IsUserMFAPreferred Preferred */ + public void setIsUserMFAPreferred (boolean IsUserMFAPreferred) + { + set_Value (COLUMNNAME_IsUserMFAPreferred, Boolean.valueOf(IsUserMFAPreferred)); + } + + /** Get Preferred. + @return Preferred */ + public boolean isUserMFAPreferred () + { + Object oo = get_Value(COLUMNNAME_IsUserMFAPreferred); + if (oo != null) + { + if (oo instanceof Boolean) + return ((Boolean)oo).booleanValue(); + return "Y".equals(oo); + } + return false; + } + + /** Set Valid. + @param IsValid + Element is valid + */ + public void setIsValid (boolean IsValid) + { + set_Value (COLUMNNAME_IsValid, Boolean.valueOf(IsValid)); + } + + /** Get Valid. + @return Element is valid + */ + public boolean isValid () + { + Object oo = get_Value(COLUMNNAME_IsValid); + if (oo != null) + { + if (oo instanceof Boolean) + return ((Boolean)oo).booleanValue(); + return "Y".equals(oo); + } + return false; + } + + /** Set Last Failure. + @param LastFailure Last Failure */ + public void setLastFailure (Timestamp LastFailure) + { + set_Value (COLUMNNAME_LastFailure, LastFailure); + } + + /** Get Last Failure. + @return Last Failure */ + public Timestamp getLastFailure () + { + return (Timestamp)get_Value(COLUMNNAME_LastFailure); + } + + /** Set Last Success. + @param LastSuccess Last Success */ + public void setLastSuccess (Timestamp LastSuccess) + { + set_Value (COLUMNNAME_LastSuccess, LastSuccess); + } + + /** Get Last Success. + @return Last Success */ + public Timestamp getLastSuccess () + { + return (Timestamp)get_Value(COLUMNNAME_LastSuccess); + } + + /** Set Last MFA Secret. + @param MFALastSecret Last MFA Secret */ + public void setMFALastSecret (String MFALastSecret) + { + set_Value (COLUMNNAME_MFALastSecret, MFALastSecret); + } + + /** Get Last MFA Secret. + @return Last MFA Secret */ + public String getMFALastSecret () + { + return (String)get_Value(COLUMNNAME_MFALastSecret); + } + + public org.compiere.model.I_MFA_Method getMFA_Method() throws RuntimeException + { + return (org.compiere.model.I_MFA_Method)MTable.get(getCtx(), org.compiere.model.I_MFA_Method.Table_Name) + .getPO(getMFA_Method_ID(), get_TrxName()); } + + /** Set MFA Method. + @param MFA_Method_ID + Multi-factor Authentication Method + */ + public void setMFA_Method_ID (int MFA_Method_ID) + { + if (MFA_Method_ID < 1) + set_Value (COLUMNNAME_MFA_Method_ID, null); + else + set_Value (COLUMNNAME_MFA_Method_ID, Integer.valueOf(MFA_Method_ID)); + } + + /** Get MFA Method. + @return Multi-factor Authentication Method + */ + public int getMFA_Method_ID () + { + Integer ii = (Integer)get_Value(COLUMNNAME_MFA_Method_ID); + if (ii == null) + return 0; + return ii.intValue(); + } + + /** Set MFA Registration. + @param MFA_Registration_ID MFA Registration */ + public void setMFA_Registration_ID (int MFA_Registration_ID) + { + if (MFA_Registration_ID < 1) + set_ValueNoCheck (COLUMNNAME_MFA_Registration_ID, null); + else + set_ValueNoCheck (COLUMNNAME_MFA_Registration_ID, Integer.valueOf(MFA_Registration_ID)); + } + + /** Get MFA Registration. + @return MFA Registration */ + public int getMFA_Registration_ID () + { + Integer ii = (Integer)get_Value(COLUMNNAME_MFA_Registration_ID); + if (ii == null) + return 0; + return ii.intValue(); + } + + /** Set MFA_Registration_UU. + @param MFA_Registration_UU MFA_Registration_UU */ + public void setMFA_Registration_UU (String MFA_Registration_UU) + { + set_Value (COLUMNNAME_MFA_Registration_UU, MFA_Registration_UU); + } + + /** Get MFA_Registration_UU. + @return MFA_Registration_UU */ + public String getMFA_Registration_UU () + { + return (String)get_Value(COLUMNNAME_MFA_Registration_UU); + } + + /** Set MFA Secret. + @param MFASecret + Multi-factor Authentication Secret + */ + public void setMFASecret (String MFASecret) + { + set_Value (COLUMNNAME_MFASecret, MFASecret); + } + + /** Get MFA Secret. + @return Multi-factor Authentication Secret + */ + public String getMFASecret () + { + return (String)get_Value(COLUMNNAME_MFASecret); + } + + /** Set Unregistered at. + @param MFAUnregisteredAt Unregistered at */ + public void setMFAUnregisteredAt (Timestamp MFAUnregisteredAt) + { + set_Value (COLUMNNAME_MFAUnregisteredAt, MFAUnregisteredAt); + } + + /** Get Unregistered at. + @return Unregistered at */ + public Timestamp getMFAUnregisteredAt () + { + return (Timestamp)get_Value(COLUMNNAME_MFAUnregisteredAt); + } + + /** Set Validated at. + @param MFAValidatedAt Validated at */ + public void setMFAValidatedAt (Timestamp MFAValidatedAt) + { + set_Value (COLUMNNAME_MFAValidatedAt, MFAValidatedAt); + } + + /** Get Validated at. + @return Validated at */ + public Timestamp getMFAValidatedAt () + { + return (Timestamp)get_Value(COLUMNNAME_MFAValidatedAt); + } + + /** Set Name. + @param Name + Alphanumeric identifier of the entity + */ + public void setName (String Name) + { + set_Value (COLUMNNAME_Name, Name); + } + + /** Get Name. + @return Alphanumeric identifier of the entity + */ + public String getName () + { + return (String)get_Value(COLUMNNAME_Name); + } + + /** Get Record ID/ColumnName + @return ID/ColumnName pair + */ + public KeyNamePair getKeyNamePair() + { + return new KeyNamePair(get_ID(), getName()); + } + + /** Set Parameter Value. + @param ParameterValue Parameter Value */ + public void setParameterValue (String ParameterValue) + { + set_Value (COLUMNNAME_ParameterValue, ParameterValue); + } + + /** Get Parameter Value. + @return Parameter Value */ + public String getParameterValue () + { + return (String)get_Value(COLUMNNAME_ParameterValue); + } +} \ No newline at end of file diff --git a/org.adempiere.base/src/org/compiere/model/X_MFA_Rule.java b/org.adempiere.base/src/org/compiere/model/X_MFA_Rule.java new file mode 100644 index 0000000000..b9cabf29ff --- /dev/null +++ b/org.adempiere.base/src/org/compiere/model/X_MFA_Rule.java @@ -0,0 +1,154 @@ +/****************************************************************************** + * Product: iDempiere ERP & CRM Smart Business Solution * + * Copyright (C) 1999-2012 ComPiere, Inc. All Rights Reserved. * + * This program is free software, you can redistribute it and/or modify it * + * under the terms version 2 of the GNU General Public License as published * + * by the Free Software Foundation. This program is distributed in the hope * + * that it will be useful, but WITHOUT ANY WARRANTY, without even the implied * + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * + * See the GNU General Public License for more details. * + * You should have received a copy of the GNU General Public License along * + * with this program, if not, write to the Free Software Foundation, Inc., * + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. * + * For the text or an alternative of this public license, you may reach us * + * ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA * + * or via info@compiere.org or http://www.compiere.org/license.html * + *****************************************************************************/ +/** Generated Model - DO NOT CHANGE */ +package org.compiere.model; + +import java.sql.ResultSet; +import java.util.Properties; + +/** Generated Model for MFA_Rule + * @author iDempiere (generated) + * @version Release 8.2 - $Id$ */ +public class X_MFA_Rule extends PO implements I_MFA_Rule, I_Persistent +{ + + /** + * + */ + private static final long serialVersionUID = 20210605L; + + /** Standard Constructor */ + public X_MFA_Rule (Properties ctx, int MFA_Rule_ID, String trxName) + { + super (ctx, MFA_Rule_ID, trxName); + /** if (MFA_Rule_ID == 0) + { + setMFA_Method_ID (0); + setMFA_Rule_ID (0); + } */ + } + + /** Load Constructor */ + public X_MFA_Rule (Properties ctx, ResultSet rs, String trxName) + { + super (ctx, rs, trxName); + } + + /** AccessLevel + * @return 6 - System - Client + */ + protected int get_AccessLevel() + { + return accessLevel.intValue(); + } + + /** Load Meta Data */ + protected POInfo initPO (Properties ctx) + { + POInfo poi = POInfo.getPOInfo (ctx, Table_ID, get_TrxName()); + return poi; + } + + public String toString() + { + StringBuilder sb = new StringBuilder ("X_MFA_Rule[") + .append(get_ID()).append("]"); + return sb.toString(); + } + + /** Set Comment/Help. + @param Help + Comment or Hint + */ + public void setHelp (String Help) + { + set_Value (COLUMNNAME_Help, Help); + } + + /** Get Comment/Help. + @return Comment or Hint + */ + public String getHelp () + { + return (String)get_Value(COLUMNNAME_Help); + } + + public org.compiere.model.I_MFA_Method getMFA_Method() throws RuntimeException + { + return (org.compiere.model.I_MFA_Method)MTable.get(getCtx(), org.compiere.model.I_MFA_Method.Table_Name) + .getPO(getMFA_Method_ID(), get_TrxName()); } + + /** Set MFA Method. + @param MFA_Method_ID + Multi-factor Authentication Method + */ + public void setMFA_Method_ID (int MFA_Method_ID) + { + if (MFA_Method_ID < 1) + set_ValueNoCheck (COLUMNNAME_MFA_Method_ID, null); + else + set_ValueNoCheck (COLUMNNAME_MFA_Method_ID, Integer.valueOf(MFA_Method_ID)); + } + + /** Get MFA Method. + @return Multi-factor Authentication Method + */ + public int getMFA_Method_ID () + { + Integer ii = (Integer)get_Value(COLUMNNAME_MFA_Method_ID); + if (ii == null) + return 0; + return ii.intValue(); + } + + /** Set MFA Rule. + @param MFA_Rule_ID + Multi-factor Authentication Rule + */ + public void setMFA_Rule_ID (int MFA_Rule_ID) + { + if (MFA_Rule_ID < 1) + set_ValueNoCheck (COLUMNNAME_MFA_Rule_ID, null); + else + set_ValueNoCheck (COLUMNNAME_MFA_Rule_ID, Integer.valueOf(MFA_Rule_ID)); + } + + /** Get MFA Rule. + @return Multi-factor Authentication Rule + */ + public int getMFA_Rule_ID () + { + Integer ii = (Integer)get_Value(COLUMNNAME_MFA_Rule_ID); + if (ii == null) + return 0; + return ii.intValue(); + } + + /** Set MFA_Rule_UU. + @param MFA_Rule_UU MFA_Rule_UU */ + public void setMFA_Rule_UU (String MFA_Rule_UU) + { + set_Value (COLUMNNAME_MFA_Rule_UU, MFA_Rule_UU); + } + + /** Get MFA_Rule_UU. + @return MFA_Rule_UU */ + public String getMFA_Rule_UU () + { + return (String)get_Value(COLUMNNAME_MFA_Rule_UU); + } +} \ No newline at end of file diff --git a/org.adempiere.base/src/org/compiere/process/MFACompleteRegistration.java b/org.adempiere.base/src/org/compiere/process/MFACompleteRegistration.java new file mode 100644 index 0000000000..5c17ba1db3 --- /dev/null +++ b/org.adempiere.base/src/org/compiere/process/MFACompleteRegistration.java @@ -0,0 +1,103 @@ +/*********************************************************************** + * This file is part of iDempiere ERP Open Source * + * http://www.idempiere.org * + * * + * Copyright (C) Contributors * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License * + * as published by the Free Software Foundation; either version 2 * + * of the License, or (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the Free Software * + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * + * MA 02110-1301, USA. * + * * + * Sponsor: * + * - FH * + * Contributors: * + * - Carlos Ruiz * + **********************************************************************/ +package org.compiere.process; + +import java.sql.Timestamp; +import java.util.logging.Level; + +import org.adempiere.exceptions.AdempiereException; +import org.compiere.model.IMFAMechanism; +import org.compiere.model.MMFAMethod; +import org.compiere.model.MMFARegistration; +import org.compiere.util.Msg; +import org.compiere.util.Util; + +/** + * IDEMPIERE-4782 + * @author Carlos Ruiz - globalqss - BX Service + */ +public class MFACompleteRegistration extends SvrProcess { + /* MFA Registration */ + private int p_MFA_Registration_ID = 0; + /* Validation Code */ + private String p_MFAValidationCode = null; + /* Name */ + private String p_Name = null; + /* Preferred */ + private boolean p_IsUserMFAPreferred = false; + + @Override + protected void prepare() { + for (ProcessInfoParameter para : getParameter()) { + String name = para.getParameterName(); + switch (name) { + case "MFA_Registration_ID": p_MFA_Registration_ID = para.getParameterAsInt(); break; + case "MFAValidationCode": p_MFAValidationCode = para.getParameterAsString(); break; + case "Name": p_Name = para.getParameterAsString(); break; + case "IsUserMFAPreferred": p_IsUserMFAPreferred = para.getParameterAsBoolean(); break; + default: + if (log.isLoggable(Level.INFO)) + log.log(Level.INFO, "Custom Parameter: " + name + "=" + para.getInfo()); + break; + } + } + } + + /** + * Perform process. + * @return Message + * @throws Exception + */ + protected String doIt() throws Exception { + if (log.isLoggable(Level.INFO)) + log.info("MFA_Registration_ID=" + p_MFA_Registration_ID + + ", MFAValidationCode=" + p_MFAValidationCode + + ", Name=" + p_Name + + ", IsUserMFAPreferred=" + p_IsUserMFAPreferred); + + MMFARegistration reg = new MMFARegistration(getCtx(), p_MFA_Registration_ID, get_TrxName()); + if (reg.isValid()) + throw new AdempiereException(Msg.getMsg(getCtx(), "MFARegistrationAlreadyValid")); + + if (Util.isEmpty(p_MFAValidationCode)) + throw new AdempiereException(Msg.getMsg(getCtx(), "MFACodeRequired")); + + Timestamp now = new Timestamp(System.currentTimeMillis()); + if (reg.getExpiration() != null && now.after(reg.getExpiration())) { + reg.setIsActive(false); + reg.saveEx(null); + throw new AdempiereException(Msg.getMsg(getCtx(), "MFARegistrationExpired")); + } + + MMFAMethod method = new MMFAMethod(getCtx(), reg.getMFA_Method_ID(), get_TrxName()); + IMFAMechanism mechanism = method.getMFAMechanism(); + + String msg = mechanism.complete(getCtx(), reg, p_MFAValidationCode, p_Name, p_IsUserMFAPreferred, get_TrxName()); + return msg; + } + +} // RegisterMFA diff --git a/org.adempiere.base/src/org/compiere/process/MFARegister.java b/org.adempiere.base/src/org/compiere/process/MFARegister.java new file mode 100644 index 0000000000..4bd9706ccc --- /dev/null +++ b/org.adempiere.base/src/org/compiere/process/MFARegister.java @@ -0,0 +1,103 @@ +/*********************************************************************** + * This file is part of iDempiere ERP Open Source * + * http://www.idempiere.org * + * * + * Copyright (C) Contributors * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License * + * as published by the Free Software Foundation; either version 2 * + * of the License, or (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the Free Software * + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * + * MA 02110-1301, USA. * + * * + * Sponsor: * + * - FH * + * Contributors: * + * - Carlos Ruiz * + **********************************************************************/ + +package org.compiere.process; + +import java.util.logging.Level; + +import org.compiere.model.IMFAMechanism; +import org.compiere.model.MMFAMethod; +import org.compiere.model.MMFARegistration; +import org.compiere.util.AdempiereSystemError; +import org.compiere.util.Msg; + +/** + * IDEMPIERE-4782 + * @author Carlos Ruiz - globalqss - BX Service + */ +public class MFARegister extends SvrProcess { + + /* MFA Method */ + private int p_MFA_Method_ID = 0; + /* Parameter Value */ + private String p_ParameterValue = null; + + /* Return array from mechanism */ + protected Object[] retArray; + + @Override + protected void prepare() { + for (ProcessInfoParameter para : getParameter()) { + String name = para.getParameterName(); + switch (name) { + case "MFA_Method_ID": p_MFA_Method_ID = para.getParameterAsInt(); break; + case "ParameterValue": p_ParameterValue = para.getParameterAsString(); break; + default: + if (log.isLoggable(Level.INFO)) + log.log(Level.INFO, "Custom Parameter: " + name + "=" + para.getInfo()); + break; + } + } + } + + /** + * Perform process. + * @return Message + * @throws Exception + */ + protected String doIt() throws Exception { + if (log.isLoggable(Level.INFO)) + log.info("MFA_Method_ID=" + p_MFA_Method_ID + + ", ParameterValue=" + p_ParameterValue); + + MMFAMethod method = new MMFAMethod(getCtx(), p_MFA_Method_ID, get_TrxName()); + IMFAMechanism mechanism = method.getMFAMechanism(); + + retArray = mechanism.register(getCtx(), method, p_ParameterValue, get_TrxName()); + if (retArray == null || retArray.length == 0 || ! (retArray[0] instanceof String) ) + throw new AdempiereSystemError("Wrong return from mechanism.validate"); + + if (processUI == null) { + for (int i = 0; i < retArray.length; i++) { + if (retArray[i] instanceof String) { + String reti = (String) retArray[i]; + if (reti.startsWith("data:image/png;base64,")) + addLog(""); // show QR code + else + addLog((String) reti); + } else if (retArray[i] instanceof MMFARegistration) { + MMFARegistration reg = (MMFARegistration) retArray[i]; + addLog(0, null, null, Msg.parseTranslation(getCtx(), "@Created@: @MFA_Registration_ID@"), MMFARegistration.Table_ID, reg.getMFA_Registration_ID()); + } + } + } + // else -> when the process is driven by zkwebui it will show the MFARegisterForm next, no need to save the parameters + + return "@OK@"; + } + +} // MFARegister diff --git a/org.adempiere.base/src/org/compiere/process/MFARevokeDevice.java b/org.adempiere.base/src/org/compiere/process/MFARevokeDevice.java new file mode 100644 index 0000000000..e141840efb --- /dev/null +++ b/org.adempiere.base/src/org/compiere/process/MFARevokeDevice.java @@ -0,0 +1,96 @@ +/*********************************************************************** + * This file is part of iDempiere ERP Open Source * + * http://www.idempiere.org * + * * + * Copyright (C) Contributors * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License * + * as published by the Free Software Foundation; either version 2 * + * of the License, or (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the Free Software * + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * + * MA 02110-1301, USA. * + * * + * Sponsor: * + * - FH * + * Contributors: * + * - Carlos Ruiz * + **********************************************************************/ + +package org.compiere.process; + +import java.util.ArrayList; +import java.util.List; +import java.util.logging.Level; + +import org.compiere.model.MMFARegisteredDevice; +import org.compiere.model.Query; +import org.compiere.util.Env; + +/** + * IDEMPIERE-4782 + * @author Carlos Ruiz - globalqss - BX Service + */ +public class MFARevokeDevice extends SvrProcess { + + /* Revoke All */ + private Boolean p_MFARevokeAll = null; + /* MFA Registered Device */ + private int p_MFA_RegisteredDevice_ID = 0; + + @Override + protected void prepare() { + for (ProcessInfoParameter para : getParameter()) { + String name = para.getParameterName(); + switch (name) { + case "MFARevokeAll": p_MFARevokeAll = para.getParameterAsBoolean(); break; + case "MFA_RegisteredDevice_ID": p_MFA_RegisteredDevice_ID = para.getParameterAsInt(); break; + default: + if (log.isLoggable(Level.INFO)) + log.log(Level.INFO, "Custom Parameter: " + name + "=" + para.getInfo()); + break; + } + } + } + + /** + * Perform process. + * @return Message + * @throws Exception + */ + protected String doIt() throws Exception { + if (log.isLoggable(Level.INFO)) + log.info("MFARevokeAll=" + p_MFARevokeAll + + ", MFA_RegisteredDevice_ID=" + p_MFA_RegisteredDevice_ID); + + String where; + List params = new ArrayList(); + params.add(Env.getAD_User_ID(getCtx())); + if (p_MFARevokeAll) { + where = "AD_User_ID=?"; + } else { + where = "AD_User_ID=? AND (MFA_RegisteredDevice_ID=? OR Expiration<=SYSDATE)"; + params.add(p_MFA_RegisteredDevice_ID); + } + List rds = new Query(getCtx(), MMFARegisteredDevice.Table_Name, where, get_TrxName()) + .setOnlyActiveRecords(true) + .setClient_ID() + .setParameters(params) + .list(); + for (MMFARegisteredDevice rd : rds) { + rd.setIsActive(false); + rd.saveEx(); + } + + return "@OK@"; + } + +} // MFARevokeDevice diff --git a/org.adempiere.base/src/org/compiere/process/MFAUnregister.java b/org.adempiere.base/src/org/compiere/process/MFAUnregister.java new file mode 100644 index 0000000000..ce106b9a5a --- /dev/null +++ b/org.adempiere.base/src/org/compiere/process/MFAUnregister.java @@ -0,0 +1,75 @@ +/*********************************************************************** + * This file is part of iDempiere ERP Open Source * + * http://www.idempiere.org * + * * + * Copyright (C) Contributors * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License * + * as published by the Free Software Foundation; either version 2 * + * of the License, or (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the Free Software * + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * + * MA 02110-1301, USA. * + * * + * Sponsor: * + * - FH * + * Contributors: * + * - Carlos Ruiz * + **********************************************************************/ + +package org.compiere.process; + +import java.sql.Timestamp; +import java.util.logging.Level; + +import org.compiere.model.MMFARegistration; + +/** + * IDEMPIERE-4782 + * @author Carlos Ruiz - globalqss - BX Service + */ +public class MFAUnregister extends SvrProcess { + + /* MFA Registration */ + private int p_MFA_Registration_ID = 0; + + @Override + protected void prepare() { + for (ProcessInfoParameter para : getParameter()) { + String name = para.getParameterName(); + switch (name) { + case "MFA_Registration_ID": p_MFA_Registration_ID = para.getParameterAsInt(); break; + default: + if (log.isLoggable(Level.INFO)) + log.log(Level.INFO, "Custom Parameter: " + name + "=" + para.getInfo()); + break; + } + } + } + + /** + * Perform process. + * @return Message + * @throws Exception + */ + protected String doIt() throws Exception { + if (log.isLoggable(Level.INFO)) + log.info("MFA_Registration_ID=" + p_MFA_Registration_ID); + + MMFARegistration reg = new MMFARegistration(getCtx(), p_MFA_Registration_ID, get_TrxName()); + reg.setIsActive(false); + reg.setMFAUnregisteredAt(new Timestamp(System.currentTimeMillis())); + reg.saveEx(); + + return "@OK@"; + } + +} // MFAUnregister diff --git a/org.adempiere.base/src/org/compiere/util/Login.java b/org.adempiere.base/src/org/compiere/util/Login.java index c894925343..41c8694e5b 100644 --- a/org.adempiere.base/src/org/compiere/util/Login.java +++ b/org.adempiere.base/src/org/compiere/util/Login.java @@ -38,6 +38,8 @@ import org.compiere.model.MAcctSchema; import org.compiere.model.MClientInfo; import org.compiere.model.MCountry; +import org.compiere.model.MMFARegisteredDevice; +import org.compiere.model.MMFARegistration; import org.compiere.model.MRole; import org.compiere.model.MSysConfig; import org.compiere.model.MSystem; @@ -1666,5 +1668,18 @@ public KeyNamePair[] getClients() { } return retValue; } - + + /** + * Validate if MFA is required taking into account the registerCookie and the IPAddress + * @param registerCookie + * @return + */ + public boolean isMFARequired(String registerCookie) { + if (registerCookie != null && MMFARegisteredDevice.isValid(registerCookie)) + return false; + if (MMFARegistration.userHasValidRegistration()) + return true; + return false; + } + } // Login diff --git a/org.adempiere.base/src/org/idempiere/mfa/EMailMechanism.java b/org.adempiere.base/src/org/idempiere/mfa/EMailMechanism.java new file mode 100644 index 0000000000..60b1b34658 --- /dev/null +++ b/org.adempiere.base/src/org/idempiere/mfa/EMailMechanism.java @@ -0,0 +1,290 @@ +/*********************************************************************** + * This file is part of iDempiere ERP Open Source * + * http://www.idempiere.org * + * * + * Copyright (C) Contributors * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License * + * as published by the Free Software Foundation; either version 2 * + * of the License, or (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the Free Software * + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * + * MA 02110-1301, USA. * + * * + * Contributors: * + * - Carlos Ruiz (sponsored by FH) * + **********************************************************************/ + +package org.idempiere.mfa; + +import java.sql.Timestamp; +import java.util.Properties; +import java.util.Random; + +import org.adempiere.exceptions.AdempiereException; +import org.compiere.model.IMFAMechanism; +import org.compiere.model.MClient; +import org.compiere.model.MMFAMethod; +import org.compiere.model.MMFARegistration; +import org.compiere.model.MMailText; +import org.compiere.model.MUser; +import org.compiere.model.PO; +import org.compiere.util.EMail; +import org.compiere.util.Env; +import org.compiere.util.Msg; +import org.compiere.util.Util; + +public class EMailMechanism implements IMFAMechanism { + + /** + * Implement the registration mechanism for EMail Generate random code and + * return in the array + * + * @param ctx + * @param method + * @param prm email + * @param trxName + * @return Object[] - first object is the String with the instructions to follow + * second object is the registration generated + */ + @Override + public Object[] register(Properties ctx, MMFAMethod method, String prm, String trxName) { + if (Util.isEmpty(prm)) + throw new AdempiereException(Msg.getMsg(ctx, "MFAEMailRequired")); + if (!EMail.validate(prm)) + throw new AdempiereException(Msg.getMsg(ctx, "MFAInvalidEMail")); + if (method.getR_MailText_ID() <= 0) + throw new AdempiereException("EMail method wrongly configured - requires mail template"); + + // just one time allowed per EMail + if (MMFARegistration.alreadyExistsValid(method, prm)) + throw new AdempiereException(Msg.getMsg(ctx, "MFAMethodAlreadyRegistered")); + + // Generate a random code and save it in MFA_Registration + String otp = generateRandomString(6); + + int expireMinutes = method.getExpireInMinutes(); + if (expireMinutes <= 0) + expireMinutes = 15; // default to 15 minutes + + MUser user = MUser.get(ctx); + MMFARegistration reg = new MMFARegistration(ctx, 0, trxName); + reg.setName(obfuscateEMail(prm)); + reg.setParameterValue(prm); + reg.setMFA_Method_ID(method.getMFA_Method_ID()); + reg.setAD_User_ID(user.getAD_User_ID()); + reg.setMFASecret(otp); + reg.setIsValid(false); + reg.setIsUserMFAPreferred(false); + reg.setExpiration(new Timestamp(System.currentTimeMillis() + (expireMinutes * 60000))); + reg.saveEx(); + + // send the email + MClient client = MClient.get(ctx); + MMailText mt = new MMailText(ctx, method.getR_MailText_ID(), trxName); + mt.setLanguage(Env.getContext(ctx, "#AD_Language")); + mt.setUser(user.getAD_User_ID()); + mt.setPO(reg); + String message = mt.getMailText(true); + EMail email = client.createEMail(prm, mt.getMailHeader(), message, mt.isHtml()); + if (mt.isHtml()) + email.setMessageHTML(mt.getMailHeader(), message); + else { + email.setSubject(mt.getMailHeader()); + email.setMessageText(message); + } + if (!email.isValid() && !email.isValid(true)) + throw new AdempiereException("The EMail is not valid, check configuration"); + if (!EMail.SENT_OK.equals(email.send())) + throw new AdempiereException(Msg.getMsg(ctx, "MFAProblemSendingEMail")); + + // Invalidate any other previous pending registration with same method and email + MMFARegistration.invalidatePreviousPending(method, prm, reg); + + // Notify the user to check the email for the code + Object[] ret = new Object[2]; + ret[0] = Msg.getMsg(Env.getCtx(), "MFAEMailCodeSent"); + ret[1] = reg; + return ret; + } + + /** + * Generates a numeric random string of the specified length + * + * @param len + * @return random String + */ + public static String generateRandomString(int len) { + // String chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; // if upper alphanumeric is wanted + String chars = "0123456789"; + Random rnd = new Random(); + StringBuilder sb = new StringBuilder(len); + for (int i = 0; i < len; i++) + sb.append(chars.charAt(rnd.nextInt(chars.length()))); + return sb.toString(); + } + + /** + * Complete/Validate a previous EMail registration + * + * @param ctx + * @param reg The registration object + * @param p_MFAValidationCode The code to be validated + * @param p_Name Optional - a name to assign the registration + * @param get_TrxName + * @return msg A message indicating success, errors throw exception + */ + @Override + public String complete(Properties ctx, MMFARegistration reg, String code, String name, boolean preferred, String trxName) { + boolean valid = code.equals(reg.getMFASecret()); + if (! valid) { + reg.setLastFailure(new Timestamp(System.currentTimeMillis())); + reg.setFailedLoginCount(reg.getFailedLoginCount() + 1); + try { + PO.setCrossTenantSafe(); + reg.saveEx(); + } finally { + PO.clearCrossTenantSafe(); + } + throw new AdempiereException(Msg.getMsg(ctx, "MFACodeInvalid")); + } + + // valid code + reg.setMFALastSecret(code); + reg.setLastSuccess(new Timestamp(System.currentTimeMillis())); + reg.setFailedLoginCount(0); + reg.setIsValid(true); + reg.setMFAValidatedAt(new Timestamp(System.currentTimeMillis())); + reg.setExpiration(null); + if (!Util.isEmpty(name)) + reg.setName(name); + if (preferred) + reg.setIsUserMFAPreferred(true); + try { + PO.setCrossTenantSafe(); + reg.saveEx(); + } finally { + PO.clearCrossTenantSafe(); + } + + return Msg.getMsg(ctx, "MFARegistrationCompleted"); + } + + /** + * Send email with validation code + * @param reg + * @return + */ + @Override + public String generateValidationCode(MMFARegistration reg) { + Properties ctx = reg.getCtx(); + MMFAMethod method = new MMFAMethod(ctx, reg.getMFA_Method_ID(), reg.get_TrxName()); + + // Generate a random code and save it in MFA_Registration + String otp = generateRandomString(6); + + int expireMinutes = method.getExpireInMinutes(); + if (expireMinutes <= 0) + expireMinutes = 15; // default to 15 minutes + + MUser user = MUser.get(reg.getCtx()); + reg.setMFASecret(otp); + reg.setExpiration(new Timestamp(System.currentTimeMillis() + (expireMinutes * 60000))); + try { + PO.setCrossTenantSafe(); + reg.saveEx(); + } finally { + PO.clearCrossTenantSafe(); + } + + String mail_to = reg.getParameterValue(); + // send the email + MClient client = MClient.get(ctx); + MMailText mt = new MMailText(ctx, method.getR_MailText_ID(), reg.get_TrxName()); + mt.setLanguage(Env.getContext(ctx, "#AD_Language")); + mt.setUser(user.getAD_User_ID()); + mt.setPO(reg); + String message = mt.getMailText(true); + EMail email = client.createEMail(mail_to, mt.getMailHeader(), message, mt.isHtml()); + if (mt.isHtml()) + email.setMessageHTML(mt.getMailHeader(), message); + else { + email.setSubject(mt.getMailHeader()); + email.setMessageText(message); + } + if (!email.isValid() && !email.isValid(true)) + throw new AdempiereException("The EMail is not valid, check configuration"); + if (!EMail.SENT_OK.equals(email.send())) + throw new AdempiereException(Msg.getMsg(ctx, "MFAProblemSendingEMail")); + + return Msg.getMsg(Env.getCtx(), "MFAEMailValidationCodeSent", new Object[] { obfuscateEMail(mail_to) }); + } + + /** + * Replace internal characters in email with * + * @param mail + * @return + */ + private String obfuscateEMail(String mail) { + StringBuilder mailObfuscated = new StringBuilder(); + boolean atFound = false; + for (int idx = 0; idx < mail.length(); idx++) { + char chr = mail.charAt(idx); + if (chr == '@') { + atFound = true; + } else if ((!atFound && idx > 1) || (atFound && idx < mail.length() - 4)) { + chr = '*'; + } + mailObfuscated.append(chr); + } + return mailObfuscated.toString(); + } + + /** + * Validate a code + * @param reg + * @param code + * @param setPreferred + * @return message on error, null when OK + */ + @Override + public String validateCode(MMFARegistration reg, String code, boolean setPreferred) { + Properties ctx = reg.getCtx(); + Timestamp now = new Timestamp(System.currentTimeMillis()); + if (reg.getExpiration() != null && now.after(reg.getExpiration())) + return Msg.getMsg(ctx, "MFARegistrationExpired"); + if (code.equals(reg.getMFALastSecret())) + return Msg.getMsg(ctx, "MFACodeAlreadyConsumed"); + + boolean valid = code.equals(reg.getMFASecret()); + if (! valid) { + reg.setLastFailure(new Timestamp(System.currentTimeMillis())); + reg.setFailedLoginCount(reg.getFailedLoginCount() + 1); + reg.saveEx(); + return Msg.getMsg(ctx, "MFACodeInvalid"); + } + + reg.setMFALastSecret(code); + reg.setLastSuccess(new Timestamp(System.currentTimeMillis())); + reg.setFailedLoginCount(0); + if (setPreferred) + reg.setIsUserMFAPreferred(true); + try { + PO.setCrossTenantSafe(); + reg.saveEx(); + } finally { + PO.clearCrossTenantSafe(); + } + + return null; + } + +} diff --git a/org.adempiere.base/src/org/idempiere/mfa/TOTPMechanism.java b/org.adempiere.base/src/org/idempiere/mfa/TOTPMechanism.java new file mode 100644 index 0000000000..a307ea8fc7 --- /dev/null +++ b/org.adempiere.base/src/org/idempiere/mfa/TOTPMechanism.java @@ -0,0 +1,255 @@ +/*********************************************************************** + * This file is part of iDempiere ERP Open Source * + * http://www.idempiere.org * + * * + * Copyright (C) Contributors * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License * + * as published by the Free Software Foundation; either version 2 * + * of the License, or (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the Free Software * + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * + * MA 02110-1301, USA. * + * * + * Contributors: * + * - Carlos Ruiz (sponsored by FH) * + **********************************************************************/ + +package org.idempiere.mfa; + +import static dev.samstevens.totp.util.Utils.getDataUriForImage; + +import java.net.UnknownHostException; +import java.sql.Timestamp; +import java.util.Properties; + +import org.adempiere.exceptions.AdempiereException; +import org.compiere.model.IMFAMechanism; +import org.compiere.model.MMFAMethod; +import org.compiere.model.MMFARegistration; +import org.compiere.model.MSysConfig; +import org.compiere.model.MUser; +import org.compiere.model.PO; +import org.compiere.util.Env; +import org.compiere.util.Msg; +import org.compiere.util.Util; + +import dev.samstevens.totp.code.CodeGenerator; +import dev.samstevens.totp.code.DefaultCodeGenerator; +import dev.samstevens.totp.code.DefaultCodeVerifier; +import dev.samstevens.totp.exceptions.QrGenerationException; +import dev.samstevens.totp.qr.QrData; +import dev.samstevens.totp.qr.QrGenerator; +import dev.samstevens.totp.qr.ZxingPngQrGenerator; +import dev.samstevens.totp.secret.DefaultSecretGenerator; +import dev.samstevens.totp.secret.SecretGenerator; +import dev.samstevens.totp.time.NtpTimeProvider; +import dev.samstevens.totp.time.SystemTimeProvider; +import dev.samstevens.totp.time.TimeProvider; + +public class TOTPMechanism implements IMFAMechanism { + + /** + * Implement the registration mechanism for TOTP + * Generate the secret and the qrcode and return in the array + * @param ctx + * @param method + * @param prm optional - assigned name from the user + * @param trxName + * @return Object[] - first object is the String with the instructions to follow + * second object is the registration generated + * third message qrcode + * fourth qrcode + * fifth message secret + * sixth secret + */ + @Override + public Object[] register(Properties ctx, MMFAMethod method, String prm, String trxName) { + if (Util.isEmpty(method.getMFAIssuer())) + throw new AdempiereException(Msg.getMsg(ctx, "MFATOTPIssuerRequired")); + + if (MMFARegistration.alreadyExistsValid(method, prm)) + throw new AdempiereException(Msg.getMsg(ctx, "MFAMethodAlreadyRegistered")); + + MUser user = MUser.get(ctx); + String label; + boolean email_login = MSysConfig.getBooleanValue(MSysConfig.USE_EMAIL_FOR_LOGIN, false); + if (email_login) + label = user.getEMail(); + else + label = user.getName(); + + SecretGenerator secretGenerator = new DefaultSecretGenerator(); + String secret = secretGenerator.generate(); + + QrData data = new QrData.Builder() + .label(label) + .secret(secret) + .issuer(method.getMFAIssuer()) + .build(); + + QrGenerator generator = new ZxingPngQrGenerator(); + byte[] imageData; + try { + imageData = generator.generate(data); + } catch (QrGenerationException e) { + throw new AdempiereException(Msg.getMsg(Env.getCtx(), "MFATOTPErrorGeneratingQR"), e); + } + String mimeType = generator.getImageMimeType(); + String dataUri = getDataUriForImage(imageData, mimeType); + + int expireMinutes = method.getExpireInMinutes(); + + MMFARegistration reg = new MMFARegistration(ctx, 0, trxName); + if (! Util.isEmpty(prm)) { + reg.setName(prm); + reg.setParameterValue(prm); + } else { + reg.setName(label); + } + reg.setMFA_Method_ID(method.getMFA_Method_ID()); + reg.setAD_User_ID(user.getAD_User_ID()); + reg.setMFASecret(secret); + reg.setIsValid(false); + reg.setIsUserMFAPreferred(false); + if (expireMinutes > 0) + reg.setExpiration(new Timestamp(System.currentTimeMillis() + (expireMinutes*60000))); + reg.saveEx(); + + // Invalidate any other previous pending registration with same method + MMFARegistration.invalidatePreviousPending(method, prm, reg); + + // Notify the user that TOTP mechanism was registered and follow next step + Object[] ret = new Object[6]; + ret[0] = Msg.getMsg(Env.getCtx(), "MFATOTPRegistered"); + ret[1] = reg; + ret[2] = Msg.getMsg(Env.getCtx(), "MFATOTPImage"); + ret[3] = dataUri; + ret[4] = Msg.getMsg(Env.getCtx(), "MFATOTPSecret"); + ret[5] = secret; + + return ret; + } + + /** + * Complete/Validate a previous TOTP registration + * @param ctx + * @param reg The registration object + * @param p_MFAValidationCode The code to be validated + * @param p_Name Optional - a name to assign the registration + * @param trxName + * @return msg A message indicating success, errors throw exception + */ + @Override + public String complete(Properties ctx, MMFARegistration reg, String code, String name, boolean preferred, String trxName) { + if (! isValidCode(ctx, reg, code, trxName)) + throw new AdempiereException(Msg.getMsg(ctx, "MFACodeInvalid")); + + // valid code + reg.setIsValid(true); + reg.setMFAValidatedAt(new Timestamp(System.currentTimeMillis())); + reg.setExpiration(null); + if (!Util.isEmpty(name)) + reg.setName(name); + if (preferred) + reg.setIsUserMFAPreferred(true); + reg.saveEx(); + + return Msg.getMsg(ctx, "MFARegistrationCompleted"); + } + + /** + * @param reg + * @param code + * @param trxName + * @return + */ + private boolean isValidCode(Properties ctx, MMFARegistration reg, String code, String trxName) { + MMFAMethod method = new MMFAMethod(ctx, reg.getMFA_Method_ID(), trxName); + TimeProvider timeProvider; + if (MMFAMethod.MFATIMEPROVIDER_Ntp.equals(method.getMFATimeProvider())) { + String ntpServer = method.getMFATimeServer(); + if (Util.isEmpty(ntpServer)) + ntpServer = "pool.ntp.org"; + int timeout = MSysConfig.getIntValue(MSysConfig.MFA_NTP_TIMEOUT_IN_MILLISECONDS, 5000); + try { + timeProvider = new NtpTimeProvider(ntpServer, timeout); + } catch (UnknownHostException e) { + throw new AdempiereException(Msg.getMsg(ctx, "MFANTPServerError") + e.getLocalizedMessage(), e); + } + } else { // default to System + timeProvider = new SystemTimeProvider(); + } + CodeGenerator codeGenerator = new DefaultCodeGenerator(); + DefaultCodeVerifier verifier = new DefaultCodeVerifier(codeGenerator, timeProvider); + if (method.getMFAAllowedTimeDiscrepancy() > 0) { + // allow codes valid for the time periods configured before/after to pass as valid (default is 1) + verifier.setAllowedTimePeriodDiscrepancy(method.getMFAAllowedTimeDiscrepancy()); + } + + boolean valid = verifier.isValidCode(reg.getMFASecret(), code); + if (valid) { + reg.setMFALastSecret(code); + reg.setLastSuccess(new Timestamp(System.currentTimeMillis())); + reg.setFailedLoginCount(0); + } else { + reg.setLastFailure(new Timestamp(System.currentTimeMillis())); + reg.setFailedLoginCount(reg.getFailedLoginCount() + 1); + } + try { + PO.setCrossTenantSafe(); + reg.saveEx(); + } finally { + PO.clearCrossTenantSafe(); + } + return valid; + } + + /** + * Generate a validation code - do nothing for TOTP + * @param reg + * @return + */ + @Override + public String generateValidationCode(MMFARegistration reg) { + return Msg.getMsg(Env.getCtx(), "MFATOTPEnterValidationCode"); + } + + /** + * Validate a code + * @param reg + * @param code + * @param setPreferred + * @return message on error, null when OK + */ + @Override + public String validateCode(MMFARegistration reg, String code, boolean setPreferred) { + Properties ctx = reg.getCtx(); + if (code.equals(reg.getMFALastSecret())) + return Msg.getMsg(ctx, "MFACodeAlreadyConsumed"); + + if (! isValidCode(ctx, reg, code, reg.get_TrxName())) + return Msg.getMsg(ctx, "MFACodeInvalid"); + + if (setPreferred) { + reg.setIsUserMFAPreferred(true); + try { + PO.setCrossTenantSafe(); + reg.saveEx(); + } finally { + PO.clearCrossTenantSafe(); + } + } + + return null; + } + +} diff --git a/org.adempiere.install/install.app.launch b/org.adempiere.install/install.app.launch index 074ec7a417..1dbc74c1c8 100644 --- a/org.adempiere.install/install.app.launch +++ b/org.adempiere.install/install.app.launch @@ -97,6 +97,8 @@ + + diff --git a/org.adempiere.install/install.console.app.launch b/org.adempiere.install/install.console.app.launch index a9249196c9..187975d213 100644 --- a/org.adempiere.install/install.console.app.launch +++ b/org.adempiere.install/install.console.app.launch @@ -94,6 +94,8 @@ + + diff --git a/org.adempiere.install/install.silent.app.launch b/org.adempiere.install/install.silent.app.launch index 28896eec9d..29eb37d1a5 100644 --- a/org.adempiere.install/install.silent.app.launch +++ b/org.adempiere.install/install.silent.app.launch @@ -94,6 +94,8 @@ + + diff --git a/org.adempiere.server-feature/server.product.functionaltest.launch b/org.adempiere.server-feature/server.product.functionaltest.launch index 8e51223884..b5f16f0f3b 100644 --- a/org.adempiere.server-feature/server.product.functionaltest.launch +++ b/org.adempiere.server-feature/server.product.functionaltest.launch @@ -370,6 +370,8 @@ + + diff --git a/org.adempiere.server-feature/server.product.launch b/org.adempiere.server-feature/server.product.launch index e58b970d74..5accbcf01e 100644 --- a/org.adempiere.server-feature/server.product.launch +++ b/org.adempiere.server-feature/server.product.launch @@ -371,6 +371,8 @@ + + diff --git a/org.adempiere.server-feature/setup/configuration/config.ini b/org.adempiere.server-feature/setup/configuration/config.ini index ee3c1bcbdc..0c5aeb0b37 100644 --- a/org.adempiere.server-feature/setup/configuration/config.ini +++ b/org.adempiere.server-feature/setup/configuration/config.ini @@ -79,7 +79,9 @@ osgi.bundles=org.eclipse.equinox.ds@1:start,\ org.apache.geronimo.specs.geronimo-j2ee-management_1.1_spec,\ jakarta.xml.bind-api,\ org.eclipse.osgi@start,\ - org.dom4j + org.dom4j,\ + wrapped.com.google.zxing.javase,\ + wrapped.dev.samstevens.totp.totp osgi.framework.extensions= osgi.bundles.defaultStartLevel=4 osgi.compatibility.bootdelegation=true diff --git a/org.adempiere.ui.zk/OSGI-INF/mfaregisterparameterslistener.xml b/org.adempiere.ui.zk/OSGI-INF/mfaregisterparameterslistener.xml new file mode 100644 index 0000000000..3cac82a624 --- /dev/null +++ b/org.adempiere.ui.zk/OSGI-INF/mfaregisterparameterslistener.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/MFARegisterForm.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/MFARegisterForm.java new file mode 100644 index 0000000000..b6997c3aa1 --- /dev/null +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/MFARegisterForm.java @@ -0,0 +1,250 @@ +/*********************************************************************** + * This file is part of iDempiere ERP Open Source * + * http://www.idempiere.org * + * * + * Copyright (C) Contributors * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License * + * as published by the Free Software Foundation; either version 2 * + * of the License, or (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the Free Software * + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * + * MA 02110-1301, USA. * + * * + * Sponsor: * + * - FH * + * Contributors: * + * - Carlos Ruiz * + **********************************************************************/ + +package org.adempiere.webui.apps.form; + +import java.sql.Timestamp; + +import org.adempiere.webui.component.Checkbox; +import org.adempiere.webui.component.Column; +import org.adempiere.webui.component.Columns; +import org.adempiere.webui.component.ConfirmPanel; +import org.adempiere.webui.component.GridFactory; +import org.adempiere.webui.component.Label; +import org.adempiere.webui.component.Row; +import org.adempiere.webui.component.Rows; +import org.adempiere.webui.component.Textbox; +import org.adempiere.webui.panel.ADForm; +import org.compiere.model.IMFAMechanism; +import org.compiere.model.MMFAMethod; +import org.compiere.model.MMFARegistration; +import org.compiere.util.Env; +import org.compiere.util.Msg; +import org.compiere.util.Util; +import org.zkoss.zk.ui.WrongValueException; +import org.zkoss.zk.ui.event.Event; +import org.zkoss.zk.ui.event.Events; +import org.zkoss.zul.Grid; +import org.zkoss.zul.Html; +import org.zkoss.zul.Separator; +import org.zkoss.zul.Space; + +/** + * IDEMPIERE-4782 + * @author Carlos Ruiz - globalqss - BX Service + */ +public class MFARegisterForm extends ADForm { + /** + * + */ + private static final long serialVersionUID = 6186035815377577281L; + + /* A label to show the messages to user */ + private Html msgInstructions; + + /* A label to show the additional messages to user */ + private Html msgAdditional; + + /* A box to receive the validation code */ + private Label codeLabel; + private Textbox codeBox; + + /* A box to receive optionally a name */ + private Label nameLabel; + private Textbox nameBox; + + /* A checkbox to set registration as preferred */ + private Checkbox prefBox; + + /* The confirm panel to close the window */ + private ConfirmPanel confirmPanel; + + /* The process instance opening this form */ + @SuppressWarnings("unused") + private int pInstanceId; + + private MMFARegistration registration = null; + + /** + * + */ + public MFARegisterForm() { + } + + /* (non-Javadoc) + * @see org.adempiere.webui.panel.ADForm#initForm() + */ + @Override + protected void initForm() { + setClosable(true); + setSizable(true); + + Grid grid = GridFactory.newGridLayout(); + grid.setHeight("100%"); + grid.setWidth("100%"); + appendChild(grid); + Columns columns = new Columns(); + grid.appendChild(columns); + Column column = new Column(); + column.setWidth("5%"); + columns.appendChild(column); + column = new Column(); + column.setWidth("30%"); + columns.appendChild(column); + column = new Column(); + column.setWidth("60%"); + columns.appendChild(column); + column = new Column(); + column.setWidth("10%"); + columns.appendChild(column); + + Rows rows = new Rows(); + grid.appendChild(rows); + + Row row = rows.newRow(); + row = rows.newRow(); + msgInstructions = new Html(); + row.appendCellChild(msgInstructions, 4); + msgInstructions.setHflex("1"); + + row = rows.newRow(); + msgAdditional = new Html(); + row.appendCellChild(msgAdditional, 4); + msgAdditional.setHflex("1"); + + row = rows.newRow(); + codeLabel = new Label(Msg.getElement(Env.getCtx(), "MFAValidationCode")); + row.appendCellChild(codeLabel, 2); + codeBox = new Textbox(); + row.appendCellChild(codeBox, 2); + + row = rows.newRow(); + nameLabel = new Label(Msg.getElement(Env.getCtx(), "Name")); + row.appendCellChild(nameLabel, 2); + nameBox = new Textbox(); + row.appendCellChild(nameBox, 2); + + row = rows.newRow(); + row.appendCellChild(new Separator(), 2); + prefBox = new Checkbox(); + prefBox.setLabel(Msg.getElement(Env.getCtx(), "IsUserMFAPreferred")); + row.appendCellChild(prefBox, 2); + + row = rows.newRow(); + confirmPanel = new ConfirmPanel(true); + row.appendCellChild(new Space()); + row.appendCellChild(confirmPanel, 3); + confirmPanel.addActionListener(Events.ON_CLICK, evt -> onConfirmPanelAction(evt)); + + //setHeight("600px"); + setHeight(null); + setWidth("350px"); + setVflex("min"); + + } + + /** + * Set Window Mode Highlighted + */ + @Override + public Mode getWindowMode() { + return Mode.HIGHLIGHTED; + } + + /** + * Confirm panel to process OK/Cancel buttons + * @param evt + */ + private void onConfirmPanelAction(Event evt) { + if (evt.getTarget() == confirmPanel.getButton(ConfirmPanel.A_CANCEL)) { + this.detach(); + } else if (evt.getTarget() == confirmPanel.getButton(ConfirmPanel.A_OK)) { + if (codeBox.isDisabled()) + this.detach(); + + if (Util.isEmpty(codeBox.getValue())) + throw new WrongValueException(codeBox, Msg.getMsg(Env.getCtx(), "MFACodeRequired")); + + Timestamp now = new Timestamp(System.currentTimeMillis()); + if (registration.getExpiration() != null && now.after(registration.getExpiration())) + throw new WrongValueException(codeBox, Msg.getMsg(Env.getCtx(), "MFARegistrationExpired")); + + MMFAMethod method = new MMFAMethod(Env.getCtx(), registration.getMFA_Method_ID(), registration.get_TrxName()); + IMFAMechanism mechanism = method.getMFAMechanism(); + + String msg; + try { + msg = mechanism.complete(Env.getCtx(), registration, codeBox.getValue(), nameBox.getValue(), prefBox.isChecked(), registration.get_TrxName()); + } catch (Exception e) { + String err; + if (! Util.isEmpty(e.getLocalizedMessage())) + err = e.getLocalizedMessage(); + else + err = Msg.getMsg(Env.getCtx(), "Error") + " = " + e.toString(); + throw new WrongValueException(codeBox, err); + } + codeBox.setDisabled(true); + nameBox.setDisabled(true); + prefBox.setDisabled(true); + msgInstructions.setContent(msg); + msgAdditional.setContent(null); + + confirmPanel.getButton(ConfirmPanel.A_CANCEL).setDisabled(true); + confirmPanel.getButton(ConfirmPanel.A_CANCEL).setVisible(false); + } + } + + /** + * + * @param retArray + * @param pInstanceId + */ + public void completeRegistration(Object[] retArray, int pInstanceId) { + this.pInstanceId = pInstanceId; + + String instructions = retArray[0].toString(); + StringBuilder additionalInstructions = new StringBuilder(); + for (int i = 1; i < retArray.length; i++) { + if (retArray[i] instanceof String) { + if (additionalInstructions.length() > 0) + additionalInstructions.append("
"); + String reti = (String) retArray[i]; + if (reti.startsWith("data:image/png;base64,")) + additionalInstructions.append(""); // show QR code + else + additionalInstructions.append(reti.toString()); + } else if (retArray[i] instanceof MMFARegistration) { + registration = (MMFARegistration) retArray[i]; + } + } + msgInstructions.setContent(instructions); + msgAdditional.setContent(additionalInstructions.toString()); + nameBox.setValue(registration.getName()); + registration.set_TrxName(null); // this is post-process, the transaction from the process was already closed + } + +} diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/desktop/DefaultDesktop.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/desktop/DefaultDesktop.java index 9e707c81e0..74113d2843 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/desktop/DefaultDesktop.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/desktop/DefaultDesktop.java @@ -806,7 +806,9 @@ public void logout() { sideController.onLogOut(); sideController = null; } - layout.detach(); + if (layout != null) { + layout.detach(); + } layout = null; pnlHead = null; max = null; diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/LoginPanel.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/LoginPanel.java index c000719df1..98f2582e24 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/LoginPanel.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/LoginPanel.java @@ -125,6 +125,9 @@ public class LoginPanel extends Window implements EventListener protected ConfirmPanel pnlButtons; protected boolean email_login = MSysConfig.getBooleanValue(MSysConfig.USE_EMAIL_FOR_LOGIN, false); protected String validLstLanguage = null; + + /* Number of failures to calculate an incremental delay on every trial */ + private int failures = 0; public LoginPanel(Properties ctx, LoginWindow loginWindow) { @@ -592,6 +595,11 @@ public void validateLogin() } logAuthFailure.log(x_Forward_IP, "/webui", userId, loginErrMsg); + // Incremental delay to avoid brute-force attack on testing codes + try { + Thread.sleep(failures * 2000); + } catch (InterruptedException e) {} + failures++; Clients.clearBusy(); throw new WrongValueException(loginErrMsg); } diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/RolePanel.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/RolePanel.java index fb11139ae4..30749a4e8a 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/RolePanel.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/RolePanel.java @@ -26,8 +26,6 @@ import java.sql.Timestamp; import java.util.Properties; -import javax.servlet.http.HttpSession; - import org.adempiere.util.Callback; import org.adempiere.webui.AdempiereIdGenerator; import org.adempiere.webui.LayoutUtils; @@ -52,15 +50,12 @@ import org.compiere.util.Language; import org.compiere.util.Login; import org.compiere.util.Msg; -import org.compiere.util.TimeUtil; import org.compiere.util.Util; import org.zkoss.zhtml.Table; import org.zkoss.zhtml.Td; import org.zkoss.zhtml.Tr; import org.zkoss.zk.au.out.AuFocus; import org.zkoss.zk.au.out.AuScript; -import org.zkoss.zk.ui.Executions; -import org.zkoss.zk.ui.Session; import org.zkoss.zk.ui.WrongValueException; import org.zkoss.zk.ui.event.Deferrable; import org.zkoss.zk.ui.event.Event; @@ -85,7 +80,7 @@ public class RolePanel extends Window implements EventListener, Deferrabl /** * */ - private static final long serialVersionUID = -4763398859555693370L; + private static final long serialVersionUID = -618446343598384819L; protected LoginWindow wndLogin; protected Login login; @@ -638,17 +633,6 @@ else if(lstItemOrg == null || lstItemOrg.getValue() == null) Timestamp date = (Timestamp)lstDate.getValue(); String msg = login.loadPreferences(orgKNPair, warehouseKNPair, date, null); - if (Util.isEmpty(msg)) - { - - Session currSess = Executions.getCurrent().getDesktop().getSession(); - HttpSession httpSess = (HttpSession) currSess.getNativeSession(); - int timeout = MSysConfig.getIntValue(MSysConfig.ZK_SESSION_TIMEOUT_IN_SECONDS, -2, Env.getAD_Client_ID(Env.getCtx()), Env.getAD_Org_ID(Env.getCtx())); - if (timeout != -2) // default to -2 meaning not set - httpSess.setMaxInactiveInterval(timeout); - - msg = login.validateLogin(orgKNPair); - } if (! Util.isEmpty(msg)) { Env.getCtx().clear(); @@ -661,38 +645,29 @@ public void onCallback(Integer result) { return; } - // See if a popup should encourage user to change its password - if (!MUser.get(Env.getCtx()).isNoPasswordReset()) { - int notifyDay = MSysConfig.getIntValue(MSysConfig.USER_LOCKING_PASSWORD_NOTIFY_DAY, 0); - int pwdAgeDay = MSysConfig.getIntValue(MSysConfig.USER_LOCKING_MAX_PASSWORD_AGE_DAY, 0); - if (notifyDay > 0 && pwdAgeDay > 0) { - Timestamp limit = TimeUtil.addDays(MUser.get(Env.getCtx()).getDatePasswordChanged(), pwdAgeDay); - Timestamp notifyAfter = TimeUtil.addDays(limit, -notifyDay); - Timestamp now = TimeUtil.getDay(null); - - if (now.after(notifyAfter)) - FDialog.warn(0, null, "", Msg.getMsg(Env.getCtx(), "YourPasswordWillExpireInDays", new Object[] {TimeUtil.getDaysBetween(now, limit)})); - } - } - - wndLogin.loginCompleted(); - - // Elaine 2009/02/06 save preference to AD_Preference - UserPreference userPreference = SessionManager.getSessionApplication().getUserPreference(); - userPreference.setProperty(UserPreference.P_LANGUAGE, Env.getContext(m_ctx, UserPreference.LANGUAGE_NAME)); - userPreference.setProperty(UserPreference.P_ROLE, (String) lstItemRole.getValue()); - userPreference.setProperty(UserPreference.P_CLIENT, (String) lstItemClient.getValue()); - userPreference.setProperty(UserPreference.P_ORG, (String) lstItemOrg.getValue()); - userPreference.setProperty(UserPreference.P_WAREHOUSE, lstItemWarehouse != null ? (String) lstItemWarehouse.getValue() : "0"); - userPreference.savePreference(); - - //force reload of default role when more than 1 client - if (lstClient.getChildren().size() > 1) - MRole.getDefault(m_ctx, true); - // + // Elaine 2009/02/06 save preference to AD_Preference + UserPreference userPreference = SessionManager.getSessionApplication().getUserPreference(); + userPreference.setProperty(UserPreference.P_LANGUAGE, Env.getContext(m_ctx, UserPreference.LANGUAGE_NAME)); + userPreference.setProperty(UserPreference.P_ROLE, (String) lstItemRole.getValue()); + userPreference.setProperty(UserPreference.P_CLIENT, (String) lstItemClient.getValue()); + userPreference.setProperty(UserPreference.P_ORG, (String) lstItemOrg.getValue()); + userPreference.setProperty(UserPreference.P_WAREHOUSE, + lstItemWarehouse != null ? (String) lstItemWarehouse.getValue() : "0"); + userPreference.savePreference(); + + // force reload of default role when more than 1 client + if (lstClient.getChildren().size() > 1) + MRole.getDefault(m_ctx, true); + // + + wndLogin.validateMFA(orgKNPair); } public boolean isDeferrable() { return false; } + + public boolean show() { + return m_show; + } } diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/ValidateMFAPanel.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/ValidateMFAPanel.java new file mode 100644 index 0000000000..54c5cc3385 --- /dev/null +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/ValidateMFAPanel.java @@ -0,0 +1,439 @@ +/*********************************************************************** + * This file is part of iDempiere ERP Open Source * + * http://www.idempiere.org * + * * + * Copyright (C) Contributors * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License * + * as published by the Free Software Foundation; either version 2 * + * of the License, or (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the Free Software * + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * + * MA 02110-1301, USA. * + * * + * Contributors: * + * - Carlos Ruiz (sponsored by FH) * + **********************************************************************/ + +package org.adempiere.webui.panel; + +import java.sql.Timestamp; +import java.util.Properties; +import java.util.UUID; +import java.util.logging.Level; + +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import org.adempiere.util.Callback; +import org.adempiere.util.LogAuthFailure; +import org.adempiere.webui.AdempiereIdGenerator; +import org.adempiere.webui.LayoutUtils; +import org.adempiere.webui.component.ComboItem; +import org.adempiere.webui.component.Combobox; +import org.adempiere.webui.component.ConfirmPanel; +import org.adempiere.webui.component.Label; +import org.adempiere.webui.component.Textbox; +import org.adempiere.webui.component.Window; +import org.adempiere.webui.session.SessionManager; +import org.adempiere.webui.theme.ITheme; +import org.adempiere.webui.theme.ThemeManager; +import org.adempiere.webui.util.ZKUpdateUtil; +import org.adempiere.webui.window.FDialog; +import org.adempiere.webui.window.LoginWindow; +import org.compiere.model.MMFAMethod; +import org.compiere.model.MMFARegisteredDevice; +import org.compiere.model.MMFARegistration; +import org.compiere.model.MSysConfig; +import org.compiere.model.MUser; +import org.compiere.util.CLogger; +import org.compiere.util.Env; +import org.compiere.util.KeyNamePair; +import org.compiere.util.Login; +import org.compiere.util.Msg; +import org.compiere.util.TimeUtil; +import org.compiere.util.Util; +import org.zkoss.zhtml.Div; +import org.zkoss.zhtml.Table; +import org.zkoss.zhtml.Td; +import org.zkoss.zhtml.Tr; +import org.zkoss.zk.au.out.AuFocus; +import org.zkoss.zk.ui.Executions; +import org.zkoss.zk.ui.Session; +import org.zkoss.zk.ui.WrongValueException; +import org.zkoss.zk.ui.event.Event; +import org.zkoss.zk.ui.event.EventListener; +import org.zkoss.zk.ui.event.Events; +import org.zkoss.zk.ui.util.Clients; +import org.zkoss.zul.Checkbox; +import org.zkoss.zul.Image; + +public class ValidateMFAPanel extends Window implements EventListener { + /** + * + */ + private static final long serialVersionUID = 5521412080450156787L; + + private static final CLogger logger = CLogger.getCLogger(ValidateMFAPanel.class); + + private static final String ON_DEFER_LOGOUT = "onDeferLogout"; + + protected LoginWindow wndLogin; + protected Login login; + private ValidateMFAPanel component; + + /** Context */ + protected Properties m_ctx; + + protected boolean m_show = true; + + protected Label lblMFAMechanism; + protected Combobox lstMFAMechanism; + protected Label lblMFAMsg; + protected Label lblValidationCode; + protected Textbox txtValidationCode; + protected Checkbox chkSetPreferred; + protected Checkbox chkRegisterDevice = null; + + private KeyNamePair m_orgKNPair; + + /* Push the first OK automatically - when the first record is TOTP */ + private boolean m_autoCall = false; + + private static LogAuthFailure logAuthFailure = new LogAuthFailure(); + + /* Number of failures to calculate an incremental delay on every trial */ + private int failures = 0; + + public ValidateMFAPanel(Properties ctx, LoginWindow loginWindow, KeyNamePair orgKNPair) { + this.wndLogin = loginWindow; + m_ctx = ctx; + this.m_orgKNPair = orgKNPair; + this.component = this; + + String cookieName = Env.getAD_User_ID(m_ctx) + "|" + Env.getAD_Client_ID(m_ctx); + String registerCookie = getCookie(cookieName); + login = new Login(ctx); + if (login.isMFARequired(registerCookie)) { + initComponents(); + init(); + this.setId("validateMFAPanel"); + this.setSclass("login-box"); + + AuFocus auf = new AuFocus(lstMFAMechanism); + Clients.response(auf); + + if (m_autoCall) { + validateMFAComplete(true); + } + + } else { + if (logger.isLoggable(Level.INFO)) logger.info("MFA not required"); + validateMFAComplete(false); + } + + } + + private void init() { + Div div = new Div(); + div.setSclass(ITheme.LOGIN_BOX_HEADER_CLASS); + Label label = new Label(Msg.getMsg(m_ctx, "MFALoginValidationHeader")); + label.setSclass(ITheme.LOGIN_BOX_HEADER_TXT_CLASS); + div.appendChild(label); + this.appendChild(div); + + Table table = new Table(); + table.setId("grdMFAValidate"); + table.setDynamicProperty("cellpadding", "0"); + table.setDynamicProperty("cellspacing", "5"); + table.setSclass(ITheme.LOGIN_BOX_BODY_CLASS); + + this.appendChild(table); + + Tr tr = new Tr(); + table.appendChild(tr); + Td td = new Td(); + td.setSclass(ITheme.LOGIN_BOX_HEADER_LOGO_CLASS); + tr.appendChild(td); + td.setDynamicProperty("colspan", "2"); + Image image = new Image(); + image.setSrc(ThemeManager.getLargeLogo()); + td.appendChild(image); + + tr = new Tr(); + tr.setId("rowMFAMechanism"); + table.appendChild(tr); + td = new Td(); + tr.appendChild(td); + td.setSclass(ITheme.LOGIN_LABEL_CLASS); + td.appendChild(lblMFAMechanism); + td = new Td(); + td.setSclass(ITheme.LOGIN_FIELD_CLASS); + tr.appendChild(td); + td.appendChild(lstMFAMechanism); + + tr = new Tr(); + tr.setId("rowMFAMsg"); + table.appendChild(tr); + td = new Td(); + tr.appendChild(td); + td.setSclass(ITheme.LOGIN_LABEL_CLASS); + td.appendChild(new Label("")); + td = new Td(); + tr.appendChild(td); + td.setSclass(ITheme.LOGIN_FIELD_CLASS); + td.appendChild(lblMFAMsg); + + tr = new Tr(); + tr.setId("rowValidationCode"); + table.appendChild(tr); + td = new Td(); + tr.appendChild(td); + td.setSclass(ITheme.LOGIN_LABEL_CLASS); + td.appendChild(lblValidationCode); + td = new Td(); + td.setSclass(ITheme.LOGIN_FIELD_CLASS); + tr.appendChild(td); + td.appendChild(txtValidationCode); + + tr = new Tr(); + tr.setId("rowSetPreferred"); + table.appendChild(tr); + td = new Td(); + tr.appendChild(td); + td.setSclass(ITheme.LOGIN_LABEL_CLASS); + td.appendChild(new Label("")); + td = new Td(); + td.setSclass(ITheme.LOGIN_FIELD_CLASS); + tr.appendChild(td); + td.appendChild(chkSetPreferred); + + tr = new Tr(); + tr.setId("rowRegisterDevice"); + table.appendChild(tr); + td = new Td(); + tr.appendChild(td); + td.setSclass(ITheme.LOGIN_LABEL_CLASS); + td.appendChild(new Label("")); + td = new Td(); + td.setSclass(ITheme.LOGIN_FIELD_CLASS); + tr.appendChild(td); + td.appendChild(chkRegisterDevice); + + div = new Div(); + div.setSclass(ITheme.LOGIN_BOX_FOOTER_CLASS); + ConfirmPanel pnlButtons = new ConfirmPanel(true); + pnlButtons.addActionListener(this); + LayoutUtils.addSclass(ITheme.LOGIN_BOX_FOOTER_PANEL_CLASS, pnlButtons); + ZKUpdateUtil.setWidth(pnlButtons, null); + pnlButtons.getButton(ConfirmPanel.A_OK).setSclass(ITheme.LOGIN_BUTTON_CLASS); + pnlButtons.getButton(ConfirmPanel.A_CANCEL).setSclass(ITheme.LOGIN_BUTTON_CLASS); + div.appendChild(pnlButtons); + this.appendChild(div); + } + + private void initComponents() { + lblMFAMechanism = new Label(); + lblMFAMechanism.setId("lblMFAMechanism"); + lblMFAMechanism.setValue(Msg.getMsg(m_ctx, "MFALoginMechanism")); + + lblValidationCode = new Label(); + lblValidationCode.setId("lblValidationCode"); + lblValidationCode.setValue(Msg.getMsg(m_ctx, "MFALoginValidationCode")); + + lblMFAMsg = new Label(); + lblMFAMsg.setId("lblMFAMsg"); + lblMFAMsg.setValue(Msg.getMsg(m_ctx, "MFALoginMessage")); + + lstMFAMechanism = new Combobox(); + lstMFAMechanism.setAutocomplete(true); + lstMFAMechanism.setAutodrop(true); + lstMFAMechanism.setId("lstMFAMechanism"); + boolean first = true; + for (MMFARegistration reg : MMFARegistration.getValidRegistrationsFromUser()) { + MMFAMethod method = new MMFAMethod(m_ctx, reg.getMFA_Method_ID(), reg.get_TrxName()); + if (first) { + first = false; + if (MMFAMethod.METHOD_Time_BasedOne_TimePassword.equals(method.getMethod())) { + m_autoCall = true; + } + } + ComboItem ci = new ComboItem(reg.getName() + " - " + method.getMethod(), reg.getMFA_Registration_ID()); + String id = AdempiereIdGenerator.escapeId(ci.getLabel()); + if (lstMFAMechanism.getFellowIfAny(id) == null) + ci.setId(id); + lstMFAMechanism.appendChild(ci); + } + lstMFAMechanism.setSelectedIndex(0); + ZKUpdateUtil.setWidth(lstMFAMechanism, "220px"); + + chkSetPreferred = new Checkbox(Msg.getMsg(m_ctx, "MFALoginSetPreferred")); + chkSetPreferred.setId("chkSetPreferred"); + boolean enablePreferred = (lstMFAMechanism.getChildren().size() > 1 && lstMFAMechanism.getSelectedIndex() > 0); + chkSetPreferred.setVisible(enablePreferred); + chkSetPreferred.setChecked(false); + + int daysExpire = MSysConfig.getIntValue(MSysConfig.MFA_REGISTERED_DEVICE_EXPIRATION_DAYS, 30, Env.getAD_Client_ID(m_ctx)); + chkRegisterDevice = new Checkbox(Msg.getMsg(m_ctx, "MFALoginRegisterDevice", new Object[] {daysExpire})); + chkRegisterDevice.setId("chkRegisterDevice"); + boolean enableRegisterDevice = (daysExpire > 0); + chkRegisterDevice.setVisible(enableRegisterDevice); + chkRegisterDevice.setChecked(false); + + txtValidationCode = new Textbox(); + txtValidationCode.setId("txtValidationCode"); + txtValidationCode.setCols(25); + ZKUpdateUtil.setWidth(txtValidationCode, "220px"); + txtValidationCode.setDisabled(true); + this.addEventListener(ON_DEFER_LOGOUT, this); + } + + public void onEvent(Event event) { + if (event.getTarget().getId().equals(ConfirmPanel.A_OK)) { + validateMFAComplete(true); + } else if (event.getTarget().getId().equals(ConfirmPanel.A_CANCEL)) { + SessionManager.logoutSession(); + } else if (ON_DEFER_LOGOUT.equals(event.getName())) { + SessionManager.logoutSession(); + } + } + + public void validateMFAComplete(boolean required) { + Clients.clearBusy(); + + int registrationId = 0; + if (required) { + registrationId = lstMFAMechanism.getSelectedItem().getValue(); + boolean enablePreferred = (lstMFAMechanism.getChildren().size() > 1 && lstMFAMechanism.getSelectedIndex() > 0); + chkSetPreferred.setVisible(enablePreferred); + MMFARegistration reg = new MMFARegistration(Env.getCtx(), registrationId, null); + if (txtValidationCode.isDisabled()) { + String msg = reg.generateValidationCode(reg); + lblMFAMsg.setValue(msg); + txtValidationCode.setDisabled(false); + lstMFAMechanism.setDisabled(true); + AuFocus auf = new AuFocus(txtValidationCode); + Clients.response(auf); + return; + } else { + if (Util.isEmpty(txtValidationCode.getText()) && lstMFAMechanism.getItemCount() > 1) { + lblMFAMsg.setValue(Msg.getMsg(m_ctx, "MFALoginMessage")); + txtValidationCode.setDisabled(true); + lstMFAMechanism.setDisabled(false); + AuFocus auf = new AuFocus(lstMFAMechanism); + Clients.response(auf); + return; + } else { + String msg = reg.validateCode(reg, txtValidationCode.getText(), chkSetPreferred.isChecked()); + if (msg != null) { + + String x_Forward_IP = Executions.getCurrent().getHeader("X-Forwarded-For"); + if (x_Forward_IP == null) + x_Forward_IP = Executions.getCurrent().getRemoteAddr(); + MUser user = MUser.get(m_ctx); + boolean email_login = MSysConfig.getBooleanValue(MSysConfig.USE_EMAIL_FOR_LOGIN, false); + logAuthFailure.log(x_Forward_IP, "/webui", email_login ? user.getEMail() : user.getName(), msg); + + // Incremental delay to avoid brute-force attack on testing codes + try { + Thread.sleep(failures * 2000); + } catch (InterruptedException e) {} + failures++; + AuFocus auf = new AuFocus(txtValidationCode); + Clients.response(auf); + throw new WrongValueException(txtValidationCode, msg); + } + } + } + } + + if (chkRegisterDevice != null && chkRegisterDevice.isChecked()) { + String cookieName = Env.getAD_User_ID(m_ctx) + "|" + Env.getAD_Client_ID(m_ctx); + // TODO: generate the random cookie if possible with some fingerprint of the device + String cookieValue = UUID.randomUUID().toString(); + setCookie(cookieName, cookieValue); + MMFARegisteredDevice rd = new MMFARegisteredDevice(m_ctx, 0, null); + rd.setAD_User_ID(Env.getAD_User_ID(m_ctx)); + rd.setMFADeviceIdentifier(cookieValue); + long daysExpire = MSysConfig.getIntValue(MSysConfig.MFA_REGISTERED_DEVICE_EXPIRATION_DAYS, 30, Env.getAD_Client_ID(m_ctx)); + rd.setExpiration(new Timestamp(System.currentTimeMillis() + (daysExpire * 86400000L))); + // TODO: rd.setHelp -> add information about the browser, device and IP address (fingerprint) + rd.saveEx(); + } + + Session currSess = Executions.getCurrent().getDesktop().getSession(); + HttpSession httpSess = (HttpSession) currSess.getNativeSession(); + int timeout = MSysConfig.getIntValue(MSysConfig.ZK_SESSION_TIMEOUT_IN_SECONDS, -2, + Env.getAD_Client_ID(Env.getCtx()), Env.getAD_Org_ID(Env.getCtx())); + if (timeout != -2) // default to -2 meaning not set + httpSess.setMaxInactiveInterval(timeout); + + String msg = login.validateLogin(m_orgKNPair); + if (!Util.isEmpty(msg)) { + Env.getCtx().clear(); + FDialog.error(0, this, "Error", msg, new Callback() { + @Override + public void onCallback(Integer result) { + Events.echoEvent(new Event(ON_DEFER_LOGOUT, component)); + } + }); + return; + } + // See if a popup should encourage user to change its password + if (!MUser.get(Env.getCtx()).isNoPasswordReset()) { + int notifyDay = MSysConfig.getIntValue(MSysConfig.USER_LOCKING_PASSWORD_NOTIFY_DAY, 0); + int pwdAgeDay = MSysConfig.getIntValue(MSysConfig.USER_LOCKING_MAX_PASSWORD_AGE_DAY, 0); + if (notifyDay > 0 && pwdAgeDay > 0) { + Timestamp limit = TimeUtil.addDays(MUser.get(Env.getCtx()).getDatePasswordChanged(), pwdAgeDay); + Timestamp notifyAfter = TimeUtil.addDays(limit, -notifyDay); + Timestamp now = TimeUtil.getDay(null); + + if (now.after(notifyAfter)) + FDialog.warn(0, null, "", Msg.getMsg(m_ctx, "YourPasswordWillExpireInDays", + new Object[] { TimeUtil.getDaysBetween(now, limit) })); + } + } + + Env.setContext(m_ctx, "#MFA_Registration_ID", registrationId); + wndLogin.loginCompleted(); + } + + /** + * Set a cookie + * @param name + * @param value + */ + public static void setCookie(String name, String value) { + Cookie cookie = new Cookie(name, value); + cookie.setSecure(true); + ((HttpServletResponse) Executions.getCurrent().getNativeResponse()).addCookie(cookie); + } + + /** + * Get a cookie by name + * @param name + * @return + */ + public static String getCookie(String name) { + Cookie[] cookies = ((HttpServletRequest) Executions.getCurrent().getNativeRequest()).getCookies(); + if (cookies != null) { + for (Cookie cookie : cookies) { + if (cookie.getName().equals(name)) { + return cookie.getValue(); + } + } + } + return null; + } + +} diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/process/MFARegister.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/process/MFARegister.java new file mode 100644 index 0000000000..8ab9399937 --- /dev/null +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/process/MFARegister.java @@ -0,0 +1,68 @@ +/*********************************************************************** + * This file is part of iDempiere ERP Open Source * + * http://www.idempiere.org * + * * + * Copyright (C) Contributors * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License * + * as published by the Free Software Foundation; either version 2 * + * of the License, or (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the Free Software * + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * + * MA 02110-1301, USA. * + * * + * Sponsor: * + * - FH * + * Contributors: * + * - Carlos Ruiz * + **********************************************************************/ + +package org.adempiere.webui.process; + +import org.adempiere.webui.apps.AEnv; +import org.adempiere.webui.apps.form.MFARegisterForm; +import org.adempiere.webui.panel.ADForm; +import org.adempiere.webui.session.SessionManager; +import org.adempiere.webui.util.IServerPushCallback; +import org.adempiere.webui.util.ServerPushTemplate; +import org.compiere.model.SystemIDs; +import org.zkoss.zk.ui.Desktop; + +/** + * IDEMPIERE-4782 + * @author Carlos Ruiz - globalqss - BX Service + */ +public class MFARegister extends org.compiere.process.MFARegister implements IServerPushCallback { + + /** + * Post process to register the server push callback + */ + @Override + protected void postProcess(boolean success) { + if (success) { + Desktop desktop = AEnv.getDesktop(); + ServerPushTemplate template = new ServerPushTemplate(desktop); + template.executeAsync(this); + } + } + + /** + * Open the complete registration form when updating the UI on server push callback + */ + @Override + public void updateUI() { + ADForm form = SessionManager.getAppDesktop().openForm(SystemIDs.FORM_MFA_REGISTER); + if (form instanceof MFARegisterForm) { + ((MFARegisterForm)form).completeRegistration(retArray, getAD_PInstance_ID()); + } + } + +} // MFARegister diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/process/MFARegisterParameterListener.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/process/MFARegisterParameterListener.java new file mode 100644 index 0000000000..01a4f1bbdf --- /dev/null +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/process/MFARegisterParameterListener.java @@ -0,0 +1,58 @@ +/*********************************************************************** + * This file is part of iDempiere ERP Open Source * + * http://www.idempiere.org * + * * + * Copyright (C) Contributors * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License * + * as published by the Free Software Foundation; either version 2 * + * of the License, or (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the Free Software * + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * + * MA 02110-1301, USA. * + * * + * Sponsor: * + * - FH * + * Contributors: * + * - Carlos Ruiz * + **********************************************************************/ + +package org.adempiere.webui.process; + +import org.adempiere.webui.apps.IProcessParameterListener; +import org.adempiere.webui.apps.ProcessParameterPanel; +import org.adempiere.webui.editor.WEditor; +import org.compiere.model.MMFAMethod; +import org.compiere.util.Env; + +public class MFARegisterParameterListener implements IProcessParameterListener { + + @Override + public void onChange(ProcessParameterPanel parameterPanel, String columnName, WEditor editor) { + if (editor.getValue() != null) { + if ("MFA_Method_ID".equals(columnName)) { + Object value = editor.getValue(); + if (value != null && value instanceof Integer) { + WEditor elementPrmEditor = parameterPanel.getEditor("MFA_ElementPrm_ID"); + Integer methodId = (Integer) value; + if (methodId.intValue() > 0) { + MMFAMethod method = new MMFAMethod(Env.getCtx(), methodId, null); + // set Accounting Date when StatementDate changes + elementPrmEditor.setValue(method.getMFA_ElementPrm_ID()); + } else { + elementPrmEditor.setValue(null); + } + } + } + } + } + +} diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/session/SessionManager.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/session/SessionManager.java index 971c85661c..84ecec4186 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/session/SessionManager.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/session/SessionManager.java @@ -43,9 +43,13 @@ public static boolean isUserLoggedIn(Properties ctx) String adRoleId = Env.getContext(ctx, Env.AD_ROLE_ID); String adClientId = Env.getContext(ctx, Env.AD_CLIENT_ID); String adOrgId = Env.getContext(ctx, Env.AD_ORG_ID); + String mfaId = Env.getContext(ctx, "#MFA_Registration_ID"); - return (!"".equals(adUserId) && !"".equals(adRoleId) - && !"".equals(adClientId) && !"".equals(adOrgId)); + return ( !"".equals(mfaId) + && !"".equals(adOrgId) + && !"".equals(adUserId) + && !"".equals(adRoleId) + && !"".equals(adClientId)); } public static void setSessionApplication(IWebClient app) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/util/UserPreference.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/util/UserPreference.java index d7bc36bbb8..523b8ece1b 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/util/UserPreference.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/util/UserPreference.java @@ -110,23 +110,25 @@ public void savePreference() { String attribute = PROPERTIES[i]; String value = props.getProperty(attribute); - MPreference preference = query.setParameters(new Object[]{m_AD_User_ID, attribute}).firstOnly(); - if (preference == null) { - preference = new MUserPreference(Env.getCtx(), 0, null); - preference.setAD_User_ID(m_AD_User_ID); - preference.setAttribute(attribute); - } else { - if (preference.getAD_Client_ID() > 0 || preference.getAD_Org_ID() > 0) { - preference = new MUserPreference(Env.getCtx(), preference.getAD_Preference_ID(), null); + if (value != null) { + MPreference preference = query.setParameters(new Object[]{m_AD_User_ID, attribute}).firstOnly(); + if (preference == null) { + preference = new MUserPreference(Env.getCtx(), 0, null); + preference.setAD_User_ID(m_AD_User_ID); + preference.setAttribute(attribute); + } else { + if (preference.getAD_Client_ID() > 0 || preference.getAD_Org_ID() > 0) { + preference = new MUserPreference(Env.getCtx(), preference.getAD_Preference_ID(), null); + } + } + + try { + PO.setCrossTenantSafe(); + preference.setValue(value); + preference.saveEx(); + } finally { + PO.clearCrossTenantSafe(); } - } - - try { - PO.setCrossTenantSafe(); - preference.setValue(value); - preference.saveEx(); - } finally { - PO.clearCrossTenantSafe(); } } } diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/LoginWindow.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/LoginWindow.java index 969ef43472..22fb5cb2f6 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/LoginWindow.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/LoginWindow.java @@ -32,6 +32,7 @@ import org.adempiere.webui.panel.LoginPanel; import org.adempiere.webui.panel.ResetPasswordPanel; import org.adempiere.webui.panel.RolePanel; +import org.adempiere.webui.panel.ValidateMFAPanel; import org.adempiere.webui.session.SessionContextListener; import org.adempiere.webui.theme.ThemeManager; import org.compiere.model.MSysConfig; @@ -61,13 +62,14 @@ public class LoginWindow extends FWindow implements EventListener /** * */ - private static final long serialVersionUID = -5169830531440825871L; + private static final long serialVersionUID = 2783026164782754864L; protected IWebClient app; protected Properties ctx; protected LoginPanel pnlLogin; protected ResetPasswordPanel pnlResetPassword; protected ChangePasswordPanel pnlChangePassword; + protected ValidateMFAPanel pnlValidateMFA = null; protected RolePanel pnlRole; public LoginWindow() {} @@ -97,7 +99,10 @@ public void loginOk(String userName, boolean show, KeyNamePair[] clientsKNPairs) { createRolePanel(userName, show, clientsKNPairs); this.getChildren().clear(); - this.appendChild(pnlRole); + if (pnlRole.show()) + this.appendChild(pnlRole); + else + this.appendChild(pnlValidateMFA); } protected void createRolePanel(String userName, boolean show, @@ -130,7 +135,19 @@ protected void createResetPasswordPanel(String userName, pnlResetPassword = new ResetPasswordPanel(ctx, this, userName, noSecurityQuestion); } - public void loginCompleted() + public void validateMFA(KeyNamePair orgKNPair) { + Clients.clearBusy(); + createValidateMFAPanel(orgKNPair); + this.getChildren().clear(); + this.appendChild(pnlValidateMFA); + } + + private void createValidateMFAPanel(KeyNamePair orgKNPair) { + if (pnlValidateMFA == null) + pnlValidateMFA = new ValidateMFAPanel(ctx, this, orgKNPair); + } + + public void loginCompleted() { app.loginCompleted(); } @@ -178,6 +195,12 @@ public void onEvent(Event event) resetPasswordPanel.validate(); return; } + + ValidateMFAPanel validateMFAPanel = (ValidateMFAPanel)this.getFellowIfAny("validateMFAPanel"); + if (validateMFAPanel != null){ + validateMFAPanel.validateMFAComplete(true); + return; + } } } @@ -189,6 +212,8 @@ public void onEvent(Event event) public void changeRole(Locale locale, Properties ctx) { Env.setCtx(ctx); + // clear the org ID - to force a logout if the user pushes Refresh on RolePanel + Env.setContext(ctx, Env.AD_ORG_ID, ""); getDesktop().getSession().setAttribute(SessionContextListener.SESSION_CTX, ctx); //reload theme preference diff --git a/org.idempiere.p2.targetplatform/maven.locations.xml b/org.idempiere.p2.targetplatform/maven.locations.xml index cb71f72c52..045a1c155d 100644 --- a/org.idempiere.p2.targetplatform/maven.locations.xml +++ b/org.idempiere.p2.targetplatform/maven.locations.xml @@ -162,4 +162,19 @@ 1.1.0.Final jar - \ No newline at end of file + + dev.samstevens.totp + totp + 1.7.1 + jar + + + com.google.zxing + javase + 3.4.1 + jar + + + diff --git a/org.idempiere.p2.targetplatform/org.idempiere.p2.targetplatform.target b/org.idempiere.p2.targetplatform/org.idempiere.p2.targetplatform.target index 588e9b25a9..cde3a1b7b0 100644 --- a/org.idempiere.p2.targetplatform/org.idempiere.p2.targetplatform.target +++ b/org.idempiere.p2.targetplatform/org.idempiere.p2.targetplatform.target @@ -465,5 +465,19 @@ 1.1.0.Final jar + + dev.samstevens.totp + totp + 1.7.1 + jar + + + com.google.zxing + javase + 3.4.1 + jar + - \ No newline at end of file + diff --git a/org.idempiere.test/idempiere.unit.test.launch b/org.idempiere.test/idempiere.unit.test.launch index a305b00e0f..f68b2b4c19 100644 --- a/org.idempiere.test/idempiere.unit.test.launch +++ b/org.idempiere.test/idempiere.unit.test.launch @@ -346,6 +346,8 @@ + +