diff --git a/fid/config/vufind/fid.ini b/fid/config/vufind/fid.ini
index e4dc39af80b575f5187f5482d3398832567d246f..fd434cd589fa8a65605fcd57f7a053e40205f53d 100644
--- a/fid/config/vufind/fid.ini
+++ b/fid/config/vufind/fid.ini
@@ -36,4 +36,30 @@ user_list_export_file_prefix = 'export'
 ; provides a comma separated list of available options e.g. "0,2,1" will result
 ; in having options job_title_0, job_title_2, job_title_1 in that particular order
 ; of not given, options will be job_title_0, job_title_1
-;jobTitleOptions = "0,1"
\ No newline at end of file
+;jobTitleOptions = "0,1"
+
+; examples on configure admin order listings
+;[OrderList]
+;displayCols[] = 'type'
+;displayCols[] = 'status'
+;displayCols[] = 'dueDate'
+;displayCols[] = 'edit'
+;displayCols[] = 'delete'
+
+;examples on enabling order edit forms
+;[pdaEdit]
+;form = 'complete'
+;first of statusOptions[] is assumed as default status
+;statusOptions[] = 'open'
+;statusOptions[] = 'processing'
+;statusOptions[] = 'loan'
+;statusOptions[] = 'completed'
+;statusOptions[] = 'closed'
+
+;[digitizationEdit]
+;form = 'basic'
+;first of statusOptions[] is assumed as default status
+;statusOptions[] = 'open'
+;statusOptions[] = 'processing'
+;statusOptions[] = 'completed'
+;statusOptions[] = 'closed'
\ No newline at end of file
diff --git a/fid/config/vufind/permissions.ini b/fid/config/vufind/permissions.ini
index c3bee6a1bf0a94cfd6e1bbbb32492ea96b83275e..b5978a3f5be74a7338e83ca37186137c194d40df 100644
--- a/fid/config/vufind/permissions.ini
+++ b/fid/config/vufind/permissions.ini
@@ -31,6 +31,11 @@ role[] = loggedin
 FidApiPermission[] = edit_user
 permission = fid.EditUser
 
+[fid.EditOrder]
+role[] = loggedin
+FidApiPermission[] = edit_order
+permission = fid.EditOrder
+
 [fid.LimitedAccess]
 role[] = loggedin
 FidApiPermission[] = limited_access
diff --git a/module/fid/config/module.config.php b/module/fid/config/module.config.php
index 74b728b9c8cd91cf378cf6c3b389dc022150af7a..bca6c65dbd6880b3885dfb686d62f04ed1ef4eb0 100644
--- a/module/fid/config/module.config.php
+++ b/module/fid/config/module.config.php
@@ -73,6 +73,8 @@ $config = [
         'fid-acquisition-subito-partial-copy-form' => require 'fid-acquisition-subito-partial-copy-form.php',
         'fid-acquisition-digitization-form'        => require 'fid-acquisition-digitization-form.php',
         'fid-acquisition-digitization-missing-record-form'        => require 'fid-acquisition-digitization-missing-record-form.php',
+        'order-edit-form-basic'              => require 'order-edit-form-basic.php',
+        'order-edit-form-complete'           => require 'order-edit-form-complete.php',
         PasswordResetModel::class                  => require 'password-reset-form.php',
         PasswordChangeModel::class                 => require 'password-change-form.php',
         UsernameChangeModel::class                 => require 'username-change-form.php',
@@ -402,6 +404,17 @@ $config = [
                                     ],
                                 ],
                             ],
+                            'editOrder'       => [
+                                'type'    => 'Zend\Router\Http\Segment',
+                                'options' => [
+                                    'route'    => '/editOrder/[:orderid]',
+                                    'defaults' => [
+                                        'controller' => UserController::class,
+                                        'action'     => 'editOrder',
+                                        'orderid'     => null
+                                    ],
+                                ],
+                            ],
                         ],
                     ],
                 ],
