Necesitas instalar pixassociates/sortable-behavior-bundle y stof/doctrine-extensions-bundle

composer require stof/doctrine-extensions-bundle
composer require pixassociates/sortable-behavior-bundle

Añade la configuración en pix_sortable.yaml
Agregando la entidad y el campo en position_field (aquí wconf, y el campo de posición)

pix_sortable_behavior:
    db_driver: orm # mongodb default value : orm
    position_field:
        default: position #default value : position
        entities:
            App\Entity\Wconf: position
    sortable_groups:
        entities:
            #AppBundle\Entity\Baz: [ group ]
            
stof_doctrine_extensions:
    orm:
        default:
            sortable: true

En la entidad, necesitas crear un campo que gestionará la posición (llamémoslo, por casualidad, posición)

use Gedmo\Mapping\Annotation as Gedmo;

    /**
     * @Gedmo\SortablePosition
     * @ORM\Column(type="integer")
     */
    private $position;

    public function getPosition(): ?int
    {
        return $this->position;
    }

    public function setPosition(int $position): self
    {
        $this->position = $position;

        return $this;
    }


En el controlador, necesitas agregar la referencia en use, añadir la ruta y el botón

use Sonata\AdminBundle\Route\RouteCollection;
use Pix\SortableBehaviorBundle\Services\PositionORMHandler as PositionHandler;


public $last_position = 0;
private $positionService;

protected $datagridValues = array(
	'_page' => 1,
	'_sort_by' => 'position',
	'_sort_order' => 'ASC',
);

public function setPositionService(PositionHandler $positionHandler)
{
        $this->positionService = $positionHandler;
}


protected function configureListFields(ListMapper $listMapper)
{
$listMapper->add('_action', null, array(
            'actions' => array(
                'move' => array(
                    'template' => '@PixSortableBehavior/Default/_sort_drag_drop.html.twig',
                    'enable_top_bottom_buttons' => false, 
                ),
            ),
        ))
        ;
}

protected function configureRoutes(RouteCollection $collection)
{
        $collection->add('move', $this->getRouterIdParameter().'/move/{position}');
}



Luego añade los activos JavaScript en config/sonata_admin.yaml, agrega el servicio gedmo, y añade la configuración para argumentos y llamadas

                    
    assets:
        extra_javascripts:
            - bundles/pixsortablebehavior/js/jquery-ui.min.js // if you haven't got jQuery UI yet.
            - bundles/pixsortablebehavior/js/init.js
            

En la configuración de servicios:

    gedmo.listener.sortable:
        class: Gedmo\Sortable\SortableListener
        calls:
            - [setAnnotationReader, ['@annotation_reader']]
        tags:
            - { name: doctrine.event_subscriber, connection: default }


    admin.wconf:
        class: App\Admin\WconfAdmin
        arguments: [~, App\Entity\Wconf, 'PixSortableBehaviorBundle:SortableAdmin']
        tags:
            - { name: sonata.admin, manager_type: orm, label: "Configuration des types" }
        public: true        
        calls:
              - [setPositionService, ["@pix_sortable_behavior.position"]]