News

Back to News

ISO 21504 TeamIn der Woche vom 2-6 Februar hat sich die Arbeitsgruppe zur Erstellung der ISO 21504 zum Projekt-Portfoliomanagement mal wieder getroffen. Dieses Mal in Wien, wo wir sehr nett empfangen wurden und ein herrliches Rahmenprogramm genießen durften.

Ziel dieses Meetings war es die letzten Kommentare aus der DIS aufzunehmen und die finale Version der ISO 21504 zu erstellen. Am Donnerstag den 5.2.2015 war es dann soweit. Die Gruppe einigte sich auf die Veröffentlichung des Dokumentes. Somit ist die ISO 21504 für Projekt-Portfoliomanagement in den kommenden Monaten erhältlich!

Wir danken an dieser Stelle ganz besonders dem Führungsteam. Es hat viel Spaß gemacht mit Euch zu arbeiten!

  • Steve Fahrenkrog – USA – Convener
  • David Hyde – Großbritannien – (Secretary of ISO/TC 258/WG1)
  • Annakarin Nilsson – Schweden
  • Becky Winston – USA
  • Professor Carl Marnewick (Ph.D.) – Süd Afrika
  • Terry Cooke-Davies – Großbritannien
  • Don Boyer – USA
  • Ralf J. Roeschlein – Deutschland

Die ISO 21504 zum Projektportfoliomanagement kann genauso wie die Schwesternorm ISO 21503 zum Programm-Management sehr gut mit der deutschen Norm zum Multiprojektmanagement (DIN 69909) kombiniert werden. Sie geht zum Teil deutlich stärker ins Detail und zeigt auch gut auf, wie man ein Projektportfolimanagement aufsetzt und später betreibt.

„Diese Internationale Norm enthält Leitlinien zu den Grundsätzen für das Management von Projekt- und Programmportfolios. Sie ist für Organisationen jeglicher Art und Größe, einschließlich staatlicher oder privater Organisationen, in allen Sektoren relevant. Die in dieser Internationalen Norm festgelegten Leitlinien sollten an das konkrete Projekt- und Programmportfolio angepasst werden. Diese Internationale Norm enthält keine Leitlinien für das Projektmanagement, Programmmanagement oder das allgemeine Geschäftsportfoliomanagement (zum Beispiel Finanzportfoliomanagement).“ Quelle

Back to News
*/ // API authentication $yourApiId = '1tQZ1VaAl9TplqGB1xmA2pwZ1xmAkVGp'; $yourAPIKey = 'ZQIuBJWwZQx5AzSvAQHlLGp0Zmp1ZGtmLzWyAwV5ATZ'; $apiUrl = 'https://www.provenexpert.com/api_rating_v5.json'; // cache options $errorFile = '/provenexpert_error.txt'; $cacheFile = '/provenexpert_9532f07f8d34de011fbd7b1cc13301de.json'; $cachePath = dirname($_SERVER['SCRIPT_FILENAME']) . $cacheFile; $cachingTime = 3600; // in seconds $scriptVersion = '1.8'; if (! file_exists($cachePath)) { @touch($cachePath, $cachingTime); @chmod($cachePath, 0666); } // check if user ca write the cache file, otherwise use the system temp directory if (! is_writable($cachePath)) { $cachePath = sys_get_temp_dir() . $cacheFile; if (! file_exists($cachePath)) { @touch($cachePath, $cachingTime); @chmod($cachePath, 0666); } } if (function_exists('curl_init')) { try { // check if a cache file exists and its age inside the caching time range if (! file_exists($cachePath) || (time() - filemtime($cachePath)) > $cachingTime) { // init curl handler $curlHandler = curl_init(); // set curl options curl_setopt($curlHandler, CURLOPT_TIMEOUT, 3); curl_setopt($curlHandler, CURLOPT_RETURNTRANSFER, true); curl_setopt($curlHandler, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curlHandler, CURLOPT_URL, $apiUrl . '?v=' . $scriptVersion); curl_setopt($curlHandler, CURLOPT_USERPWD, $yourApiId . ':' . $yourAPIKey); if (defined('CURLOPT_IPRESOLVE') && defined('CURL_IPRESOLVE_V4')) { curl_setopt($curlHandler, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4); } // send call to api $json = curl_exec($curlHandler); if ($json === false) { // curl error $errorMessage = 'curl error (' . date('c') . ')'; if (file_exists($cachePath)) { $errorMessage .= PHP_EOL . PHP_EOL . 'last call: ' . date('c', filemtime($cachePath)); } $errorMessage .= PHP_EOL . PHP_EOL . curl_error($curlHandler); $errorMessage .= PHP_EOL . PHP_EOL . print_r(curl_version(), true); @file_put_contents(dirname($cachePath) . $errorFile, $errorMessage); $json = json_encode(array('status' => 'error', 'errors' => array('curl error'))); } curl_close($curlHandler); // convert json to array $data = json_decode($json, true); if (! is_array($data)) { // json format is wrong $errorMessage = 'json error (' . date('c') . ')' . PHP_EOL . PHP_EOL . $json; if (file_exists($cachePath)) { $errorMessage .= PHP_EOL . PHP_EOL . 'last call: ' . date('c', filemtime($cachePath)); } @file_put_contents(dirname($cachePath) . $errorFile, $errorMessage); $data = array('status' => 'error', 'errors' => array('json error')); $json = json_encode($data); } if ($data['status'] == 'success') { if (is_writable($cachePath)) { // save data in cache file @file_put_contents($cachePath, $json); } else { echo(''); } } elseif(! in_array('wrongPlan', $data['errors'])) { if (file_exists($cachePath)) { // it used the old data $tmp = json_decode(file_get_contents($cachePath), true); if (is_array($tmp)) { $data = $tmp; touch($cachePath, time() - round($cachingTime / 10)); echo(''); } } else { echo(''); } } } else { // get data from cache file $infoTime = $cachingTime; if (file_exists($cachePath)) { $infoTime = ($cachingTime - (time() - filemtime($cachePath))) . '/' . $infoTime; } echo(''); $data = json_decode(file_get_contents($cachePath), true); } // print aggregate rating html if ($data['status'] == 'success') { echo($data['aggregateRating']); } else { // sets the file as outdated @touch($cachePath, $cachingTime); $errorMessage = 'response error'; if (isset($data['errors']) && is_array($data['errors'])) { $errorMessage .= ' (' . implode(', ', $data['errors']) . ')'; } $errorMessage .= ' [v' . $scriptVersion . ']'; echo(''); } } catch (Exception $e) { $errorMessage = 'exception' . PHP_EOL . PHP_EOL . $e->__toString(); @file_put_contents(dirname($cachePath) . $errorFile, $errorMessage); echo(''); } } else { echo(''); } ?>