diff --git a/module/fid/config/order-edit-form-basic.php b/module/fid/config/order-edit-form-basic.php
new file mode 100644
index 0000000000000000000000000000000000000000..8f2e97fda941b2cfd7eda803991f7ef23b55e768
--- /dev/null
+++ b/module/fid/config/order-edit-form-basic.php
@@ -0,0 +1,58 @@
+<?php
+/**
+ * Copyright (C) 2021 Leipzig University Library
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * @author  Alexander Purr <purr@ub.uni-leipzig.de>
+ * @license http://opensource.org/licenses/gpl-2.0.php GNU GPLv2
+ */
+use fid\Hydrator\OrderUpdateHydrator;
+use Zend\Form\Element\Submit;
+use Zend\Form\Element\Date;
+
+return [
+    'name'         => 'order-edit-form-basic',
+    'hydrator'     => OrderUpdateHydrator::class,
+    'elements'     => [
+        'status'              => [
+            'spec' => [
+                'name'       => 'status',
+                'type'       => Select::class,
+                'options'    => [
+                    'label' => 'order_label_status',
+                ],
+            ],
+        ],
+        'submit' => [
+            'spec' => [
+                'name' => 'submit',
+                'type' => Submit::class,
+                'attributes' => [
+                    'value' => 'label_submit',
+                ],
+            ],
+        ],
+    ],
+    'input_filter' => [
+        'status'               => [
+            'name'     => 'format',
+            'required' => true,
+        ],
+        'submit'               => [
+            'name'     => 'submit',
+            'required' => true,
+        ],
+    ],
+];
diff --git a/module/fid/config/order-edit-form-complete.php b/module/fid/config/order-edit-form-complete.php
new file mode 100644
index 0000000000000000000000000000000000000000..17ece4d8cf4ec61f363778f5c93be0af8e1c3aa9
--- /dev/null
+++ b/module/fid/config/order-edit-form-complete.php
@@ -0,0 +1,47 @@
+<?php
+/**
+ * Copyright (C) 2021 Leipzig University Library
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * @author  Alexander Purr <purr@ub.uni-leipzig.de>
+ * @license http://opensource.org/licenses/gpl-2.0.php GNU GPLv2
+ */
+use Zend\Form\Element\Date;
+
+$main_config = require 'order-edit-form-basic.php';
+unset($main_config['name']);
+
+$additional_config = [
+    'name'         => 'order-edit-form-complete',
+    'elements'     => [
+        'due_date'              => [
+            'spec' => [
+                'name'       => 'due_date',
+                'type'       => Date::class,
+                'options'    => [
+                    'label' => 'order_label_due_date',
+                ],
+            ],
+        ],
+    ],
+    'input_filter' => [
+        'due_date' => [
+            'name'     => 'due_date',
+            'required' => false,
+        ],
+    ],
+];
+
+return array_merge_recursive($main_config, $additional_config);
diff --git a/module/fid/src/Controller/CustomTraits/FidAcquisitionTrait.php b/module/fid/src/Controller/CustomTraits/FidAcquisitionTrait.php
index 8316015bc9293cd5c91939cd3908d8b95bf2822c..85832745a15ac0db4f92d909f70cee892920a21f 100644
--- a/module/fid/src/Controller/CustomTraits/FidAcquisitionTrait.php
+++ b/module/fid/src/Controller/CustomTraits/FidAcquisitionTrait.php
@@ -35,6 +35,7 @@ use fid\Validator\SubitoPartialCopyPageSelection;
 use finc\View\Helper\Root\Citation;
 use VuFind\Controller\AbstractBase;
 use VuFind\Exception\Forbidden as ForbiddenException;
