{"id":14200,"date":"2013-05-17T14:03:10","date_gmt":"2013-05-17T12:03:10","guid":{"rendered":"https:\/\/www.artera.net\/it\/blog\/?p=14200"},"modified":"2023-02-27T14:41:33","modified_gmt":"2023-02-27T14:41:33","slug":"import-export-magento-profili-avanzati","status":"publish","type":"post","link":"https:\/\/www.artera.net\/it\/ecommerce\/import-export-magento-profili-avanzati\/","title":{"rendered":"Import\/export in Magento: i profili avanzati"},"content":{"rendered":"<p>Nelle ultime puntate abbiamo visto come <a href=\"https:\/\/www.artera.net\/it\/blog\/ecommerce\/importazione-esportazione-magento\" title=\"Introduzione ad importazione ed esportazione in Magento\">esportare ed importare dati<\/a> (nello specifico clienti e prodotti) da e verso Magento, utilizzando le funzionalit\u00e0 che ci vengono fornite dal backend. Tramite queste semplici funzionalit\u00e0 siamo in grado efficacemente di creare un file contenente tutto il nostro catalogo, aperto a vari utilizzi, come per esempio il passaggio di dati ad un sistema offline che tiene traccia dei prodotti in vendita, ecc.<\/p>\n<p>Ma se io avessi bisogno di andare un po&#8217; oltre quello che mi viene permesso da queste funzionalit\u00e0? Se io avessi bisogno per esempio di esportare un&#8217;entit\u00e0 che non sia un elenco di prodotti o clienti? Per poter gestire una tale situazione Magento ci offre la possibilit\u00e0 di <strong>creare dei profili avanzati<\/strong>.<\/p>\n<p>Che cos&#8217;\u00e8 un profilo avanzato? Un profilo avanzato non \u00e8 altro che uno dei <strong>profili di import\/export<\/strong> che abbiamo visto nell&#8217;articolo precedente, non realizzato tramite la creazione guidata, ma creato direttamente da noi impostando le azioni del profilo tramite una struttura XML.<\/p>\n<p>Per capire cosa s&#8217;intende in questo caso per struttura XML, andiamo in Sistema > Importa\/Esporta > Dataflow &#8211; Profili e apriamo il profilo <em>&#8220;Export All Products&#8221;<\/em>. Nel menu a sinistra clicchiamo su <em>&#8220;Azioni profilo XML&#8221;<\/em>, si aprir\u00e0 una pagina con all&#8217;interno un&#8217;area di testo chiamata <strong>Azioni XML<\/strong>.<\/p>\n<p><img fetchpriority=\"high\" decoding=\"async\" class=\"aligncenter size-full wp-image-14208\" alt=\"azioni xml profilo avanzato\" src=\"https:\/\/www.artera.net\/wp-content\/uploads\/2013\/05\/azionixml.png\" width=\"618\" height=\"349\" \/><\/p>\n<p>All&#8217;interno di tale area vedremo scritti vari blocchi XML. Tali blocchi definiscono le azioni che deve compiere il profilo quando viene eseguito. In sostanza seguendo la procedura della creazione guidata del profilo non abbiamo fatto altro che realizzare questa struttura XML.<\/p>\n<p>In questo articolo vedremo la teoria sulla creazione di un profilo avanzato tramite la definizione delle azioni XML, come introduzione al prossimo articolo dove vedremo un&#8217;applicazione pratica personalizzata: l&#8217;esportazione dell&#8217;albero delle categorie in un file CSV.<\/p>\n<h2>Struttura di un profilo avanzato<\/h2>\n<p>Vediamo com&#8217;\u00e8 un strutturato un profilo avanzato. Un profilo esegue una serie di azioni. Un azione \u00e8 definita da:<\/p>\n<ul>\n<li><strong>Tipo:<\/strong> il tipo di un&#8217;azione indica quale ruolo avr\u00e0 nel processo d&#8217;esecuzione, nel nostro caso d&#8217;esportazione. In termini di programmazione indica la classe che contiene il metodo che quest&#8217;azione utilizzer\u00e0 per svolgere il suo compito.<\/li>\n<li><strong>Metodo:<\/strong> il metodo indica quale funzione appartenente al tipo dell&#8217;azione che verr\u00e0 utilizzata per la sua esecuzione.<\/li>\n<li><strong>Variabili:<\/strong> per ogni azione \u00e8 possibile definire delle variabili in base al tipo e al metodo dell&#8217;azione, per esempio nel nostro caso possiamo definire dove salvare il file d&#8217;esportazione, se in locale o in una cartella remota.<\/li>\n<\/ul>\n<p>I tipi che possiamo impostare alle azioni sono divisi in tre gruppi:<\/p>\n<ul>\n<li><strong>Adapter:<\/strong> definisce le azioni che si occupano di ottenere o inviare i dati, per esempio estrarre i dati dal database.<\/li>\n<li><strong>Parser:<\/strong> definisce le azioni che si occupano di elaborare i dati, per esempio convertire i dati ottenuti dal database per poterli salvare su un file CSV.<\/li>\n<li><strong>Mapper<\/strong> definisce le azioni che si occupano d&#8217;impostare e di associare un&#8217;etichetta ai valori del file d&#8217;esportazione o importazione.<\/li>\n<\/ul>\n<p>Ecco un esempio di come \u00e8 strutturato l&#8217;XML di un&#8217;azione<\/p>\n<p>[code type=&#8221;markup&#8221;]<br \/>\n<action type=\"dataflow\/convert_adapter_io\" method=\"load\"><br \/>\n\t<var name=\"type\">file<\/var><br \/>\n\t<var name=\"path\">var\/import<\/var><br \/>\n\t<var name=\"filename\"><![CDATA[products.csv]]><\/var><br \/>\n\t<var name=\"format\"><![CDATA[csv]]><\/var><br \/>\n<\/action><br \/>\n[\/code]<\/p>\n<p>Per creare un profilo avanzato andiamo in Sistema > Importa\/Esporta > Dataflow &#8211; Profili avanzati. Clicchiamo su <em>&#8220;Aggiungi Nuovo Profilo&#8221;<\/em>. Si aprir\u00e0 una pagina con due campi:<\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-14237\" alt=\"azioni xml nuove\" src=\"https:\/\/www.artera.net\/wp-content\/uploads\/2013\/05\/azionixml_new.png\" width=\"618\" height=\"424\" \/><\/p>\n<ul>\n<li><strong>Nome profilo:<\/strong> il nome del profilo, deve essere univoco.<\/li>\n<li><strong>Azioni XML:<\/strong> in quest&#8217;area scriveremo le strutture XML che rappresentano le azioni.<\/li>\n<\/ul>\n<p>Vediamo ora le azioni che imposteremo per il nostro profilo, analizzando i tre componenti che le gestiscono.<\/p>\n<h2>Adapter<\/h2>\n<p>Un <em>&#8220;Adapter&#8221;<\/em> gestisce <strong>il caricamento o il salvataggio di dati<\/strong> da o verso una determinata risorsa, che pu\u00f2 essere un file locale o remoto, un database, un webservice ecc&#8230;<br \/>\nEsistono tre possibili azioni che pu\u00f2 eseguire un <em>&#8220;Adapter&#8221;<\/em>:<\/p>\n<ul>\n<li>Caricare i dati da una risorsa, utilizzando il metodo predefinito <em>&#8220;load&#8221;<\/em>.<\/li>\n<li>Salvare i dati in una risorsa, utilizzando il metodo predefinito <em>&#8220;save&#8221;<\/em>.<\/li>\n<li>Elaborare un record convertito tramite un azione di tipo <em>&#8220;Parser&#8221;<\/em>, definendo una coppia di variabili <em>&#8220;adapter &#8211; method&#8221;<\/em> all&#8217;interno di un&#8217;azione di tipo <em>&#8220;Parser&#8221;<\/em>.<\/li>\n<\/ul>\n<p>In Magento sono gi\u00e0 presenti alcune classi <em>&#8220;Adapter&#8221;<\/em> che possono essere utilizzate, le potete trovare nella cartella <em>&#8220;app\/code\/core\/Dataflow\/Model\/Convert\/Adapter&#8221;<\/em>, per\u00f2 non in tutti casi i due metodi <em>&#8220;load&#8221;<\/em> e <em>&#8220;save&#8221;<\/em> sono implementati.<\/p>\n<p>Nei casi pi\u00f9 comuni, quando dovrete salvare o leggere dati da un file locale o remoto potete utilizzare:<\/p>\n<h3>dataflow\/convert_adapter_io<\/h3>\n<p>Un&#8217;azione di questo tipo esegue la lettura e il salvataggio dalla risorsa che indicheremo tramite le variabili della classe.<\/p>\n<p>[code type=&#8221;markup&#8221;]<br \/>\n<action type=\"dataflow\/convert_adapter_io\" method=\"load\"><br \/>\n\t<var name=\"type\">file<\/var><br \/>\n\t<var name=\"path\">var\/import<\/var><br \/>\n\t<var name=\"filename\"><![CDATA[products.csv]]><\/var><br \/>\n\t<var name=\"format\"><![CDATA[csv]]><\/var><br \/>\n<\/action><br \/>\n[\/code]<\/p>\n<p>Vediamo la lista delle possibili impostazioni:<\/p>\n<ul>\n<li><strong>type:<\/strong> definisce il tipo di connessione alla risorsa che vogliamo elaborare. Valori validi: file, ftp.<\/li>\n<li><strong>path:<\/strong> definisce il percorso relativo del file.<\/li>\n<li><strong>filename: <\/strong> nome del file<\/li>\n<\/ul>\n<p>I prossimi campi andranno utilizzati nel caso che abbiamo definito <em>&#8220;type&#8221;<\/em> con <em>&#8220;ftp&#8221;<\/em><\/p>\n<ul>\n<li><strong>host:<\/strong> definisce l&#8217;host remoto a cui connettersi.<\/li>\n<li><strong>port:<\/strong> definisce la porta ftp; se non viene specificata viene automaticamente utilizzata la porta 21<\/li>\n<li><strong>user:<\/strong> definisce lo username dell&#8217;account ftp.<\/li>\n<li><strong>password:<\/strong> definisce la password dell&#8217;account ftp.<\/li>\n<li><strong>timeout:<\/strong> definisce dopo quanto tempo di inattivit\u00e0 si deve chiudere la connessione; valore predefinito: 90.<\/li>\n<li><strong>file_mode:<\/strong> definisce la modalit\u00e0 di lettura del file; valore predefinito <em>&#8220;FPT_BINARY&#8221;<\/em>.<\/li>\n<li><strong>ssl:<\/strong> se il campo non \u00e8 vuoto allora viene utilizzata una connessione ssl.<\/li>\n<li><strong>passive:<\/strong> definisce la modalit\u00e0 di connessione; valore predefinito <em>&#8220;false&#8221;<\/em>.<\/li>\n<\/ul>\n<h3>customer\/convert_adapter_customer &#8211; catalog\/convert_adapter_product<\/h3>\n<p>Tramite queste due classi Magento offre due <em>&#8220;Adapter&#8221;<\/em> predefiniti per l&#8217;<strong>estrazione o salvataggio dei dati<\/strong> di clienti o prodotti.<br \/>\nSe per esempio vogliamo estrarre tutti i dati di tutti i clienti di uno specifico store scriveremo un&#8217;azione di questo tipo:<\/p>\n<p>[code type=&#8221;markup&#8221;]<br \/>\n<action type=\"customer\/convert_adapter_customer\" method=\"load\"><br \/>\n\t<var name=\"store\"><![CDATA[0]]><\/var><br \/>\n<\/action><br \/>\n[\/code]<\/p>\n<p>In questo caso vediamo che nella variabile <em>&#8220;store&#8221;<\/em> definiamo l&#8217;id numerico dello store che abbiamo selezionato per l&#8217;estrazione dei dati.<\/p>\n<p>Inoltre queste due classi ci permettono di filtrare i dati da estrarre, utilizzando delle variabili, definite con questa sintassi:<br \/>\n[code type=&#8221;markup&#8221;]<br \/>\n<var\u00a0name=\"filter\/id attributo da filtrare\"><![CDATA[a]]><\/var><br \/>\n[\/code]<br \/>\nla lista degli attributi su cui \u00e8 possibile filtrare i clienti \u00e8:<\/p>\n<ul>\n<li>firstname<\/li>\n<li>lastname<\/li>\n<li>email<\/li>\n<li>group<\/li>\n<li>addressType (valori validi: both, default_billing, default_shipping)<\/li>\n<li>telephone<\/li>\n<li>postcode<\/li>\n<li>country<\/li>\n<li>region<\/li>\n<li>created_at\/from<\/li>\n<li>created_at\/to<\/li>\n<\/ul>\n<p>[code type=&#8221;markup&#8221;]<br \/>\n<action type=\"customer\/convert_adapter_customer\" method=\"load\"><br \/>\n\t<var name=\"store\"><![CDATA[0]]><\/var><br \/>\n\t<var name=\"filter\/firstname\"><![CDATA[a]]><\/var><br \/>\n\t<var name=\"filter\/lastname\"><![CDATA[a]]><\/var><br \/>\n\t<var name=\"filter\/email\"><![CDATA[a]]><\/var><br \/>\n\t<var name=\"filter\/group\"><![CDATA[1]]><\/var><br \/>\n\t<var name=\"filter\/adressType\"><![CDATA[default_billing]]><\/var><br \/>\n\t<var name=\"filter\/telephone\"><![CDATA[1]]><\/var><br \/>\n\t<var name=\"filter\/postcode\"><![CDATA[7]]><\/var><br \/>\n\t<var name=\"filter\/country\"><![CDATA[BS]]><\/var><br \/>\n\t<var name=\"filter\/region\"><![CDATA[WA]]><\/var><br \/>\n\t<var name=\"filter\/created_at\/from\"><![CDATA[09\/22\/09]]><\/var><br \/>\n\t<var name=\"filter\/created_at\/to\"><![CDATA[09\/24\/09]]><\/var><br \/>\n<\/action><br \/>\n[\/code]<\/p>\n<p>la lista degli attributi su cui \u00e8 possibili filtrare i prodotti \u00e8:<\/p>\n<ul>\n<li>name<\/li>\n<li>sku<\/li>\n<li>type (valori validi: simple, configurable, grouped, bundle, virtual, downloadable)<\/li>\n<li>attribute_set<\/li>\n<li>price\/from<\/li>\n<li>price\/to<\/li>\n<li>qty\/from<\/li>\n<li>qty\/to<\/li>\n<li>visibility<\/li>\n<li>status<\/li>\n<\/ul>\n<p>[code type=&#8221;markup&#8221;]<br \/>\n<action type=\"catalog\/convert_adapter_product\" method=\"load\"><br \/>\n\t<var name=\"store\"><![CDATA[0]]><\/var><br \/>\n\t<var name=\"filter\/name\"><![CDATA[a]]><\/var><br \/>\n\t<var name=\"filter\/sku\"><![CDATA[1]]><\/var><br \/>\n\t<var name=\"filter\/type\"><![CDATA[simple]]><\/var><br \/>\n\t<var name=\"filter\/attribute_set\"><![CDATA[29]]><\/var><br \/>\n\t<var name=\"filter\/price\/from\"><![CDATA[1]]><\/var><br \/>\n\t<var name=\"filter\/price\/to\"><![CDATA[2]]><\/var><br \/>\n\t<var name=\"filter\/qty\/from\"><![CDATA[1]]><\/var><br \/>\n\t<var name=\"filter\/qty\/to\"><![CDATA[2]]><\/var><br \/>\n\t<var name=\"filter\/visibility\"><![CDATA[2]]><\/var><br \/>\n\t<var name=\"filter\/status\"><![CDATA[1]]><\/var><br \/>\n<\/action><br \/>\n[\/code]<\/p>\n<h2>Parser<\/h2>\n<p>I parser sono i responsabili per la <strong>conversione dei dati tra vari formati<\/strong>, per esempio convertire i dati estratti dal database per poterli salvare su un file CSV.<\/p>\n<p>I metodi che vengono forniti dalle classi di tipo <em>&#8220;Parser&#8221;<\/em> sono <em>&#8220;parse&#8221;<\/em> e <em>&#8220;unparse&#8221;<\/em>. Entrambi i metodi, se appartengono ad una stessa classe, effettuano la medesima conversione, ma nelle due direzioni opposte, quindi se <em>&#8220;parse&#8221;<\/em> converte in dati da database a file, <em>&#8220;unparse&#8221;<\/em> li dovr\u00e0 convertire da file a database.<\/p>\n<p>Vediamo ora i <em>&#8220;Parser&#8221;<\/em> che Magento offre gi\u00e0 pronti per l&#8217;utilizzo.<\/p>\n<h3>dataflow\/convert_parser_csv<\/h3>\n<p>Forse uno dei <em>&#8220;Parser&#8221;<\/em> pi\u00f9 utilizzati che permette di convertire i dati da un file CSV, con il metodo <em>&#8220;parse&#8221;<\/em>, o convertirli per un file CSV, con il metodo <em>&#8220;unparse&#8221;<\/em>. Questa azione definisce come sono rappresentati i dati nel file CSV e nel caso d&#8217;importazione con quale <em>&#8220;Adapter&#8221;<\/em> verranno salvati nel database.<\/p>\n<p>Ecco un esempio di un&#8217;azione definita con questo tipo<\/p>\n<p>[code type=&#8221;markup&#8221;]<br \/>\n<action type=\"dataflow\/convert_parser_csv\" method=\"parse\"><br \/>\n\t<var name=\"delimiter\"><![CDATA[,]]><\/var><br \/>\n\t<var name=\"enclose\"><![CDATA[\"]]><\/var><br \/>\n\t<var name=\"fieldnames\">true<\/var><br \/>\n\t<var name=\"store\"><![CDATA[0]]><\/var><br \/>\n\t<var name=\"decimal_separator\"><![CDATA[.]]><\/var><br \/>\n\t<var name=\"adapter\">catalog\/convert_adapter_product<\/var><br \/>\n\t<var name=\"method\">parse<\/var><br \/>\n<\/action><br \/>\n[\/code]<\/p>\n<p>Vediamo le variabili che questa classe ci fornisce per personalizzare l&#8217;azione<\/p>\n<ul>\n<li><strong>delimiter:<\/strong> definisce il divisore tra i valori utilizzati nel file CSV; il valore predefinito \u00e8 la virgola (,).<\/li>\n<li><strong>enclose:<\/strong> definisce quale carattere racchiude ogni valore del file CSV; il valore predefinito sono le virgolette (&#8220;).<\/li>\n<li><strong>escape:<\/strong> definisce il carattere che identifica la fine di un record; il valor predefinito \u00e8 il doppio backslash (\\\\).<\/li>\n<li><strong>decimal_separator:<\/strong> definisce il carattere che identifica il segno che separa i valori numerici interi dai decimali.<\/li>\n<li><strong>fieldnames:<\/strong> se questo campo \u00e8 settato a <em>&#8220;true&#8221;<\/em>, il <em>&#8220;Parser&#8221;<\/em> considerer\u00e0 che la prima riga del file CSV conterr\u00e0 i nomi dei campi, se settato a <em>&#8220;false&#8221;<\/em> verr\u00e0 utilizzata la variabile <em>&#8220;map&#8221;<\/em><\/li>\n<li><strong>map:<\/strong> definisce il nome dei campi presenti nella prima riga del file CSV. Per la spiegazione di questa variabile rimando alla sezione <em>&#8220;Mapper&#8221;<\/em>.<\/li>\n<li><strong>adapter:<\/strong> in caso di profilo d&#8217;importazione, definisce quale <em>&#8220;Adapter&#8221;<\/em> utilizzer\u00e0 per ogni riga del file.<\/li>\n<li><strong>method:<\/strong> in caso sia definita la variabile <em>&#8220;adapter&#8221;<\/em>, definisce quale metodo dell&#8217;<em>&#8220;Adapter&#8221;<\/em> utilizzare per salvare nel database ogni riga; il metodo predefinito \u00e8 <em>&#8220;saveRow&#8221;<\/em>.<\/li>\n<\/ul>\n<p>Dall&#8217;esempio potete vedere che \u00e8 presente la variabile <em>&#8220;store&#8221;<\/em>. Nel caso che l&#8217;<em>&#8220;Adapter&#8221;<\/em> che definiamo all&#8217;interno dell&#8217;azione abbia bisogno di alcune variabili, definendole come variabile all&#8217;interno dell&#8217;azione esse saranno passate automaticamente dal <em>&#8220;Parser&#8221;<\/em> all&#8217;<em>&#8220;Adapter&#8221;<\/em>.<\/p>\n<h3>dataflow\/convert_parser_xml_excel<\/h3>\n<p>Un altro <em>&#8220;Parser&#8221;<\/em> che offre Magento \u00e8 quello che permette la <strong>traduzione dei dati da database ad un file EXCEL XML<\/strong> e viceversa.<br \/>\nEcco un esempio di un&#8217;azione<\/p>\n<p>[code type=&#8221;markup&#8221;]<br \/>\n<action type=\"dataflow\/convert_parser_xml_excel\" method=\"unparse\"><br \/>\n\t<var name=\"single_sheet\"><![CDATA[products]]><\/var><br \/>\n\t<var name=\"fieldnames\">true<\/var><br \/>\n<\/action><br \/>\n[\/code]<\/p>\n<p>Questa classe possiede le stesse variabili di <em>&#8220;dataflow\/convert_parser_csv&#8221;<\/em>, tranne che naturalmente quelle che definiscono la formattazione dei dati di un file CSV.<br \/>\nLa variabile particolare per questa classe \u00e8:<\/p>\n<ul>\n<li><strong>single_sheet:<\/strong> definisce quale foglio di calcolo utilizzare per l&#8217;esportazione o l&#8217;importazione, se il campo \u00e8 vuoto verranno presi tutti i fogli di calcolo presenti nel file.<\/li>\n<\/ul>\n<h3>customer\/convert_parser_customer &#8211; catalog\/convert_parser_product<\/h3>\n<p>Nel caso vogliamo lavorare con clienti o prodotti, Magento ci fornisce queste due classi per effettuare la <strong>conversione di dati da database a file<\/strong> (CSV, EXCEL XML o altro). La strada contraria viene principalmente gestita dai <em>&#8220;Parser&#8221;<\/em> come <em>&#8220;dataflow\/convert_parser_csv&#8221;<\/em>, quindi il metodo <em>&#8220;parse&#8221;<\/em> \u00e8 deprecato. Per esempio se volessimo convertire tutti i dati che abbiamo in precedenza caricato dei prodotti per il salvataggio in un file dovremmo settare questa azione:<\/p>\n<p>[code type=&#8221;markup&#8221;]<br \/>\n<action type=\"catalog\/convert_parser_product\" method=\"unparse\"><br \/>\n\t<var name=\"store\"><![CDATA[1]]><\/var><br \/>\n<\/action><br \/>\n[\/code]<\/p>\n<h2>Mapper<\/h2>\n<p>Le classi <em>&#8220;Mapper&#8221;<\/em> permettono di <strong>assegnare un&#8217;etichetta<\/strong> particolare ad ogni campo che abbiamo elaborato, per esempio nel nostro caso avremo il campo <em>&#8220;name&#8221;<\/em>, possiamo tramite queste classi assegnare a questo campo l&#8217;etichetta <em>&#8220;nome_categoria&#8221;<\/em>. Ogni <em>&#8220;Mapper&#8221;<\/em> possiede la funzione <em>&#8220;map&#8221;<\/em>, metodo che si occupa dell&#8217;assegnazione dell&#8217;etichetta.<br \/>\nInoltre, caratteristica molto importante, tramite la funzione <em>&#8220;map&#8221;<\/em> potremo specificare se verranno esportati o importati solo i campi che verranno mappati.<\/p>\n<h3>dataflow\/convert_mapper_column<\/h3>\n<p>Questo \u00e8 il <em>&#8220;Mapper&#8221;<\/em> pi\u00f9 utilizzato e che utilizzeremo anche noi per il nostro profilo avanzato. Vediamo come definire l&#8217;azione per il nostro modulo<\/p>\n<p>[code type=&#8221;markup&#8221;]<br \/>\n<action type=\"dataflow\/convert_mapper_column\" method=\"map\"><br \/>\n\t<var name=\"map\"><\/p>\n<map name=\"entity_id\"><![CDATA[id_categoria]]><\/map>\n<map name=\"name\"><![CDATA[nome_categoria]]><\/map>\n<map name=\"parent_id\"><![CDATA[id_genitore]]><\/map>\n<map name=\"level\"><![CDATA[livello]]><\/map>\n<map name=\"is_active\"><![CDATA[attiva]]><\/map>\n<map name=\"include_in_menu\"><![CDATA[visibile_menu]]><\/map>\n<p>\t<\/var><br \/>\n\t<var name=\"_only_specified\">true<\/var><br \/>\n<\/action><br \/>\n[\/code]<\/p>\n<p>L&#8217;azione possiede due variabili<\/p>\n<ul>\n<li><strong>map:<\/strong> variabile che elenca i vari campi che dovranno essere considerati dal <em>&#8220;Mapper<\/em>, all&#8217;interno di esso scriveremo un elenco di tag <em>&#8220;map&#8221;<\/em> per ogni campo, con questa struttura<br \/>\n&lt;map name=&#8221;<em>nome campo in Magento<\/em>&#8220;&gt;&lt;![CDATA[<em>nome campo nel file<\/em>]]&gt;in caso di esportazione, i due nomi saranno invertiti in caso di importazione.<\/li>\n<li><strong>_only_specified:<\/strong> se settato a <em>&#8220;true&#8221;<\/em> verranno esportati o importati solo i campi definiti nella variabile <em>&#8220;map&#8221;<\/em><\/li>\n<\/ul>\n<p>In precedenza abbiamo visto che nel <em>&#8220;Parser&#8221;<\/em>, in caso d&#8217;importazione, pu\u00f2 comparire la variabile <em>&#8220;map&#8221;<\/em>. Tale variabile si comporta esattamente come quella appena descritta, definendo quindi per l&#8217;importazione l&#8217;assegnamento delle etichette dei campi. In questo caso la variabile <em>&#8220;_only_specified&#8221;<\/em> viene automaticamente settata a <em>&#8220;true&#8221;<\/em>.<\/p>\n<h2>Posizionamento Azioni XML<\/h2>\n<p>La posizione nell&#8217;area di testo dove abbiamo scritto le azioni del nostro profilo \u00e8 molto importante in quanto indica l&#8217;ordine in cui verranno eseguite in fase di elaborazione del profilo. Prendiamo il caso del profilo gi\u00e0 presente in Magento, riguardante l&#8217;esportazione delle quantit\u00e0 presenti in magazzino dei prodotti.<\/p>\n<h4>Estraiamo dal database i dati dei prodotti<\/h4>\n<p>[code type=&#8221;markup&#8221;]<br \/>\n<action type=\"catalog\/convert_adapter_product\" method=\"load\"><br \/>\n    <var name=\"store\"><![CDATA[0]]><\/var><br \/>\n<\/action><br \/>\n[\/code]<\/p>\n<h4>Convertiamo i dati in un formato per il salvataggio su file<\/h4>\n<p>[code type=&#8221;markup&#8221;]<br \/>\n<action type=\"catalog\/convert_parser_product\" method=\"unparse\"><br \/>\n    <var name=\"store\"><![CDATA[0]]><\/var><br \/>\n    <var name=\"url_field\"><![CDATA[0]]><\/var><br \/>\n<\/action><br \/>\n[\/code]<\/p>\n<h4>Conserviamo i campi definiti e assegniamo le etichette<\/h4>\n<p>[code type=&#8221;markup&#8221;]<br \/>\n<action type=\"dataflow\/convert_mapper_column\" method=\"map\"><br \/>\n    <var name=\"map\"><\/p>\n<map name=\"store\"><![CDATA[negozio]]><\/map>\n<map name=\"sku\"><![CDATA[SKU]]><\/map>\n<map name=\"qty\"><![CDATA[qta]]><\/map>\n<map name=\"is_in_stock\"><![CDATA[disponibile]]><\/map>\n<p>    <\/var><br \/>\n    <var name=\"_only_specified\">true<\/var><br \/>\n<\/action><br \/>\n[\/code]<\/p>\n<h4>Convertiamo i dati per poterli salvare su un CSV<\/h4>\n<p>[code type=&#8221;markup&#8221;]<br \/>\n<action type=\"dataflow\/convert_parser_csv\" method=\"unparse\"><br \/>\n    <var name=\"delimiter\"><![CDATA[,]]><\/var><br \/>\n    <var name=\"enclose\"><![CDATA[\"]]><\/var><br \/>\n    <var name=\"fieldnames\">true<\/var><br \/>\n<\/action><br \/>\n[\/code]<\/p>\n<h4>Salviamo i dati sul file <em>&#8220;var\/export\/export_product_stocks.csv&#8221;<\/em><\/h4>\n<p>[code type=&#8221;markup&#8221;]<br \/>\n<action type=\"dataflow\/convert_adapter_io\" method=\"save\"><br \/>\n    <var name=\"type\">file<\/var><br \/>\n    <var name=\"path\">var\/export<\/var><br \/>\n    <var name=\"filename\"><![CDATA[export_product_stocks.csv]]><\/var><br \/>\n<\/action><br \/>\n[\/code]<\/p>\n<p>Scriviamo in quest&#8217;ordine le azioni nell&#8217;area di testo e clicchiamo su <em>&#8220;Salva e continua la modifica&#8221;<\/em>. Nel menu a sinistra appariranno le voci <em>&#8220;Esegui profilo&#8221;<\/em>, da cui potremo eseguire il nostro profilo e <em>&#8220;Cronologia profilo&#8221;<\/em> dove potremo visualizzare quando \u00e8 stato attivato.<\/p>\n<p>Abbiamo concluso questa guida sulle azioni XML relative alla creazione di un <strong>profilo avanzato di import\/export in Magento<\/strong>. Nel prossimo articolo vedremo un&#8217;applicazione pratica di come utilizzare un profilo avanzato per un&#8217;esportazione personalizzata, nel nostro caso vedremo l&#8217;<a href=\"https:\/\/www.artera.net\/it\/blog\/ecommerce\/esportare-le-categorie-di-magento\" title=\"Esportare le categorie di Magento in un file CSV\">esportazione dell&#8217;albero delle categorie<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Nelle ultime puntate abbiamo visto come esportare ed importare dati in Magento utilizzando le funzionalit\u00e0 fornite dal backend. Ma per import\/export non standard? Magento ci offre la possibilit\u00e0 di creare dei <strong>profili avanzati<\/strong>.<\/p>\n","protected":false},"author":4,"featured_media":14327,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_eb_attr":"","footnotes":""},"categories":[83],"tags":[72,292,190,92],"class_list":["post-14200","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ecommerce","tag-e-commerce","tag-guida-magento","tag-importexport","tag-magento"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>\u2022 Import\/export in Magento: i profili avanzati - Artera<\/title>\n<meta name=\"description\" content=\"Leggi dal blog: Import\/export in Magento: i profili avanzati. Contattaci per una partnership! Artera Swiss Premium Hosting news, articoli e notizie interessanti dal mondo digitale.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.artera.net\/it\/ecommerce\/import-export-magento-profili-avanzati\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u2022 Import\/export in Magento: i profili avanzati - Artera\" \/>\n<meta property=\"og:description\" content=\"Leggi dal blog: Import\/export in Magento: i profili avanzati. Contattaci per una partnership! Artera Swiss Premium Hosting news, articoli e notizie interessanti dal mondo digitale.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.artera.net\/it\/ecommerce\/import-export-magento-profili-avanzati\/\" \/>\n<meta property=\"og:site_name\" content=\"Artera\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/artera.net\/\" \/>\n<meta property=\"article:published_time\" content=\"2013-05-17T12:03:10+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-02-27T14:41:33+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.artera.net\/wp-content\/uploads\/2013\/05\/import-export1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1\" \/>\n\t<meta property=\"og:image:height\" content=\"1\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Sergio Ravera\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"Sergio Ravera\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.artera.net\\\/it\\\/ecommerce\\\/import-export-magento-profili-avanzati\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.artera.net\\\/it\\\/ecommerce\\\/import-export-magento-profili-avanzati\\\/\"},\"author\":{\"name\":\"Sergio Ravera\",\"@id\":\"https:\\\/\\\/www.artera.net\\\/it\\\/#\\\/schema\\\/person\\\/48ffb6b3727677643fbfd3ecf0a10aa0\"},\"headline\":\"Import\\\/export in Magento: i profili avanzati\",\"datePublished\":\"2013-05-17T12:03:10+00:00\",\"dateModified\":\"2023-02-27T14:41:33+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.artera.net\\\/it\\\/ecommerce\\\/import-export-magento-profili-avanzati\\\/\"},\"wordCount\":1904,\"commentCount\":18,\"publisher\":{\"@id\":\"https:\\\/\\\/www.artera.net\\\/it\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.artera.net\\\/it\\\/ecommerce\\\/import-export-magento-profili-avanzati\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.artera.net\\\/wp-content\\\/uploads\\\/2013\\\/05\\\/import-export1.jpg\",\"keywords\":[\"ecommerce\",\"guida Magento\",\"import\\\/export\",\"Magento\"],\"articleSection\":[\"Ecommerce\"],\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.artera.net\\\/it\\\/ecommerce\\\/import-export-magento-profili-avanzati\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.artera.net\\\/it\\\/ecommerce\\\/import-export-magento-profili-avanzati\\\/\",\"url\":\"https:\\\/\\\/www.artera.net\\\/it\\\/ecommerce\\\/import-export-magento-profili-avanzati\\\/\",\"name\":\"\u2022 Import\\\/export in Magento: i profili avanzati - Artera\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.artera.net\\\/it\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.artera.net\\\/it\\\/ecommerce\\\/import-export-magento-profili-avanzati\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.artera.net\\\/it\\\/ecommerce\\\/import-export-magento-profili-avanzati\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.artera.net\\\/wp-content\\\/uploads\\\/2013\\\/05\\\/import-export1.jpg\",\"datePublished\":\"2013-05-17T12:03:10+00:00\",\"dateModified\":\"2023-02-27T14:41:33+00:00\",\"description\":\"Leggi dal blog: Import\\\/export in Magento: i profili avanzati. Contattaci per una partnership! Artera Swiss Premium Hosting news, articoli e notizie interessanti dal mondo digitale.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.artera.net\\\/it\\\/ecommerce\\\/import-export-magento-profili-avanzati\\\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.artera.net\\\/it\\\/ecommerce\\\/import-export-magento-profili-avanzati\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/www.artera.net\\\/it\\\/ecommerce\\\/import-export-magento-profili-avanzati\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.artera.net\\\/wp-content\\\/uploads\\\/2013\\\/05\\\/import-export1.jpg\",\"contentUrl\":\"https:\\\/\\\/www.artera.net\\\/wp-content\\\/uploads\\\/2013\\\/05\\\/import-export1.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.artera.net\\\/it\\\/ecommerce\\\/import-export-magento-profili-avanzati\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.artera.net\\\/it\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Import\\\/export in Magento: i profili avanzati\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.artera.net\\\/it\\\/#website\",\"url\":\"https:\\\/\\\/www.artera.net\\\/it\\\/\",\"name\":\"Artera\",\"description\":\"Swiss Premium Hosting\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.artera.net\\\/it\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.artera.net\\\/it\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.artera.net\\\/it\\\/#organization\",\"name\":\"Artera\",\"url\":\"https:\\\/\\\/www.artera.net\\\/it\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/www.artera.net\\\/it\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.artera.net\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/artera-logo.png\",\"contentUrl\":\"https:\\\/\\\/www.artera.net\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/artera-logo.png\",\"width\":300,\"height\":77,\"caption\":\"Artera\"},\"image\":{\"@id\":\"https:\\\/\\\/www.artera.net\\\/it\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/artera.net\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/artera\\\/\",\"https:\\\/\\\/www.instagram.com\\\/artera_swiss\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.artera.net\\\/it\\\/#\\\/schema\\\/person\\\/48ffb6b3727677643fbfd3ecf0a10aa0\",\"name\":\"Sergio Ravera\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/618f2c20338bb422bd317eae8d6c9c097ba85d3f5a1da18e21ecf5da5ee3a448?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/618f2c20338bb422bd317eae8d6c9c097ba85d3f5a1da18e21ecf5da5ee3a448?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/618f2c20338bb422bd317eae8d6c9c097ba85d3f5a1da18e21ecf5da5ee3a448?s=96&d=mm&r=g\",\"caption\":\"Sergio Ravera\"},\"description\":\"Raised in a family tradition of merchants, my entrepreneurial spirit drove me to launch my first e-commerce venture in 1998. My vision and dedication led, in 2002, to the founding of Artera, now a leading brand in premium managed cloud hosting services. As Chief Executive Officer, I lead DHH Switzerland SA, part of the international DHH S.p.A. group, listed on the Milan Stock Exchange with the reference code (AIM \u2013 ISIN: IT0005203622). It is under this brand that the Artera brand continues to grow and thrive. In addition to my commitment to the business world, I am an active researcher in the field of new technologies, always fascinated by cutting-edge innovations in the industry.\",\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/in\\\/sergioravera\\\/\"],\"url\":\"https:\\\/\\\/www.artera.net\\\/it\\\/author\\\/sergio-ravera\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"\u2022 Import\/export in Magento: i profili avanzati - Artera","description":"Leggi dal blog: Import\/export in Magento: i profili avanzati. Contattaci per una partnership! Artera Swiss Premium Hosting news, articoli e notizie interessanti dal mondo digitale.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.artera.net\/it\/ecommerce\/import-export-magento-profili-avanzati\/","og_locale":"it_IT","og_type":"article","og_title":"\u2022 Import\/export in Magento: i profili avanzati - Artera","og_description":"Leggi dal blog: Import\/export in Magento: i profili avanzati. Contattaci per una partnership! Artera Swiss Premium Hosting news, articoli e notizie interessanti dal mondo digitale.","og_url":"https:\/\/www.artera.net\/it\/ecommerce\/import-export-magento-profili-avanzati\/","og_site_name":"Artera","article_publisher":"https:\/\/www.facebook.com\/artera.net\/","article_published_time":"2013-05-17T12:03:10+00:00","article_modified_time":"2023-02-27T14:41:33+00:00","og_image":[{"url":"https:\/\/www.artera.net\/wp-content\/uploads\/2013\/05\/import-export1.jpg","width":1,"height":1,"type":"image\/jpeg"}],"author":"Sergio Ravera","twitter_card":"summary_large_image","twitter_misc":{"Scritto da":"Sergio Ravera","Tempo di lettura stimato":"9 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.artera.net\/it\/ecommerce\/import-export-magento-profili-avanzati\/#article","isPartOf":{"@id":"https:\/\/www.artera.net\/it\/ecommerce\/import-export-magento-profili-avanzati\/"},"author":{"name":"Sergio Ravera","@id":"https:\/\/www.artera.net\/it\/#\/schema\/person\/48ffb6b3727677643fbfd3ecf0a10aa0"},"headline":"Import\/export in Magento: i profili avanzati","datePublished":"2013-05-17T12:03:10+00:00","dateModified":"2023-02-27T14:41:33+00:00","mainEntityOfPage":{"@id":"https:\/\/www.artera.net\/it\/ecommerce\/import-export-magento-profili-avanzati\/"},"wordCount":1904,"commentCount":18,"publisher":{"@id":"https:\/\/www.artera.net\/it\/#organization"},"image":{"@id":"https:\/\/www.artera.net\/it\/ecommerce\/import-export-magento-profili-avanzati\/#primaryimage"},"thumbnailUrl":"https:\/\/www.artera.net\/wp-content\/uploads\/2013\/05\/import-export1.jpg","keywords":["ecommerce","guida Magento","import\/export","Magento"],"articleSection":["Ecommerce"],"inLanguage":"it-IT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.artera.net\/it\/ecommerce\/import-export-magento-profili-avanzati\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.artera.net\/it\/ecommerce\/import-export-magento-profili-avanzati\/","url":"https:\/\/www.artera.net\/it\/ecommerce\/import-export-magento-profili-avanzati\/","name":"\u2022 Import\/export in Magento: i profili avanzati - Artera","isPartOf":{"@id":"https:\/\/www.artera.net\/it\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.artera.net\/it\/ecommerce\/import-export-magento-profili-avanzati\/#primaryimage"},"image":{"@id":"https:\/\/www.artera.net\/it\/ecommerce\/import-export-magento-profili-avanzati\/#primaryimage"},"thumbnailUrl":"https:\/\/www.artera.net\/wp-content\/uploads\/2013\/05\/import-export1.jpg","datePublished":"2013-05-17T12:03:10+00:00","dateModified":"2023-02-27T14:41:33+00:00","description":"Leggi dal blog: Import\/export in Magento: i profili avanzati. Contattaci per una partnership! Artera Swiss Premium Hosting news, articoli e notizie interessanti dal mondo digitale.","breadcrumb":{"@id":"https:\/\/www.artera.net\/it\/ecommerce\/import-export-magento-profili-avanzati\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.artera.net\/it\/ecommerce\/import-export-magento-profili-avanzati\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/www.artera.net\/it\/ecommerce\/import-export-magento-profili-avanzati\/#primaryimage","url":"https:\/\/www.artera.net\/wp-content\/uploads\/2013\/05\/import-export1.jpg","contentUrl":"https:\/\/www.artera.net\/wp-content\/uploads\/2013\/05\/import-export1.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/www.artera.net\/it\/ecommerce\/import-export-magento-profili-avanzati\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.artera.net\/it\/"},{"@type":"ListItem","position":2,"name":"Import\/export in Magento: i profili avanzati"}]},{"@type":"WebSite","@id":"https:\/\/www.artera.net\/it\/#website","url":"https:\/\/www.artera.net\/it\/","name":"Artera","description":"Swiss Premium Hosting","publisher":{"@id":"https:\/\/www.artera.net\/it\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.artera.net\/it\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Organization","@id":"https:\/\/www.artera.net\/it\/#organization","name":"Artera","url":"https:\/\/www.artera.net\/it\/","logo":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/www.artera.net\/it\/#\/schema\/logo\/image\/","url":"https:\/\/www.artera.net\/wp-content\/uploads\/2019\/09\/artera-logo.png","contentUrl":"https:\/\/www.artera.net\/wp-content\/uploads\/2019\/09\/artera-logo.png","width":300,"height":77,"caption":"Artera"},"image":{"@id":"https:\/\/www.artera.net\/it\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/artera.net\/","https:\/\/www.linkedin.com\/company\/artera\/","https:\/\/www.instagram.com\/artera_swiss\/"]},{"@type":"Person","@id":"https:\/\/www.artera.net\/it\/#\/schema\/person\/48ffb6b3727677643fbfd3ecf0a10aa0","name":"Sergio Ravera","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/secure.gravatar.com\/avatar\/618f2c20338bb422bd317eae8d6c9c097ba85d3f5a1da18e21ecf5da5ee3a448?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/618f2c20338bb422bd317eae8d6c9c097ba85d3f5a1da18e21ecf5da5ee3a448?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/618f2c20338bb422bd317eae8d6c9c097ba85d3f5a1da18e21ecf5da5ee3a448?s=96&d=mm&r=g","caption":"Sergio Ravera"},"description":"Raised in a family tradition of merchants, my entrepreneurial spirit drove me to launch my first e-commerce venture in 1998. My vision and dedication led, in 2002, to the founding of Artera, now a leading brand in premium managed cloud hosting services. As Chief Executive Officer, I lead DHH Switzerland SA, part of the international DHH S.p.A. group, listed on the Milan Stock Exchange with the reference code (AIM \u2013 ISIN: IT0005203622). It is under this brand that the Artera brand continues to grow and thrive. In addition to my commitment to the business world, I am an active researcher in the field of new technologies, always fascinated by cutting-edge innovations in the industry.","sameAs":["https:\/\/www.linkedin.com\/in\/sergioravera\/"],"url":"https:\/\/www.artera.net\/it\/author\/sergio-ravera\/"}]}},"_links":{"self":[{"href":"https:\/\/www.artera.net\/it\/wp-json\/wp\/v2\/posts\/14200","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.artera.net\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.artera.net\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.artera.net\/it\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.artera.net\/it\/wp-json\/wp\/v2\/comments?post=14200"}],"version-history":[{"count":2,"href":"https:\/\/www.artera.net\/it\/wp-json\/wp\/v2\/posts\/14200\/revisions"}],"predecessor-version":[{"id":217135,"href":"https:\/\/www.artera.net\/it\/wp-json\/wp\/v2\/posts\/14200\/revisions\/217135"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.artera.net\/it\/wp-json\/wp\/v2\/media\/14327"}],"wp:attachment":[{"href":"https:\/\/www.artera.net\/it\/wp-json\/wp\/v2\/media?parent=14200"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.artera.net\/it\/wp-json\/wp\/v2\/categories?post=14200"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.artera.net\/it\/wp-json\/wp\/v2\/tags?post=14200"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}