diff --git a/workspaces/client/src/utilities/validators.ts b/workspaces/client/src/utilities/validators.ts
index 70bae73480f0caada213e438ff11b3f9bfe8f511..08603a4897803d284de1aca101e4a752fda02153 100644
--- a/workspaces/client/src/utilities/validators.ts
+++ b/workspaces/client/src/utilities/validators.ts
@@ -1,6 +1,8 @@
 import { TFunction } from 'i18next';
 import _isArray from 'lodash/isArray';
 
+const INT_RANGE = 2147483647
+
 export const composeValidators = (...validators) => (value, allValues) =>
   validators.reduce((error, validator) => error || validator(value, allValues), undefined);
 
@@ -49,6 +51,7 @@ export const matchPasswords = (key) => (value, allValues) => value && allValues?
 
 export const validatePositiveNumber = (options: Options) => composeValidatorsWithOptions(options, decimalNumber, minValue(0));
 export const validatePositiveInteger = (options: Options) => composeValidatorsWithOptions(options, validInteger, minValue(0));
+export const validateRangeInteger = (options: Options) => composeValidatorsWithOptions(options, validInteger, minValue(-INT_RANGE), maxValue(INT_RANGE));
 export const validateRequiredPositiveInteger = (options: Options) => composeValidatorsWithOptions(options, required, validInteger, minValue(0));
 export const validateRequiredInteger = (options: Options) => composeValidatorsWithOptions(options, required, validInteger);
 export const validateLongitude = (options: Options) => composeValidatorsWithOptions(options, decimalNumber, minValue(-180), maxValue(180));
diff --git a/workspaces/ui-express/src/accession/ui/c/AccessionInvAttachForm.tsx b/workspaces/ui-express/src/accession/ui/c/AccessionInvAttachForm.tsx
index 7dfdbc8ecc147f21ed8ec89e9342b020c8ba6857..5d164dac2ff0c1a048b210e45578c40633af4ecf 100644
--- a/workspaces/ui-express/src/accession/ui/c/AccessionInvAttachForm.tsx
+++ b/workspaces/ui-express/src/accession/ui/c/AccessionInvAttachForm.tsx
@@ -7,7 +7,7 @@ import { TextField } from '@gringlobal-ce/client/ui/common/form/TextField';
 import { Grid } from '@mui/material';
 import { CodeValueField } from 'common/CodeValue';
 // Utils
-import { decimalNumber, required } from '@gringlobal-ce/client/utilities/validators';
+import { required, validateRangeInteger } from '@gringlobal-ce/client/utilities/validators';
 import withDialog from 'ui/common/withDialog';
 import { YesNoSwitch } from '@gringlobal-ce/client/ui/common/form/Toggle';
 import { CooperatorAutocomplete } from 'common/Cooperator';
