Open-Xchange Provisioning using SOAP

From Open-Xchange

Provision Open-Xchange using SOAP

Beneath RMI and commandline, Open-Xchange can be provisioned using SOAP.

PHP users, please read the PHP warning below!

The setup instructions for the SOAP services can be find in this document.

Example code

You can find Perl and PHP example code in the cvs within the repository open-xchange-admin-soap. Checkout using the command

$ cvs -d :pserver:anonymous@www.open-xchange.com:/cvsroot co open-xchange-admin-soap

once checked out, find examples in

open-xchange-admin-soap/test/perl
open-xchange-admin-soap/test/php

Further documentation and examples:

Short warning to PHP users

We do not recommend to use PHP when accessing our SOAP provisioning API. This is because PHP has trouble sending simple arrays in a way we can handle it. This applies to ALL Open-Xchange versions!

If you still want to use PHP, you might need this information:

instead of

      #$ctx = new Context();
      #$ctx->id = $random_id;
      #$ctx->maxQuota = 10;
      #$ctx->loginMappings = array( "mapping1", "mapping2", "mapping3");

in php you have to do

      $mctx = array("id" => $random_id, "maxQuota" => 10);
      $mctx["loginMappings"] = "mapping1";
      $mctx["loginMappings "] = "mapping2";
      $mctx["loginMappings  "] = "mapping3";

and then this:

      $result = getContextClient($SOAPHOST)->create(new SoapVar($mctx,SOAP_ENC_OBJECT), $user, getCredentialsObject($OXMASTER_ADMIN, $OXMASTER_ADMIN_PASS));

instead of that:

      #$result = getContextClient($SOAPHOST)->create($ctx, $user, getCredentialsObject($OXMASTER_ADMIN, $OXMASTER_ADMIN_PASS));

when using the examples from

open-xchange-admin-soap/test/php

This information is based on this code

 printo_stderr("Update context aliases list\n");

 // XXX: OX requires all mappings entries on top level of context
 // PHP SOAP serializer can't accomplish such task
 // workaround problem naming keys in array with spaces:
 // - transparent for XML, different for PHP
 $map = array('id' => $ctx->id);
 $key = 'loginMappings';
 for ($i = 0; $i < count($mappings); $i++) {
        $map[$key] = $mappings[$i];
        $key .= ' ';
 }

as taken from the Parallels APS package (see above).