diff --git a/src/gtpV2Codec/ieClasses/additionalProtocolConfigurationOptionsIe.h b/src/gtpV2Codec/ieClasses/additionalProtocolConfigurationOptionsIe.h
new file mode 100644
index 0000000..43e8ea1
--- /dev/null
+++ b/src/gtpV2Codec/ieClasses/additionalProtocolConfigurationOptionsIe.h
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2019-present, Infosys Limited.
+ *
+ * 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.
+ */
+ /******************************************************************************
+ *
+ * This is an auto generated file.
+ * Please do not edit this file.
+ * All edits to be made through template source file
+ * <TOP-DIR/scripts/GtpV2StackCodeGen/tts/ietemplate.h.tt>
+ ******************************************************************************/
+#ifndef ADDITIONALPROTOCOLCONFIGURATIONOPTIONSIE_H_
+#define ADDITIONALPROTOCOLCONFIGURATIONOPTIONSIE_H_
+
+#include "manual/gtpV2Ie.h"
+
+
+
+class AdditionalProtocolConfigurationOptionsIe: public GtpV2Ie {
+public:
+    AdditionalProtocolConfigurationOptionsIe();
+    virtual ~AdditionalProtocolConfigurationOptionsIe();
+
+    bool encodeAdditionalProtocolConfigurationOptionsIe(MsgBuffer &buffer,
+                 AdditionalProtocolConfigurationOptionsIeData const &data);
+    bool decodeAdditionalProtocolConfigurationOptionsIe(MsgBuffer &buffer,
+                 AdditionalProtocolConfigurationOptionsIeData &data, Uint16 length);
+    void displayAdditionalProtocolConfigurationOptionsIe_v(AdditionalProtocolConfigurationOptionsIeData const &data,
+                 Debug &stream);
+};
+
+#endif /* ADDITIONALPROTOCOLCONFIGURATIONOPTIONSIE_H_ */
\ No newline at end of file