+use Zend\Config\Config;
 use Zend\Form\Form;
 
 /**
@@ -126,7 +127,8 @@ trait FidAcquisitionTrait
                     $url = $this->getRecordUrl($recordId);
                     $label = $this->getOrderLabel($driver);
                     $type = $this->type;
-                    $hydratorData = compact('type', 'driver', 'user', 'url', 'label');
+                    $status = $this->getDefaultStatus();
+                    $hydratorData = compact('type', 'driver', 'user', 'url', 'label', 'status');
                     $hydratorData += $this->addTypeSpecificOrderInformation($form);
                     $form->getHydrator()->hydrate($hydratorData, $order = new Order());
                     $this->client->requestOrderCreation($order);
@@ -247,6 +249,15 @@ trait FidAcquisitionTrait
     {
     }
 
+    protected function getDefaultStatus() {
+        /** @var Config $config */
+        $config = $this->getConfig('fid');
+        if (isset($config[$this->type.'Edit']['statusOptions'])) {
+            return $this->getConfig('fid')[$this->type . 'Edit']['statusOptions'][0];
+        }
+        else return null;
+    }
+
     protected function runDigitizationMissingRecord()
     {
         if (!($user = $this->getUser())) {
diff --git a/module/fid/src/Controller/UserController.php b/module/fid/src/Controller/UserController.php
index a8abdbb83ec6692d5c3792fd45291bd359b95f4b..63db4919009f0e511905549777a993f789af7806 100644
--- a/module/fid/src/Controller/UserController.php
+++ b/module/fid/src/Controller/UserController.php
@@ -29,6 +29,7 @@ use fid\FormModel\UsernameChangeModel;
 use fid\Service\Client;
 use fid\Service\ClientException;
 use fid\Service\DataTransferObject\Library;
+use fid\Service\DataTransferObject\Order;
 use fid\Service\DataTransferObject\User;
 use fid\Service\UserNotAuthorizedException;
 use VuFind\Auth\Manager as AuthManager;
@@ -790,9 +791,11 @@ class UserController extends AbstractBase
             return $this->forceLogin();
         }
         try {
-            $user = $this->client->requestUserDetails();
+            $user = $this->client->requestUserDetails(null, true);
             $viewModel = $this->createViewModel();
-            $viewModel->setVariable('orders', $user->getOrders());
+            $orders = $user->getOrders();
+            $displayCols = $this->config['OrderList']['displayCols'];
+            $viewModel->setVariables(compact('orders','displayCols'));
             $viewModel->setTemplate('fid/user/orders');
             return $viewModel;
         } catch (ClientException $exception) {
@@ -809,7 +812,8 @@ class UserController extends AbstractBase
         try {
             $orders = $this->client->requestOrderList();
             $viewModel = $this->createViewModel();
-            $viewModel->setVariables(compact('orders'));
+            $displayCols = $this->config['OrderList']['displayCols'];
+            $viewModel->setVariables(compact('orders','displayCols'));
             $viewModel->setTemplate('fid/user/admin-orders');
             return $viewModel;
         } catch (UserNotAuthorizedException $exception) {
@@ -892,4 +896,92 @@ class UserController extends AbstractBase
             $jobTitleElement->setValueOptions($options);
         }
     }
+
+    public function editOrderAction()
+    {
+        if (!$this->getUser()) {
+            return $this->forceLogin();
+        }
+
+        /** @var Request $request */
+        $request = $this->getRequest();
+        $orderId = $this->params()->fromRoute('orderid');
+        if (empty($orderId)) {
+            // if no order ID is set the call is not valid
+            return $this->redirect()->toRoute('fid/admin/orders');
+        }
+
+        try {
+            $this->permission()->check('fid.EditOrder', 'exception');
+            $order = $this->client->requestOrder($orderId);
+        } catch (\Exception $ex) {
+            $this->getMessenger()
+                ->addErrorMessage($this->translate('fid::edit_order_error'));
+            return $this->redirect()->toRoute('fid/admin/orders');
+        }
+
+        $recordId = $order->getRecordId();
+        $driver = $recordId ? $this->getRecordLoader()->load($recordId) : null;
+
+        /** @var Form $form */
+        /** @var Select $statusElement */
+        $form = $this->config[$order->getType()."Edit"]['form']
+            ? $this->serviceLocator->get('order-edit-form-'.$this->config[$order->getType()."Edit"]['form'])
+            : null;
+        $this->applyStatusOptions($form,$order->getType());
+
+        if ($this->formWasSubmitted()) {
+            $form->setData($request->getPost());
+            if ($form->isValid()) {
+                return $this->updateOrder($form, $order);
+            }
+        } else {
+            $form->setData($form->getHydrator()->extract($order));
+        }
+
+        $action = $this->url()->fromRoute('fid/admin/editOrder', [
+            'orderid' => $order->getId()
+        ]);
+        $form->setAttribute('action', $action);
+        $form->prepare();
+
+        $config = $this->config;
+        $viewModel = $this->createViewModel();
+        $viewModel->setVariables(compact('config', 'form', 'order', 'driver'));
+        $viewModel->setTemplate('fid/order/order-edit');
+
+        return $viewModel;
+    }
+
+    protected function applyStatusOptions($form, $type)
+    {
+        if ($statusOptions = $this->config["{$type}Edit"]['statusOptions'] ?? null) {
+            $options = [];
+            foreach ($statusOptions as $statusOption) {
+                $options[] = [
+                    'value' => $statusOption,
+                    'label' => $this->translate('fid::status_'.$statusOption),
+                ];
+            }
+            $statusElement = $form->get('status');
+            $statusElement->setValueOptions($options);
+        }
+    }
+
+    protected function updateOrder(Form $form, Order $order) {
+        $data = $form->getData();
+        $messenger = $this->getMessenger();
+
+        try {
+            $form->getHydrator()->hydrate($data, $order);
+            $this->client->requestOrderUpdate($order);
+            $message = $this->translate('fid::order_update_success');
+            $messenger->addSuccessMessage($message);
+        } catch (\Exception $ex) {
+            $message = $this->translate('fid::order_update_error');
+            $messenger->addErrorMessage($message);
+        }
+
+        return $this->redirect()->toRoute('fid/admin/orders');
+    }
 }
diff --git a/module/fid/src/Hydrator/OrderHydrator.php b/module/fid/src/Hydrator/OrderHydrator.php
index 43c1dbc3e729be596e86e6d629cfad5b8b63cb33..e1acefc7b887e929320100e5e3ba631aeff2698c 100644
--- a/module/fid/src/Hydrator/OrderHydrator.php
+++ b/module/fid/src/Hydrator/OrderHydrator.php
@@ -72,6 +72,7 @@ class OrderHydrator extends AbstractHydrator {
         );
 
         $object->setData(compact('record','partialCopy','digitization','pda'));
+        $object->setStatus($data['status']);
         $object->setLabel($data['label']);
         return;
     }
