diff --git a/pkg/service/submissions.go b/pkg/service/submissions.go
index 0be5a06..b4bca23 100644
--- a/pkg/service/submissions.go
+++ b/pkg/service/submissions.go
@@ -439,6 +439,32 @@ func (svc *Service) ActionSubmissionTriggerUpload(ctx context.Context, params ap
 	return nil
 }
 
+// ActionSubmissionValidate invokes actionSubmissionValidate operation.
+//
+// Role SubmissionRelease changes status from Uploading -> Validated.
+//
+// POST /submissions/{SubmissionID}/status/reset-uploading
+func (svc *Service) ActionSubmissionValidated(ctx context.Context, params api.ActionSubmissionValidatedParams) error {
+	userInfo, ok := ctx.Value("UserInfo").(UserInfo)
+	if !ok {
+		return ErrUserInfo
+	}
+
+	has_role, err := userInfo.HasRoleSubmissionRelease()
+	if err != nil {
+		return err
+	}
+	// check if caller has required role
+	if !has_role {
+		return ErrPermissionDenied
+	}
+
+	// transaction
+	smap := datastore.Optional()
+	smap.Add("status_id", model.StatusValidated)
+	return svc.DB.Submissions().IfStatusThenUpdate(ctx, params.SubmissionID, []model.Status{model.StatusUploading}, smap)
+}
+
 // ActionSubmissionTriggerValidate invokes actionSubmissionTriggerValidate operation.
 //
 // Role Reviewer triggers validation and changes status from Submitted|Accepted -> Validating.
@@ -484,6 +510,33 @@ func (svc *Service) ActionSubmissionTriggerValidate(ctx context.Context, params
 	return nil
 }
 
+// ActionSubmissionAccepted implements actionSubmissionAccepted operation.
+//
+// Role SubmissionReview changes status from Validating -> Accepted.
+//
+// POST /submissions/{SubmissionID}/status/reset-validating
+func (svc *Service) ActionSubmissionAccepted(ctx context.Context, params api.ActionSubmissionAcceptedParams) error {
+	userInfo, ok := ctx.Value("UserInfo").(UserInfo)
+	if !ok {
+		return ErrUserInfo
+	}
+
+	has_role, err := userInfo.HasRoleSubmissionReview()
+	if err != nil {
+		return err
+	}
+	// check if caller has required role
+	if !has_role {
+		return ErrPermissionDenied
+	}
+
+	// transaction
+	smap := datastore.Optional()
+	smap.Add("status_id", model.StatusAccepted)
+	smap.Add("status_message", "Manually forced reset")
+	return svc.DB.Submissions().IfStatusThenUpdate(ctx, params.SubmissionID, []model.Status{model.StatusValidating}, smap)
+}
+
 // ReleaseSubmissions invokes releaseSubmissions operation.
 //
 // Release a set of uploaded maps.