@@ -67,7 +67,7 @@ const AccessionInvAttachForm = ({ onSubmit, initialValues, error }: AccessionInv
             <Controller
               name="sortOrder"
               control={ control }
-              rules={{ validate: decimalNumber }}
+              rules={{ validate: validateRangeInteger({ t }) }}
               render={ ({ field: { ref, ...rest }, fieldState }) =>
                 <TextField
                   label={ t([ 'client:model.AccessionInvAttach.sortOrder', 'client:model._.sortOrder' ]) }
diff --git "a/workspaces/ui-express/src/appsetting/ui/\321\201/AppSettingForm.tsx" "b/workspaces/ui-express/src/appsetting/ui/\321\201/AppSettingForm.tsx"
index 72a5bcb564d231f4114d56006611d11b358fa2f5..7f283d6bbc57dfdd660dfbfe667de2bffd5beb31 100644
--- "a/workspaces/ui-express/src/appsetting/ui/\321\201/AppSettingForm.tsx"
+++ "b/workspaces/ui-express/src/appsetting/ui/\321\201/AppSettingForm.tsx"
@@ -2,7 +2,7 @@ import { useTranslation } from 'react-i18next';
 // UI
 import { TextField } from '@gringlobal-ce/client/ui/common/form/TextField';
 import { Grid } from '@mui/material';
-import { decimalNumber, required } from '@gringlobal-ce/client/utilities/validators';
+import { required, validateRangeInteger } from '@gringlobal-ce/client/utilities/validators';
 import withDialog from 'ui/common/withDialog';
 import AppSetting from '@gringlobal-ce/client/model/gringlobal/AppSetting';
 import { Controller, useForm, FormProvider } from 'react-hook-form';
@@ -43,7 +43,7 @@ const AppSettingForm = ({ onSubmit, initialValues, error }: IAppSettingForm) =>
             <Controller
               name="sortOrder"
               control={ control }
-              rules={{ validate: decimalNumber }}
+              rules={{ validate: validateRangeInteger({ t }) }}
               render={ ({ field: { ref, ...rest }, fieldState }) =>
                 <TextField
                   label={ t([ 'client:model.AppSetting.sortOrder', 'client:model._.sortOrder' ]) }
diff --git a/workspaces/ui-express/src/crop/ui/admin/c/CropAttachForm.tsx b/workspaces/ui-express/src/crop/ui/admin/c/CropAttachForm.tsx
index 0a1f7f0052d706348a213f63ef3b5c75cec1655b..046dc4172aaa53a623cc391953718687dbfb9a0f 100644
--- a/workspaces/ui-express/src/crop/ui/admin/c/CropAttachForm.tsx
+++ b/workspaces/ui-express/src/crop/ui/admin/c/CropAttachForm.tsx
@@ -5,7 +5,7 @@ import { TextField } from '@gringlobal-ce/client/ui/common/form/TextField';
 import { Grid } from '@mui/material';
 import { CodeValueField } from 'common/CodeValue';
 // Utils
-import { decimalNumber, required } from '@gringlobal-ce/client/utilities/validators';
+import { required, validateRangeInteger } from '@gringlobal-ce/client/utilities/validators';
 import withDialog from 'ui/common/withDialog';
 import { YesNoSwitch } from '@gringlobal-ce/client/ui/common/form/Toggle';
 import { CooperatorAutocomplete } from 'common/Cooperator';
@@ -68,7 +68,7 @@ const CropAttachForm = ({ onSubmit, initialValues, error }: CropAttachForm) => {
             <Controller
               name="sortOrder"
               control={ control }
-              rules={{ validate: decimalNumber }}
+              rules={{ validate: validateRangeInteger({ t }) }}
               render={ ({ field: { ref, ...rest }, fieldState }) =>
                 <TextField
                   label={ t([ 'client:model.CropAttach.sortOrder', 'client:model._.sortOrder' ]) }
diff --git a/workspaces/ui-express/src/report/ui/c/DataviewFieldForm.tsx b/workspaces/ui-express/src/report/ui/c/DataviewFieldForm.tsx
index 1cb90e31e64665c15c350a9924411afb007a3ad4..b9ef931ec62cecbe5dcde3db14f7a27040a9a036 100644
--- a/workspaces/ui-express/src/report/ui/c/DataviewFieldForm.tsx
+++ b/workspaces/ui-express/src/report/ui/c/DataviewFieldForm.tsx
@@ -11,7 +11,11 @@ import { makeInitialValuesSafe } from '@gringlobal-ce/client/utilities';
 import { useCallback, useState } from 'react';
 import log from 'loglevel';
 import { createDataviewField, updateDataviewField } from '@gringlobal-ce/client/service/v2/DataviewEndpoints';
-import { composeValidatorsWithOptions, required, validatePositiveNumber } from '@gringlobal-ce/client/utilities/validators';
+import {
+  composeValidatorsWithOptions,
+  required,
+  validateRangeInteger
+} from '@gringlobal-ce/client/utilities/validators';
 import DropdownField from 'common/DropdownField';
 import { useDispatch, useSelector } from 'react-redux';
 import { IRootState } from 'reducers';
@@ -132,7 +136,7 @@ const DataviewFieldForm = ({ onConfirm, initialValues, onCancel }: DataviewField
               <Controller
                 name="sortOrder"
                 control={ control }
-                rules={{ validate: composeValidatorsWithOptions({ t }, validatePositiveNumber({ t }), required) }}
+                rules={{ validate: composeValidatorsWithOptions({ t }, validateRangeInteger({ t }), required) }}
                 render={ ({ field: { ref, ...rest }, fieldState }) =>
                   <TextField
                     required
diff --git a/workspaces/ui-express/src/report/ui/c/DataviewParamForm.tsx b/workspaces/ui-express/src/report/ui/c/DataviewParamForm.tsx
index 039e92807ba93c4500da7bd4b1520116eedf5c83..d2741d51f3d5f0e0da021bcd8af3b23c829a1005 100644
--- a/workspaces/ui-express/src/report/ui/c/DataviewParamForm.tsx
+++ b/workspaces/ui-express/src/report/ui/c/DataviewParamForm.tsx
@@ -10,7 +10,11 @@ import { makeInitialValuesSafe } from '@gringlobal-ce/client/utilities';
 import { useCallback, useState } from 'react';
 import log from 'loglevel';
 import { createDataviewParam, updateDataviewParam } from '@gringlobal-ce/client/service/v2/DataviewEndpoints';
-import { composeValidatorsWithOptions, required, validatePositiveNumber } from '@gringlobal-ce/client/utilities/validators';
+import {
+  composeValidatorsWithOptions,
+  required,
+  validateRangeInteger
+} from '@gringlobal-ce/client/utilities/validators';
 import DropdownField from 'common/DropdownField';
 
 interface DataviewParamForm {
@@ -87,7 +91,7 @@ const DataviewParamForm = ({ onConfirm, initialValues, onCancel }: DataviewParam
               <Controller
                 name="sortOrder"
                 control={ control }
-                rules={{ validate: composeValidatorsWithOptions({ t }, validatePositiveNumber({ t }), required) }}
+                rules={{ validate: composeValidatorsWithOptions({ t }, validateRangeInteger({ t }), required) }}
                 render={ ({ field: { ref, ...rest }, fieldState }) =>
                   <TextField
                     required
diff --git a/workspaces/ui-express/src/request/ui/c/RequestAttachForm.tsx b/workspaces/ui-express/src/request/ui/c/RequestAttachForm.tsx
index 061c821efa6c868c8ff59a0f8d42551166f2a328..dd7e2666a07aa3c4e60814237fde06ee61346016 100644
--- a/workspaces/ui-express/src/request/ui/c/RequestAttachForm.tsx
+++ b/workspaces/ui-express/src/request/ui/c/RequestAttachForm.tsx
@@ -6,7 +6,7 @@ import { TextField } from '@gringlobal-ce/client/ui/common/form/TextField';
 import { Grid } from '@mui/material';
 import { CodeValueField } from 'common/CodeValue';
 // Utils
-import { decimalNumber, required } from '@gringlobal-ce/client/utilities/validators';
+import { required, validateRangeInteger } from '@gringlobal-ce/client/utilities/validators';
 import withDialog from 'ui/common/withDialog';
 import { YesNoSwitch } from '@gringlobal-ce/client/ui/common/form/Toggle';
 import { CooperatorAutocomplete } from 'common/Cooperator';
@@ -67,7 +67,7 @@ const RequestAttachForm = ({ onSubmit, initialValues, error }: RequestAttachForm
             <Controller
               name="sortOrder"
               control={ control }
-              rules={{ validate: decimalNumber }}
+              rules={{ validate: validateRangeInteger({ t }) }}
               render={ ({ field: { ref, ...rest }, fieldState }) =>
                 <TextField
                   label={ t([ 'client:model.OrderRequestAttach.sortOrder', 'client:model._.sortOrder' ]) }