diff --git a/module/fid/src/Hydrator/OrderUpdateHydrator.php b/module/fid/src/Hydrator/OrderUpdateHydrator.php
new file mode 100644
index 0000000000000000000000000000000000000000..8a28353c8b1f303c61c10b1ec3e5b3740c05f067
--- /dev/null
+++ b/module/fid/src/Hydrator/OrderUpdateHydrator.php
@@ -0,0 +1,31 @@
+<?php
+namespace fid\Hydrator;
+
+use fid\Service\DataTransferObject\Order;
+use Zend\Hydrator\AbstractHydrator;
+
+class OrderUpdateHydrator extends AbstractHydrator {
+
+    const DATE_FORMAT = 'Y-m-d';
+
+    public function extract($object)
+    {
+        $retval['due_date'] = $object->getDueDate() ? $object->getDueDate()->format(self::DATE_FORMAT) : '';
+        $retval['status'] = $object->getStatus() ?? 'open';
+        return $retval;
+    }
+
+    /**
+     * @param array $data
+     * @param Order|object $object
+     * @return Order|object|void
+     */
+    public function hydrate(array $data, $object)
+    {
+        $data['status'] ? $object->setStatus($data['status']) : null;
+        !empty($data['due_date'])
+            ? $object->setDueDate(\DateTime::createFromFormat(self::DATE_FORMAT, $data['due_date']))
+            : null;
+        return $object;
+    }
+}
diff --git a/module/fid/src/Service/Client.php b/module/fid/src/Service/Client.php
index 531e760e3f96869f00cb708d3f68e14b0c67fdee..ca678cb2781eeaa67a2e0087990003ef8809b93b 100644
--- a/module/fid/src/Service/Client.php
+++ b/module/fid/src/Service/Client.php
@@ -287,6 +287,46 @@ class Client
         return array_combine($keys, $list);
     }
 
+    /**
+     * @return Order|null
+     * @throws ClientException
+     * @throws UserNotAuthorizedException
+     */
+    public function requestOrder($orderId = null): ?Order
+    {
+        $request = $this->buildRequest('get', "orders/$orderId");
+        $response = $this->sendAuthenticatedRequest($request);
+
+        if ($response->getStatusCode() !== 200) {
+            $this->throwException($response);
+        }
+
+        /** @var Order $order */
+        $order = $this->serializer->deserialize((string)$response->getBody(),
+            Order::class, 'json');
+
+        return $order;
+    }
+
+    /**
+     * @param Order  $user
+     * @return bool
+     * @throws ClientException
+     */
+    public function requestOrderUpdate(Order $order) : bool
+    {
+        $body = $this->serializer->serialize($order, 'json', ['groups' => ['order:update:request']]);
+        $request = $this->buildRequest('put', "orders/{$order->getId()}", $body);
+        $response = $this->sendAuthenticatedRequest($request);
+
+        if ($response->getStatusCode() !== 200) {
+            $this->throwException($response);
+            return false;
+        }
+
+        return true;
+    }
+
     /**
      * @param string $baseUrl
      * @param string $username
diff --git a/module/fid/src/Service/DataTransferObject/Order.php b/module/fid/src/Service/DataTransferObject/Order.php
index 51863f887a8ea3918357a8662023cfbd21177222..caf48778a971acf3b7f7e449259199a89cbcea08 100644
--- a/module/fid/src/Service/DataTransferObject/Order.php
+++ b/module/fid/src/Service/DataTransferObject/Order.php
@@ -32,6 +32,7 @@ class Order
      * @Groups({
      *     "order:creation:response",
      *     "order:list:response",
+     *     "order:update:request",
      *     "user:details:response",
      *     "user:creation:response",
      *     "user:update:response"
@@ -44,6 +45,7 @@ class Order
      * @Groups({
      *     "order:creation:request",
      *     "order:creation:response",
+     *     "order:update:request",
      *     "order:list:response",
      *     "user:details:response",
      *     "user:creation:response",
@@ -58,6 +60,7 @@ class Order
      *     "order:creation:request",
      *     "order:creation:response",
      *     "order:list:response",
+     *     "order:update:request",
      *     "user:details:response",
      *     "user:creation:response",
      *     "user:update:response"
@@ -71,6 +74,7 @@ class Order
      *     "order:creation:request",
      *     "order:creation:response",
      *     "order:list:response",
+     *     "order:update:request",
      *     "user:details:response",
      *     "user:creation:response",
      *     "user:update:response"
@@ -83,6 +87,7 @@ class Order
      * @Groups({
      *     "order:creation:request",
      *     "order:creation:response",
+     *     "order:update:request",
      *     "order:list:response",
      *     "user:details:response",
      *     "user:creation:response",
@@ -96,6 +101,7 @@ class Order
      * @Groups({
      *     "order:creation:response",
      *     "order:list:response",
+     *     "order:update:request",
      *     "user:details:response",
      *     "user:creation:response",
      *     "user:update:response"
@@ -103,6 +109,8 @@ class Order
      */
     protected $createdAt;
 
