OK guys, the problem with CQL2RPN seems solved. But the other one is still here. I explain again (sorry to bug you, but i'm really stuck) : zebra.cfg is : ================================ profilePath: ${srcdir:-.}:/usr/local/share/idzebra/tab/ attset: bib1.att attset: explain.att recordId: (bib1, Identifier-standard) recordType: grs.xml lockDir: lock setTmpDir: tmp keyTmpDir: tmp memMax: 100 perm.anonymous: rw encoding utf-8 storeKeys:1 storeData:1 =============================== I have a collection.abs in my directory, to be able to read MARC::Record->as_XML : ======================== name collection attset bib1.att esetname F @ esetname B @ marc usmarc.mar xpath disable all any melm 090$a identifier-standard,identifier-standard:p melm 700 author,author:p melm 200$a title,title:p melm 200$e title,title:p melm 020$a isbn melm 011$a issn (yes, on my sample the 090$a is my primary key) ======================== and when I run the following script : my $Zpackage = $Zconn->package(); $Zpackage->option(databaseName => 'Koha'); $Zpackage->option(action => "specialUpdate"); $Zpackage->option(record => $record); $Zpackage->send("update"); $Zpackage->destroy; I get : 15:40:34-03/02 zebrasrv(1) [log] Received DB Update 15:40:34-03/02 zebrasrv(1) [log] action 15:40:34-03/02 zebrasrv(1) [log] specialUpdate 15:40:34-03/02 zebrasrv(1) [log] database: Koha 15:40:34-03/02 zebrasrv(1) [log][app2] zebra_register_open rw = 1 useshadow=0 p=0x8146570,n=,rp=(none) 15:40:34-03/02 zebrasrv(1) [log] profilePath=.:/usr/local/share/idzebra/tab/ cwd=/home/paul/koha.dev/head/misc/zebra/unimarc 15:40:34-03/02 zebrasrv(1) [log] record 0 type XML 15:40:34-03/02 zebrasrv(1) [log] 3129 bytes: <?xml version="1.0" encoding="UTF-8"?> <collection xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.loc.gov/MARC21/slim http://www.l ... 15:40:34-03/02 zebrasrv(1) [warn] Record didn't contain match fields in (bib1, identifier-standard) 15:40:34-03/02 zebrasrv(1) [warn] Bad match criteria (recordID) 15:40:34-03/02 zebrasrv(1) [log] zebra_update_record returned res=1 15:40:34-03/02 zebrasrv(1) [warn] zebra_update_record failed r=1 15:40:34-03/02 zebrasrv(1) [log] zebra_end_trans 15:40:34-03/02 zebrasrv(1) [log] sorting section 1 15:40:34-03/02 zebrasrv(1) [log] Iterations . . . 36 15:40:34-03/02 zebrasrv(1) [log] Distinct words . 18 15:40:34-03/02 zebrasrv(1) [log] Updates. . . . . 14 15:40:34-03/02 zebrasrv(1) [log] Deletions. . . . 2 15:40:34-03/02 zebrasrv(1) [log] Insertions . . . 2 15:40:34-03/02 zebrasrv(1) [log][app2] zebra_register_close p=0x8146570 15:40:34-03/02 zebrasrv(1) [log] Records: 0 i/u/d 0/0/0 15:40:34-03/02 zebrasrv(1) [log] user/system: 1/0 15:40:34-03/02 zebrasrv(1) [request] EsRequest ERROR 224 update_record failed 15:40:34-03/02 zebrasrv(1) [session] Connection closed by client If I remove the recordId line in zebra.cfg, everything goes well, except I need this line to be able to modify my records ! PS : bib1 is the standard bib1.att file, containing : att 1007 Identifier-standard -- Paul POULAIN et Henri Damien LAURENT Consultants indépendants en logiciels libres et bibliothéconomie (http://www.koha-fr.org)