diff --git a/src/parser_yin.c b/src/parser_yin.c
index a15bc20..b366f86 100644
--- a/src/parser_yin.c
+++ b/src/parser_yin.c
@@ -1552,13 +1552,13 @@
     LY_CHECK_RET(yin_parse_attribute(ctx, attrs, YIN_ARG_NAME, &list->name, Y_IDENTIF_ARG, YANG_LIST));
 
     /* parse list content */
+    struct action_meta act_meta = {(struct lysp_node *)list, &list->actions};
     struct tree_node_meta new_node_meta = {(struct lysp_node *)list, &list->child};
     struct typedef_meta typedef_meta = {(struct lysp_node *)list, &list->typedefs};
     struct notif_meta notif_meta = {(struct lysp_node *)list, &list->notifs};
     struct grouping_meta gr_meta = {(struct lysp_node *)list, &list->groupings};
     struct yin_subelement subelems[25] = {
-                                            /* TODO action */
-                                            {YANG_ACTION, NULL, 0},
+                                            {YANG_ACTION, &act_meta, 0},
                                             {YANG_ANYDATA, &new_node_meta, 0},
                                             {YANG_ANYXML, &new_node_meta, 0},
                                             {YANG_CHOICE, &new_node_meta, 0},
@@ -1678,13 +1678,13 @@
     LY_CHECK_RET(yin_parse_attribute(ctx, attrs, YIN_ARG_NAME, &grp->name, Y_IDENTIF_ARG, YANG_GROUPING));
 
     /* parse grouping content */
+    struct action_meta act_meta = {(struct lysp_node *)grp, &grp->actions};
     struct tree_node_meta node_meta = {(struct lysp_node *)grp, &grp->data};
     struct typedef_meta typedef_meta = {(struct lysp_node *)grp, &grp->typedefs};
     struct grouping_meta sub_grouping = {(struct lysp_node *)grp, &grp->groupings};
     struct notif_meta notif_meta = {(struct lysp_node *)grp, &grp->notifs};
     struct yin_subelement subelems[16] = {
-                                            /* TODO action */
-                                            {YANG_ACTION, NULL, 0},
+                                            {YANG_ACTION, &act_meta, 0},
                                             {YANG_ANYDATA, &node_meta, 0},
                                             {YANG_ANYXML, &node_meta, 0},
                                             {YANG_CHOICE, &node_meta, 0},
@@ -1743,13 +1743,14 @@
     LY_CHECK_RET(yin_parse_attribute(ctx, attrs, YIN_ARG_NAME,  &cont->name, Y_IDENTIF_ARG, YANG_CONTAINER));
 
     /* parse container content */
+    struct action_meta act_meta = {(struct lysp_node *)cont, &cont->actions};
     struct tree_node_meta new_node_meta = {(struct lysp_node *)cont, &cont->child};
     struct grouping_meta grp_meta = {(struct lysp_node *)cont, &cont->groupings};
     struct typedef_meta typedef_meta = {(struct lysp_node *)cont, &cont->typedefs};
     struct notif_meta notif_meta = {(struct lysp_node *)cont, &cont->notifs};
     struct yin_subelement subelems[21] = {
                                             /* TODO action */
-                                            {YANG_ACTION, NULL, YIN_SUBELEM_VER2},
+                                            {YANG_ACTION, &act_meta, YIN_SUBELEM_VER2},
                                             {YANG_ANYDATA, &new_node_meta, YIN_SUBELEM_VER2},
                                             {YANG_ANYXML, &new_node_meta, 0},
                                             {YANG_CHOICE, &new_node_meta, 0},
@@ -1938,6 +1939,42 @@
     return LY_SUCCESS;
 }
 
+static LY_ERR
+yin_parse_action(struct yin_parser_ctx *ctx, struct yin_arg_record *attrs, const char **data,
+                 struct action_meta *act_meta)
+{
+    struct lysp_action *act;
+
+    /* create new action */
+    LY_ARRAY_NEW_RET(ctx->xml_ctx.ctx, *act_meta->actions, act, LY_EMEM);
+    act->nodetype = LYS_ACTION;
+    act->parent = act_meta->parent;
+
+    /* parse argument */
+    LY_CHECK_RET(yin_parse_attribute(ctx, attrs, YIN_ARG_NAME, &act->name, Y_IDENTIF_ARG, YANG_ACTION));
+
+    /* parse content */
+    struct grouping_meta grp_meta = {(struct lysp_node *)act, &act->groupings};
+    struct typedef_meta typedef_meta = {(struct lysp_node *)act, &act->typedefs};
+    struct inout_meta input = {(struct lysp_node *)act, &act->input};
+    struct inout_meta output = {(struct lysp_node *)act, &act->output};
+    struct yin_subelement subelems[9] = {
+                                            {YANG_DESCRIPTION, &act->dsc, YIN_SUBELEM_UNIQUE},
+                                            {YANG_GROUPING, &grp_meta, 0},
+                                            {YANG_IF_FEATURE, &act->iffeatures, 0},
+                                            {YANG_INPUT, &input, YIN_SUBELEM_UNIQUE},
+                                            {YANG_OUTPUT, &output, YIN_SUBELEM_UNIQUE},
+                                            {YANG_REFERENCE, &act->ref, YIN_SUBELEM_UNIQUE},
+                                            {YANG_STATUS, &act->flags, YIN_SUBELEM_UNIQUE},
+                                            {YANG_TYPEDEF, &typedef_meta, 0},
+                                            {YANG_CUSTOM, NULL, 0},
+                                         };
+    LY_CHECK_RET(yin_parse_content(ctx, subelems, 9, data, YANG_ACTION, NULL, &act->exts));
+    LY_CHECK_RET(lysp_parse_finalize_reallocated((struct lys_parser_ctx *)ctx, act->groupings, NULL, NULL, NULL));
+
+    return LY_SUCCESS;
+}
+
 /**
  * @brief Map keyword type to substatement info.
  *
@@ -2086,6 +2123,7 @@
                                                       (subelem->dest) ? *((uint32_t*)subelem->dest) : 0, exts);
                     break;
                 case YANG_ACTION:
+                    ret = yin_parse_action(ctx, attrs, data, (struct action_meta *)subelem->dest);
                     break;
                 case YANG_ANYDATA:
                 case YANG_ANYXML:
diff --git a/src/parser_yin.h b/src/parser_yin.h
index 98fa8e4..3174abe 100644
--- a/src/parser_yin.h
+++ b/src/parser_yin.h
@@ -129,10 +129,16 @@
 
 /* Meta information passed to yin_parse_grouping function */
 struct inout_meta {
-    struct lysp_node *parent;         /**< Parent node. */
+    struct lysp_node *parent;          /**< Parent node. */
     struct lysp_action_inout *inout_p; /**< inout_p Input/output pointer to write to. */
 };
 
+/* Meta information passed to yin_parse_action  */
+struct action_meta {
+    struct lysp_node *parent;         /**< Parent node. */
+    struct lysp_action **actions;     /**< Actions to add to. */
+};
+
 /**
  * @brief Match argument name.
  *