+    const DATETIME_FORMAT = 'Y-m-d H:i:s';
+
     /**
      * @return string|null
      */
@@ -203,4 +211,60 @@ class Order
     {
         return $this->getLabel();
     }
+
+    public function getDueDate(): ? \DateTime
+    {
+        return (!empty($this->data['dueDate']))
+            ? \DateTime::createFromFormat(self::DATETIME_FORMAT,$this->data['dueDate'])
+            : null;
+    }
+
+    /**
+     * @param \DateTime $dueDate
+     */
+    public function setDueDate(\DateTime $date)
+    {
+        $data = $this->getData();
+        $data['dueDate'] = $date->format(self::DATETIME_FORMAT);
+        $this->setData($data);
+    }
+
+    public function displayDueDate(): String
+    {
+        return $this->getDueDate() ? $this->getDueDate()->format('d.m.Y') : '';
+    }
+
+    public function isOverdue () : bool
+    {
+        if ($duedate = $this->getDueDate())
+        {
+            $now = new \DateTime();
+            return $now > $duedate ? true : false;
+        }
+        else {
+            return false;
+        }
+    }
+
+    /**
+     * @return string
+     */
+    public function getStatus(): ? string
+    {
+        return $this->data['status'] ?? null;
+    }
+
+    /**
+     * @param string $status
+     */
+    public function setStatus(?string $status): void
+    {
+        if($status != null) {
+            $this->data['status'] = $status;
+        }
+    }
+
+    public function getRecordId() {
+        return $this->data['record']['id'] ?? null;
+    }
 }
\ No newline at end of file
diff --git a/themes/fid/languages/fid/de.ini b/themes/fid/languages/fid/de.ini
index 0a3fee6dac272d902870c7d7531427e88eedd530..69dd4b1f2c967135d74704519c20b2ca0900a94b 100644
--- a/themes/fid/languages/fid/de.ini
+++ b/themes/fid/languages/fid/de.ini
@@ -183,4 +183,19 @@ acquisition_permission_denied = "Ihr Konto ist für Bestellungen zurzeit gesperr
 
 number_of_pages = "Seiten"
 
-FID_services = "FID Services"
\ No newline at end of file
+FID_services = "FID Services"
+
+status_open = "offen"
+status_processing = "wird bearbeitet"
+status_loan = "ausgeliehen"
+status_completed = "erfolgreich erledigt"
+status_closed = "geschlossen"
+
+order_label_status = "Status"
+order_label_due_date = "Leihfrist"
+
+order_list = "Liste aller Bestellungen"
+edit_order_error = "Bestellung kann nicht bearbeitet werden"
+order_update_success = "Bestellung aktualisiert"
+order_update_error = "Fehler beim Aktualisierne der Bestellung"
+order_type = "Typ"
\ No newline at end of file
diff --git a/themes/fid/languages/fid/en.ini b/themes/fid/languages/fid/en.ini
index 01cd367904a8b26b3886d97ca5cca59e5ed3696b..6e12cc06afe719d7a3b7e4f6a71c2e0fb2e668b6 100644
--- a/themes/fid/languages/fid/en.ini
+++ b/themes/fid/languages/fid/en.ini
@@ -179,4 +179,19 @@ acquisition_permission_denied = "Your account is currently blocked for orders."
 
 number_of_pages = "Pages"
 
