diff --git a/internal/pkg/errorcodes/service/errors.go b/internal/pkg/errorcodes/service/errors.go
new file mode 100644
index 0000000..a25278d
--- /dev/null
+++ b/internal/pkg/errorcodes/service/errors.go
@@ -0,0 +1,122 @@
+/*
+* Copyright 2022-present Open Networking Foundation
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+ */
+
+// Package service provides constants.
+package service
+
+const (
+	errorCodeStartRange = 1000
+)
+
+const (
+	// VolthaErrorMessageFormat represents the format in which the Voltha accepts the errors.
+	VolthaErrorMessageFormat = "code = %d, desc = %s"
+)
+
+// ErrorCode is Enum of error type
+type ErrorCode int
+
+//ErrorAction is Enum for error action
+type ErrorAction int
+
+const (
+	//ErrOk is returned when request is successful
+	ErrOk ErrorCode = 0
+	//ErrInProgress is returned when operation is in progress
+	ErrInProgress ErrorCode = iota + errorCodeStartRange
+	//ErrInvalidParm is returned when parameter is wrong
+	ErrInvalidParm
+	//ErrResourceUnavailable is returned when no free resources are available
+	ErrResourceUnavailable
+	//ErrAlreadyExists is returned when entry already exists
+	ErrAlreadyExists
+	//ErrNotExists is returned when entry does not exists
+	ErrNotExists
+	//ErrInvalidOperation is returned when invalid operation is performed
+	ErrInvalidOperation
+	//ErrDeviceNotConnected is returned when there is no connection with the target system
+	ErrDeviceNotConnected
+	//ErrTimeout is returned when operation times out
+	ErrTimeout
+	//ErrResourceBusy is returned when resource is busy
+	ErrResourceBusy
+	//ErrInternal is returned when Errors happened internally
+	ErrInternal
+	//ErrIo is returned when there is I/O error
+	ErrIo
+	//ErrMandatoryParmIsMissing is returned when mandatory parameter is missing
+	ErrMandatoryParmIsMissing
+	//ErrBadState is returned when object is in bad state
+	ErrBadState
+	//ErrOnuInternal is returned when ONT internal failure occurs
+	ErrOnuInternal
+	//ErrElanNotCreated is returned when ELAN is not created
+	ErrElanNotCreated
+	//ErrOltInternal is returned when OLT internal failure occurs
+	ErrOltInternal
+)
+
+//ErrorCodeMap converts error code to error description string
+var ErrorCodeMap = map[ErrorCode]string{
+	ErrOk:                     "Success",
+	ErrInProgress:             "Operation is in progress",
+	ErrInvalidParm:            "Invalid parameter",
+	ErrResourceUnavailable:    "No free resource available",
+	ErrAlreadyExists:          "Entry already exists",
+	ErrNotExists:              "Entry does not exists",
+	ErrInvalidOperation:       "Invalid Operation",
+	ErrDeviceNotConnected:     "No connection with the target system",
+	ErrTimeout:                "Operation timed out",
+	ErrResourceBusy:           "Resource Busy",
+	ErrInternal:               "Internal Error",
+	ErrIo:                     "I/O Error",
+	ErrMandatoryParmIsMissing: "Mandatory parameter is missing",
+	ErrBadState:               "Object is in bad state",
+	ErrOnuInternal:            "ONT internal error",
+	ErrElanNotCreated:         "ELAN not created",
+	ErrOltInternal:            "OLT internal error",
+}
+
+const (
+	//Retry is returned if subservice reactivation is required
+	Retry ErrorAction = iota
+	//Quiet is returned if no action has to be taken
+	Quiet
+	//Deactivate is returned if subservice has to be deactivated
+	Deactivate
+	//Invalid is returned when invalid error is received from vgc
+	Invalid
+)
+
+//RetryErrorCodeMap consists of errors that requires service activation retry
+var RetryErrorCodeMap = map[ErrorCode]ErrorAction{
+	ErrOk:                     Quiet,
+	ErrInProgress:             Deactivate,
+	ErrInvalidParm:            Deactivate,
+	ErrResourceUnavailable:    Deactivate,
+	ErrAlreadyExists:          Quiet,
+	ErrNotExists:              Quiet,
+	ErrInvalidOperation:       Deactivate,
+	ErrDeviceNotConnected:     Quiet,
+	ErrTimeout:                Retry,
+	ErrResourceBusy:           Retry,
+	ErrInternal:               Deactivate,
+	ErrIo:                     Retry,
+	ErrMandatoryParmIsMissing: Deactivate,
+	ErrBadState:               Deactivate,
+	ErrOnuInternal:            Retry,
+	ErrElanNotCreated:         Retry,
+	ErrOltInternal:            Deactivate,
+}