-FID_services = "FID Services"
\ No newline at end of file
+FID_services = "FID Services"
+
+status_open = "open"
+status_processing = "is processed"
+status_loan = "lent"
+status_completed = "successfully completed"
+status_closed = "closed"
+
+order_label_status = "Status"
+order_label_due_date = "Due date"
+
+order_list = "List of all orders"
+edit_order_error = "Order cannot be processed"
+order_update_success = "Order updated"
+order_update_error = "Error on updating order"
+order_type = "Type"
\ No newline at end of file
diff --git a/themes/fid/templates/fid/order/order-edit-form-basic.phtml b/themes/fid/templates/fid/order/order-edit-form-basic.phtml
new file mode 100644
index 0000000000000000000000000000000000000000..0f9decad5a4a0772b9e30ff8f5e7e5e69c0e7ed3
--- /dev/null
+++ b/themes/fid/templates/fid/order/order-edit-form-basic.phtml
@@ -0,0 +1,73 @@
+<!-- fid: fid - order - order-edit-form-basic -->
+<?php
+/**
+ * Copyright (C) 2021 Leipzig University Library
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * @author   Alexander Purr <purr@ub.uni-leipzig.de>
+ * @license  http://opensource.org/licenses/gpl-2.0.php GNU GPLv2
+ */
+
+use Zend\Form\Element;
+use Zend\Form\Form;
+use Zend\Form\View\Helper\FormElementErrors;
+use Zend\Form\View\Helper\FormLabel;
+use Zend\Form\View\Helper\FormSubmit;
+
+/** @var Form $form */
+/** @var FormLabel $formLabel */
+/** @var FormSubmit $formSubmit */
+/** @var FormElementErrors $formElementErrors */
+$form = $this->form;
+$formLabel = $this->formLabel();
+$formLabel->setTranslatorTextDomain('fid');
+$formSubmit = $this->formSubmit();
+$formSubmit->setTranslatorTextDomain('fid');
+$formElementErrors = $this->formElementErrors();
+$formElementErrors->setTranslatorTextDomain('fid');
+?>
+
+<?= $this->form()->openTag($form) ?>
+
+<?php /* status */ ?>
+<?php
+/** @var Element\Select $elemStatus */
+$elemStatus = $form->get('status');
+$elemStatus->setAttributes(['class' => 'form-control']);
+?>
+  <div class="form-group">
+      <?= $this->formElementErrors($elemStatus) ?>
+      <?= $this->formLabel($elemStatus) ?>
+      <?= $this->formSelect($elemStatus) ?>
+  </div>
+
+<?php /* submit button */ ?>
+<?php
+/** @var Element\Submit $elemSubmit */
+$elemSubmit = $form->get('submit');
+$elemSubmit->setAttributes(['class' => 'btn btn-primary']);
+?>
+  <div class="form-group">
+    <div class="col-lg-11 col-md-9 col-sm-11 col-xs-12">
+        <?= $this->formSubmit($elemSubmit) ?>
+      <a href="<?= $this->url('fid/admin/orders') ?>"
+         class="btn btn-primary">
+          <?= $this->transEsc('Cancel') ?>
+      </a>
+    </div>
+  </div>
+
+<?= $this->form()->closeTag($form) ?>
+<!-- fid: fid - order - order-edit-form-basic -END -->
diff --git a/themes/fid/templates/fid/order/order-edit-form-complete.phtml b/themes/fid/templates/fid/order/order-edit-form-complete.phtml
new file mode 100644
index 0000000000000000000000000000000000000000..833487b43d235a882e7d4c37f9c2c7ae4b381142
--- /dev/null
+++ b/themes/fid/templates/fid/order/order-edit-form-complete.phtml
@@ -0,0 +1,85 @@
+<!-- fid: fid - order - order-edit-form-complete -->
+<?php
+/**
+ * Copyright (C) 2021 Leipzig University Library
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * @author   Alexander Purr <purr@ub.uni-leipzig.de>
+ * @license  http://opensource.org/licenses/gpl-2.0.php GNU GPLv2
+ */
+
+use Zend\Form\Element;
+use Zend\Form\Form;
+use Zend\Form\View\Helper\FormElementErrors;
+use Zend\Form\View\Helper\FormLabel;
+use Zend\Form\View\Helper\FormSubmit;
+
+/** @var Form $form */
+/** @var FormLabel $formLabel */
+/** @var FormSubmit $formSubmit */
+/** @var FormElementErrors $formElementErrors */
+$form = $this->form;
+$formLabel = $this->formLabel();
+$formLabel->setTranslatorTextDomain('fid');
+$formSubmit = $this->formSubmit();
+$formSubmit->setTranslatorTextDomain('fid');
+$formElementErrors = $this->formElementErrors();
+$formElementErrors->setTranslatorTextDomain('fid');
+?>
+
+<?= $this->form()->openTag($form) ?>
+
+    <?php /* status */ ?>
+    <?php
+    /** @var Element\Select $elemStatus */
+    $elemStatus = $form->get('status');
+    $elemStatus->setAttributes(['class' => 'form-control']);
+    ?>
+    <div class="form-group">
+      <?= $this->formElementErrors($elemStatus) ?>
+      <?= $this->formLabel($elemStatus) ?>
+      <?= $this->formSelect($elemStatus) ?>
+    </div>
+
+    <?php /* due date */ ?>
+    <?php
+    /** @var Element\Date $elemDueDate */
+    $elemDueDate = $form->get('due_date');
+    $elemDueDate->setAttributes(['class' => 'form-control']);
+    ?>
+    <div class="form-group">
+        <?= $this->formElementErrors($elemDueDate) ?>
+        <?= $this->formLabel($elemDueDate) ?>
+        <?= $this->formElement($elemDueDate) ?>
+    </div>
+
+    <?php /* submit button */ ?>
+    <?php
+    /** @var Element\Submit $elemSubmit */
+    $elemSubmit = $form->get('submit');
+    $elemSubmit->setAttributes(['class' => 'btn btn-primary']);
+    ?>
+    <div class="form-group">
+      <div class="col-lg-11 col-md-9 col-sm-11 col-xs-12">
+          <?= $this->formSubmit($elemSubmit) ?>
+        <a href="<?= $this->url('fid/admin/orders') ?>"
+           class="btn btn-primary">
+            <?= $this->transEsc('Cancel') ?>
+        </a>
+      </div>
+    </div>
+
+<?= $this->form()->closeTag($form) ?>
+<!-- fid: fid - order - order-edit-form-complete -->
diff --git a/themes/fid/templates/fid/order/order-edit.phtml b/themes/fid/templates/fid/order/order-edit.phtml
new file mode 100644
index 0000000000000000000000000000000000000000..4b48b8ee68a0cb23d810342f33452436b840ed13
--- /dev/null
+++ b/themes/fid/templates/fid/order/order-edit.phtml
@@ -0,0 +1,66 @@
+<!-- fid: fid - order - order-edit -->
+<?php
+/**
+ * Copyright (C) 2011 Leipzig University Library
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * @author   Alexander Purr <purr@ub.uni-leipzig.de>
+ * @license  http://opensource.org/licenses/gpl-2.0.php GNU GPLv2
+ */
+
+use Zend\Form\Element;
+use Zend\Form\Form;
+use Zend\Form\View\Helper\FormElementErrors;
+use Zend\Form\View\Helper\FormLabel;
+use Zend\Form\View\Helper\FormSubmit;
+
+$driver = $this->driver;
+$order = $this->order;
+$this->user = $order->getUser();
+/** @var Form $form */
+$form = $this->form;
+$this->headTitle($title = $this->translate("fid::acquisition_{$order->getType()}"));
+?>
+<h1><?= $title ?></h1>
+<?= $this->flashmessages() ?>
+
+<?=$this->render('fid/record/acquisition-contact-details'); ?>
+
+<?php
+  $driver = $this->driver;
+  $formatter = $this->recordDataFormatter();
+  $this->coreFields = $formatter->getData($driver, $formatter->getDefaults('fid-acquisition-general'));
+?>
+<?=$this->render('fid/record/acquisition-record-details'); ?>
+
+<h2><?=$this->translate("Status")?></h2>
+
+  <div class="form-group">
+      <label><?= $this->translate('Ordered on') ?></label>
+      <div class="form-control"><?= $this->escapeHtml($order->getCreatedAt()->format('d.m.Y')) ?></div>
+  </div>
+
+<?php if ($form instanceof Form): ?>
+    <?=$this->render("fid/order/{$form->getName()}"); ?>
+<?php else: ?>
+  <div class="form-group">
+      <a href="<?= $this->url('fid/admin/orders') ?>"
+         class="btn btn-primary">
+          <?= $this->transEsc('Cancel') ?>
+      </a>
+    </div>
+  </div>
+<?php endif; ?>
+<!-- fid: fid - order - order-edit - END -->
diff --git a/themes/fid/templates/fid/record/acquisition-contact-details.phtml b/themes/fid/templates/fid/record/acquisition-contact-details.phtml
new file mode 100644
index 0000000000000000000000000000000000000000..86df40cd37ce0eb314b45cd41e87fe9449f6003a
--- /dev/null
+++ b/themes/fid/templates/fid/record/acquisition-contact-details.phtml
@@ -0,0 +1,18 @@
+<!-- fid: fid - record - acquisition-contact-details -->
+<?php
+/** @var \fid\Service\DataTransferObject\User $user */
+?>
+<h2><?=$this->translate("fid::acquisition_delivery_to")?></h2>
+<table class="table table-striped">
+  <tbody>
+    <tr>
+      <th><?= $this->translate("fid::acquisition_order_delivery_name") ?></th>
+      <td><?= $this->user->getFirstname() ?> <?= $this->user->getLastname() ?></td>
+    </tr>
+    <tr>
+      <th><?= $this->translate("Email Address") ?></th>
+      <td><?= $this->user->getUsername() ?></td>
+    </tr>
+  </tbody>
+</table>
+<!-- fid: fid - record - acquisition-contact-details - END -->
diff --git a/themes/fid/templates/fid/user/admin-orders.phtml b/themes/fid/templates/fid/user/admin-orders.phtml
index 3caca066e03db0a678264b53d1d15f7cab8c689b..69ecaa94b96fd61764d029916ea48eae0df1bfa8 100644
--- a/themes/fid/templates/fid/user/admin-orders.phtml
+++ b/themes/fid/templates/fid/user/admin-orders.phtml
@@ -1,26 +1,43 @@
-<!-- fid: fid - admin - order-list -->
+<!-- fid: fid - admin - orders -->
+<?php
+  use fid\Controller\RecordController;
+?>
+
+<h1><?= $this->translate('fid::order_list') ?></h1>
+<?= $this->flashmessages() ?>
+
 <?php if (empty($orders)): ?>
   <?=$this->translate('fid::user_orders_empty')?>
 <?php else: ?>
   <table class="table">
+
     <tr>
+      <?= in_array('type',$this->displayCols)
+          ? "<th>{$this->translate('fid::order_type')}</th>"
+          : ''?>
       <th><?=$this->translate('Date')?></th>
-
-      <!-- fid: fid - admin - order-list - additionals-headers -->
       <th><?=$this->translate('fid::order_record')?></th>
       <th><?=$this->translate('fid::order_user')?></th>
-      <!-- fid: fid - admin - order-list - additionals-headers - END -->
-
+      <?= in_array('status',$this->displayCols)
+          ? "<th>{$this->translate('fid::order_label_status')}</th>"
+          : ''?>
+      <?= in_array('dueDate',$this->displayCols)
+          ? "<th>{$this->translate('fid::order_label_due_date')}</th>"
+          : '' ?>
+      <?= in_array('edit',$this->displayCols)
+          ? "<th></th>"
+          : ''?>
     </tr>
+
     <?php foreach ($orders as $order):
       /** @var $order \fid\Service\DataTransferObject\Order */?>
 
-      <!-- fid: fid - admin - order-list - entry -->
       <tr name="order-<?=$this->escapeHtml($order->getId())?>">
+        <?= in_array('status',$this->displayCols)
+            ? "<td>" . $this->translate("fid::acquisition_{$order->getType()}") . "</td>"
+            : '' ?>
         <td><?=$this->escapeHtml($order->getCreatedAt()->format('d.m.Y'))?></td>
-          <?php $data = $order->getData() ?>
 
-        <!-- fid: fid - admin - order-list - data -->
         <?=$this->render('fid/user/orders/additionals-data', compact('order'))?>
         <td>
           <?php
@@ -31,12 +48,20 @@
             <?= $this->translate('fid::user_deleted') ?>
           <?php endif; ?>
         </td>
-        <!-- fid: fid - admin - order-list - data - END -->
-
+        <?= in_array('status',$this->displayCols)
+            ? "<td>" . ($order->getStatus() ? $this->translate('fid::status_'.$order->getStatus()) : '' . "</td>")
+            : '' ?>
+        <?php if(in_array('dueDate',$this->displayCols)): ?>
+          <?= ($order->getType() == RecordController::PDA) && ($order->isOverdue()) && ($order->getStatus() != 'completed')
+            ? "<td><div class=\"alert alert-danger\" role=\"alert\">{$this->icon('warning')}{$order->displayDueDate()}</div></td>"
+            : "<td>{$order->displayDueDate()}</td>" ?>
+        <?php endif; ?>
+        <?= in_array('edit',$this->displayCols)
+            ? "<td><a href=\"{$this->url('fid/admin/editOrder', ['orderid' => $order->getId()])}\">{$this->icon('pen')}</td>"
+            : '' ?>
       </tr>
-      <!-- fid: fid - admin - order-list - entry - END -->
 
     <?php endforeach; ?>
   </table>
 <?php endif; ?>
-<!-- fid: fid - admin - order-list - END -->
\ No newline at end of file
+<!-- fid: fid - admin - orders - END -->
\ No newline at end of file
diff --git a/themes/fid/templates/fid/user/orders.phtml b/themes/fid/templates/fid/user/orders.phtml
index b67efccf49ff82234e7c54ac1a542efe6f8a3d74..9c3448e863909d0770a1218aacb3f37b1d4c1d86 100644
--- a/themes/fid/templates/fid/user/orders.phtml
+++ b/themes/fid/templates/fid/user/orders.phtml
@@ -6,9 +6,12 @@
     <tr>
       <th><?=$this->translate('Date')?></th>
       <?=$this->render('fid/user/orders/additionals-headers');?>
+      <?= in_array('status',$this->displayCols)
+          ? "<th>{$this->translate('fid::order_label_status')}</th>"
+          : ''?>
     </tr>
     <?php foreach ($orders as $order): ?>
-      <?=$this->render('fid/user/orders/entry', compact('order'))?>
+      <?=$this->render('fid/user/orders/entry', compact('order','displayCols'))?>
     <?php endforeach; ?>
   </table>
 <?php endif; ?>
diff --git a/themes/fid/templates/fid/user/orders/entry.phtml b/themes/fid/templates/fid/user/orders/entry.phtml
index 580b7b8b65a6662cdba5721a8e048155f08c6a23..daecf9de8e5104e2c4bca6451b0ad0ecb82a4878 100644
--- a/themes/fid/templates/fid/user/orders/entry.phtml
+++ b/themes/fid/templates/fid/user/orders/entry.phtml
@@ -2,5 +2,8 @@
 <tr name="order-<?=$this->escapeHtml($this->order->getId())?>">
   <td><?=$this->escapeHtml($this->order->getCreatedAt()->format('d.m.Y'))?></td>
   <?=$this->render('fid/user/orders/additionals-data', compact('order'))?>
+  <?= in_array('status',$this->displayCols)
+      ? "<td>" . ($order->getStatus() ? $this->translate('fid::status_'.$order->getStatus()) : '' . "</td>")
+      : '' ?>
 </tr>
 <!-- fid: fid - user - orders - entry - END -->
\ No newline at end of file