readme.txt 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346
  1. iTop - version 2.0.3-beta - 13-Jun-2014
  2. Readme file
  3. 1. ABOUT THIS RELEASE
  4. 2. INSTALLATION
  5. 2.1. Requirements
  6. 2.2. Install procedure
  7. 2.3. CRON
  8. 2.4. Upgrading from 2.0.x
  9. 2.5. Migration from 1.x versions
  10. 3. FEATURES
  11. 3.1. Changes since 2.0.2
  12. 3.2. Known limitations
  13. 3.3. Known issues
  14. 1. ABOUT THIS RELEASE
  15. ==================
  16. Thank you for downloading the 18th packaged release of iTop.
  17. This version is a maintenance release, with quite a few bug fixes and a few enhancements.
  18. The documentation about iTop is available as a Wiki: http://www.combodo.com/wiki
  19. iTop is released under the AGPL (v3) license. (Check license.txt in this directory).
  20. The source code of iTop can be found on SourceForge: https://sourceforge.net/p/itop/code/
  21. 1.1 What's new?
  22. ---------------------------
  23. This version brings a number of bug fixes since 2.0.2 and a few enhancements, namely:
  24. - Scalability: better support of large volumes of objects, with much less memory usage
  25. - Cleanup of the REST/JSON API, a few rough corners have been rounded
  26. - Conditional notifications
  27. - Usability: faster display of an object's details
  28. ... and about 50 bug fixes!
  29. 1.2 Should I upgrade to 2.0.3?
  30. -------------------------------
  31. Considering that iTop 2.0.3 is fully compatible with iTop 2.0.x and the number of bugs fixed, we recommend you to upgrade.
  32. 1.3 Special Thanks To:
  33. -----------------
  34. Bruno Bonfils for his guidance about LDAP and authentication.
  35. Randall Badilla Castro and Miguel Turrubiates for the Spanish translation.
  36. Jonathan Lucas, Stephan Rosenke and David Gümbel from ITOMIG GmbH, for the German translation.
  37. Christian Lempereur and Olivier Fouquet for their feedbacks.
  38. Everaldo Coelho and the Oxygen Team for their wonderful icons.
  39. The JQuery team and all the jQuery plugins authors for developing such a powerful library.
  40. Phil Eddies for the numerous feedbacks provided, and the first implementation of CKEdit
  41. Marco Tulio and Bruno Cassaro for the Portuguese (Brazilian) translation
  42. Vladimir Shilov and Shamil Khamit for the Russian translation
  43. Izzet Sirin for the Turkish translation
  44. Deng Lixin for the Chinese translation
  45. Marialaura Colantoni for the Italian translation
  46. Schlobinux for the fix of the setup temporary file verification.
  47. Gabor Kiss for the Hungarian translation
  48. Tadashi Kaneda, Shoji Seki and Hirofumi Kosaka for the Japanese translation
  49. Antoine Coetsier for the CAS support and tests
  50. Vincenzo Todisco for his contribution to the enhancement of the webservices
  51. Stephan Rickauer, Tobias Glemser and Sabri Saleh for their consulting about iTop security
  52. Claudio Cesar Sanchez Tejeda for his contribution to bug fixes on the export and data synchronization
  53. Bruno Cornec for his support and contribution to the Linux packaging of iTop
  54. Jean-François Bilger for providing a fix for an unsuspected SQL bug
  55. 2. INSTALLATION
  56. ============
  57. 2.1. Requirements
  58. ------------
  59. Server configuration:
  60. iTop is based on the AMP (Apache / MySQL / PHP) platform and requires PHP 5.2 and
  61. MySQL 5. The installation of iTop does not require any command line access to the
  62. server. The only operations required to install iTop are: copying the files to the
  63. server and browsing web pages. iTop can be installed on any web server supporting
  64. PHP 5.2: Apache, IIS, nginx...
  65. End-user configuration:
  66. Although iTop should work with most modern web browsers, the application has been
  67. tested mostly with Firefox 3+, IE8, IE9, Safari 5 and Chrome. iTop was designed for
  68. at least a 1024x768 screen resolution. For the graphical view of the impact analysis,
  69. Flash version 8 or higher is required.
  70. 2.2. Install procedure
  71. -----------------
  72. 1) Make sure that you have a properly configured instance of Apache/PHP/MySQL running
  73. 2) Unpack the files contained in the zipped package, and copy the content of the "web"
  74. directory in a directory served by your web server.
  75. 3) Check the access rights on the files/folders: the setup needs to have write access
  76. either to the directory where iTop is installed or to the following subdirectories
  77. (create them if needed)
  78. - conf
  79. - data
  80. - env-production
  81. - log
  82. 4) Point your web browser to the URL corresponding to the directory where the files
  83. have been unzipped and follow the indications on the screen.
  84. If you wish to re-launch the installation process (for example in order to install
  85. more modules), just make sure that the configuration file (located at <itop>/conf/production/config-itop.php)
  86. is writable by the web server (on Windows: remove the "read-only" flag, on Linux
  87. adjust the rights of the file) and point your browser to <itop>/setup/.
  88. 2.3. cron.php
  89. --------
  90. The following features will require the activation of CRON.PHP:
  91. - asynchronous emails. By default, this option is disabled. To enable it, set 'email_asynchronous' to 1 in the configuration file.
  92. - check ticket SLA. Tickets reaching the limits will be passed into Escalation TTO/TTR states.
  93. More information into the Wiki: https://wiki.openitop.org/doku.php?id=2_0_2:admin:cron
  94. You can get a status of the cron "tasks" with the command:
  95. php cron.php --auth_user=admin_login --auth_pwd=admin_pwd --status_only=1
  96. The output will look as shown below:
  97. +---------------------------+---------+---------------------+---------------------+--------+-----------+
  98. | Task Class | Status | Last Run | Next Run | Nb Run | Avg. Dur. |
  99. +---------------------------+---------+---------------------+---------------------+--------+-----------+
  100. | CheckStopWatchThresholds | active | 2013-03-28 10:32:27 | 2013-03-28 10:32:37 | 51 | 0.317 s |
  101. | EmailBackgroundProcess | active | 2013-03-28 10:32:27 | 2013-03-28 10:32:57 | 12 | 7.089 s |
  102. | ExecAsyncTask | active | 2013-03-28 10:32:27 | 2013-03-28 10:32:29 | 51 | 0.032 s |
  103. +---------------------------+---------+---------------------+---------------------+--------+-----------+
  104. 2.4. Upgrading from 2.0.x
  105. --------------------
  106. The version 2.0.3 if fully compatible with 2.0.0, 2.0.1 and 2.0.2. Due to few database changes,
  107. you must run the setup when upgrading (whatever the original version).
  108. If the location of mysql binaries is in the "path", the setup proposes to perform a full backup
  109. of iTop (database + configuration file) using mysqldump.
  110. Here is how to upgrade, step by step, a 2.0.x instance of iTop:
  111. 1) Do NOT overwrite the files from the previous version. Expand the content of the "web" directory of
  112. the new package into a new directory on the web server.
  113. 2) Check the access rights on the files/folders: the setup needs to have write access either to the
  114. whole directory where iTop is installed or to the following subdirectories (create them if needed)
  115. - conf
  116. - data
  117. - env-production
  118. - log
  119. 3) Point your web browser to the URL corresponding to the new location. You should see the setup screen.
  120. 4) When prompted (At step 2 of the installation), choose "Upgrade an existing instance"
  121. 5) Either enter the path (on the disk) to the previous instance, or supply the needed credentials.
  122. 6) Run the setup to completion. Once this is done you can connect to your upgraded iTop.
  123. 7) To replace the old instance of iTop with the newly installed one:
  124. Rename the directories to switch the locations
  125. Edit the new configuration file (now located at <itop>/conf/production/config-itop.php) and change the
  126. value of the "application_url" parameter.
  127. 2.5. Migrating from 1.x versions
  128. ---------------------------
  129. The setup is designed to upgrade existing 1.x instances of iTop automatically. In case the instance was
  130. customized (for example by altering its data model), the installation process will detect the modifications
  131. (by scanning the source files and comparing them with the manifest) and will prompt either to keep the
  132. modifications or to discard them.
  133. If the location of mysql binaries is in the "path", the installation proposes to perform a full backup
  134. of iTop (database + configuration file) using mysqldump.
  135. Here is how to upgrade, step by step, a 1.x instance of iTop.
  136. 1) Do NOT overwrite the files from the previous version. Expand the content of the "web" directory of
  137. the new package into a new directory on the web server.
  138. 2) Check the access rights on the files/folders: the setup needs to have write access either to the
  139. directory where iTop is installed or to the following subdirectories (create them if needed)
  140. - conf
  141. - data
  142. - env-production
  143. - log
  144. 3) Point your web browser to the URL corresponding to the new location. You should see the setup screen.
  145. 4) When prompted (At step 2 of the installation), choose "Upgrade an existing instance"
  146. 5) Enter the needed credentials. It is not mandatory to supply the location (on the disk of the server)
  147. where the previous instance was installed but, by doing so, you let the installation find the credentials
  148. (by looking at the previous configuration file) and also perform additional checks, for instance, to
  149. detect any customization that you may have made to iTop.
  150. 6) Run the setup to completion. Once this is done you can connect to your upgraded iTop.
  151. 7) To replace the old instance of iTop with the newly installed one:
  152. Rename the directories to switch the locations
  153. Edit the new configuration file (now located at <itop>/conf/production/config-itop.php) and change the
  154. value of the "application_url" parameter.
  155. That's it.
  156. 3. FEATURES
  157. ========
  158. 3.1. Changes since 2.0.2
  159. -------------------
  160. This maintenance version consists in a mix of bug fixes and enhancements.
  161. Enhancements
  162. --------------------
  163. Memory consumption by the application has been drastically reduced.
  164. Usability
  165. --------------------
  166. #934 Support the <display_style> option for ExternalKeys: horizontal and vertical radio buttons groups are now supported
  167. #933 Search form for Query Phrasebook items. If you implement your own menus (equivalent to itop-welcome-itil module), make sure that you update the menu definition to show the search form at the top.
  168. #929 Speed up the full text search (mostly from the end user perspective, requires a custom configuration)
  169. #930 AttributeExternalFields displayed in a form are automatically refreshed when their "parent" field is modified...
  170. #909 Faster display for the "details" of an object:
  171. - object's history is only loaded when the "History" tab is clicked
  172. - by default the history display is truncated to the 'max_history_length' (= 50) latest modifications
  173. #878 Missing scrollbar in "linkset-direct" edition popup dialog
  174. #862 Popup menu misplaced when the window scrolls (e.g. when displaying large lists of results)
  175. #861 and #636 Set the focus on User Name in iTop Login Form
  176. Ticket's attachments can now be added by drag and drop (on browsers supporting HTML5 drag and drop).
  177. Scalability / Performance
  178. -------------------------
  179. #867 (and #907 as a dup') De-harcode set_time_limit (per loop) in lengthy operations. Default value is 30 seconds (per loop), configurable via the new parameter "max_execution_time_per_loop", instead of 5 seconds previously.
  180. Compatibility with APCu (For PHP 5.5+), since it is slightly different from APC.
  181. Two experimental perf. enhancements:
  182. - maintain list the attributes (potentially) modified to speed-up ListChanges() by avoiding a systematic comparison between the content of linkedsets.
  183. - cache the list of SynchroDataSources and use this in InSyncScope() to avoid searching in the SynchroReplicas when it's not needed...
  184. Depending on the configuration, these optimizations may speed-up the CSV import by up to 40% !!
  185. Experimental perf. enhancement: cache the foreign keys to use when importing object to avoid searching for the same object several times during a given import. Seem to speed up the imports by 7 to 10%.
  186. CSV export (from the toolkit menu) now displays an asynchronous page, to better cope with a huge number of objects (> 10000)
  187. - Memory optimization: no longer store all DBObjects in memory while browsng through a Set, but pull them one by one from the MySQL client buffer as needed.
  188. - Also renamed Merge to Append since it's really what it does (seems to be used only in the tests)
  189. Code cleanup to implement the tabs handling (inside web pages) in one place. Added the ability to provide asynchronously loaded tabs (content must come from the same server).
  190. Use the object oriented verison of the MySQLi API which seems free of memory leaks (compared to the procedural version of the same API).
  191. JSON/REST API (new version: 1.2)
  192. --------------------------------
  193. #926 Proper "report" data when performing a Delete operation
  194. #925 Added an option to output all the fields of the object found (not only the fields of the queried class), using "*+" for the list of queried fields
  195. #897 Improved the error reporting when an external key is specified with a final class that is not a subclass of the class of the external key
  196. #891 Better error reporting when either the parameter auth_user or auth_pwd are missing.
  197. #877 More flexibility on case log updates (in particular, it is now possible to write the entire case log), remains compatible with the previous API
  198. #869 API was not outputing case log attributes (not in a structured way)
  199. Properly handle external and basic authentication methods for REST web services.
  200. Proper output of boolean values in JSON.
  201. Bug fix: the JSON value for an enum should be the raw value, not its translated label.
  202. Data model fixes/changes
  203. ------------------------
  204. #854 Flag Is null allowed not working on attributes Date and DateTime + the default value is now taken into account
  205. Fixed issue with 1.x datamodels: dashlets of type "badge" not working (preventing from editing an existing dashboard), since 2.0.2
  206. Aligned the authentication module with the one of 2.x, to enable the feature "Forgot password" for legacy data models
  207. Added the "outage" field to simple Change tickets, since it's already present in ITIL Changes.
  208. Notifications
  209. -------------
  210. #901 Added the attribute "filter" to the triggers, to define conditional notifications
  211. #872 Support notifications for the creation of a new user. Also fix the translation of the "Additional values" in ValueSetEnumClasses.
  212. #856 allow asynchronous emails to have an empty 'to' recipient... (not used anyway)
  213. #483 Added placeholders for the notifications: html(caselog), head_html(caselog), html(linkset). The HTML can be customized. Fixes the issue about lines being wrapped in a curious way (root cause: swift mailer).
  214. Miscellaneous fixes
  215. -------------------
  216. #943 Fix for supporting drop-down lists/auto-completes based on a parametrized query in the portal.
  217. #936 Tune the default (i.e. implicit) tracking level on link sets (and disable tracking on 1-N links, for fresh installations)
  218. #935 Better support of CheckToWrite() in object's transitions, improved by checking the data sooner for a consistent workflow.
  219. #931 Management of n:n links can be broken in case of insufficient user rights. Side effect: attribute_linkedset with the flag OPT_ATT_HIDDEN are now completely hidden (the tab is not displayed at all).
  220. #928 Setup crashing if async_retries is configured
  221. #923 prevent XSS injection in forgot password page.
  222. #919 Circular references between tickets (parent/child). Protect the framework against infinite recursions on cascaded updates (done at the DBUpdate level).
  223. #918 TTO/TTR status "passed" gets reset when the stop watch is stopped (using the status "triggered" instead)
  224. #913 Error when searching for child requests and no organization is specified. Still, I could not figure out WHY IT WAS WORKING WHEN AN ORG IS SELECTED as a search filter!
  225. #905 The toolkit menu was visible in the portal for Administrators (but it was not usable). It is now hidden in any case.
  226. #896 XSS injection on the portal (any search form)
  227. #890 Dispatch the defines in the proper modules to make sure that the portal works with all possible combinations of tickets.
  228. #888 Security on the portal incompatible with customizations (regression introduced in 2.0.2), now requires to define PORTAL_USERREQUEST_DISPLAY_QUERY and PORTAL_USERREQUEST_DISPLAY_POWERUSER_QUERY
  229. #887 Short term fix for preventing ToArgs to alter the content of an object...
  230. #886 Delete change history so that if an ID is reused the history starts from scratch (and cleanup most of the data as soon as the object is deleted)
  231. #881 Paginated list in popup dialog is broken
  232. - Missing scrollbar in the popup when using the [+] button
  233. #876 Upgrade finishes with error "Cannot reload object id = -1" (root cause: DB in read-only mode, see config/access_mode)
  234. #875 Could not use OQL queries with a double quote in the condition
  235. #873 Allow the character % in the path of an URL (requires the edition of the config file when upgrading)
  236. #871 eMail validation pattern was too strict: now fully configurable (globally and per attribute).
  237. #870 When a user deletes all her/his shortcuts at once, this was deleting all the shortcuts for all users.
  238. #859 About box: also list the modules installed from the extensions folder
  239. #731 Full text search requires a string of at least three characters (configurable: full_text_needle_min)
  240. Completed the Portuguese translation (Brazil), provided in december... (by Marco Tulio?) - modules updated: attachments, change, incident, request and request/ITIL, service for providers
  241. Portal + templates: Bug fix = when the user selects a template, then go back to select a service for which no template applies, he still gets the tempate fields in the final form.
  242. Added a helper function to get an icon stored as an ormDocument: ormDocument::GetDownloadURL
  243. Full text search shortcuts: allow the use of class names containing underscores and numbers (e.g. Processus métier: écarissage)
  244. Properly optimize the columns to load, when subitems are requested.
  245. Allow the use of any character into the help text on an attribute (usefull to explain a constraint implemented as a regular expression for instance.) Reminder: the text is given as a dictionary entry named like "Class:<class>/Attribute:<attcode>?"
  246. Fixed a compiler error message (wrong syntax when using a PHP class to implement the class methods)
  247. Limit the display of the status to the latest 100 runs of the synchro data source.
  248. Implement the iDisplay interface on any class derived from DBObject, but also limit the possible actions on such objects (disable edition)
  249. Code cleanup to implement the tabs handling (inside web pages) in one place. Added the ability to provide asynchronously loaded tabs (content must come from the same server).
  250. Run Query enhancements
  251. - Properly catch *all* exceptions and redisplay the entered OQL statement every time
  252. - Post the form to force its refresh (i.e. running the query again) even if the query did not change
  253. Better handling of the default choices in the setup, in case of upgrade (for some specific configurations of the installation wizard).
  254. Object's edition: keep track of what was typed in the case log fields when reloading the form (for example with a different "initial state")
  255. Protect Bulk Modify against XSS injection!
  256. Bug fix : missing semicolons were causing an error with IE9.
  257. Finalized the French translation for some types of "Triggers"
  258. Templates processing aligned with "templates-base" 2.1.1: allow template fields with the same name the attribute code of the curent object.
  259. Make the Basic Authentication (login_mode=basic) work with non-ASCII characters (in the username as well as in the password), though this may depend on the browser...
  260. Add a new flag "debug" (false by default) to turn off the debug traces of the 'authent-ldap' module since the traces contain potentially sensitive information in clear text.
  261. Demo mode: disable the pin button on the left pane (and keeps it open and resizable)
  262. Fix for Plugins: if a page uses set_base then JS popup menu items were reloading the page. Still, set_base should not be used!
  263. Enabled KPI tracing for the export page
  264. Optimization: map the extended attribute code to the corresponding external field when this if possible (ex: org_id->name to org_name); this reduces the number of queries, in particular when using the "export CSV" menu on a list.
  265. Optimize the queries for the export page
  266. Resetting the stop watch...do clean the first start date when it is not running!
  267. Allow to reset a running stop watch (without stopping it!)
  268. Preserve "hidden" template fields.
  269. Dictionary string for the portal should not depend on a module
  270. - Put back support of templates
  271. - Make sure that unwanted parameters cannot be set when creating the ticket
  272. Record the very same installation time for all modules.
  273. Asynchronous emails: added a retry mechanism useful in case your SMTP server restricts the number of emails that can be sent over a period of time (usage: broadcasting a newsletter). The mechanism is not specific to sending email as it is implemented at the AsyncTask level.
  274. 3.2. Known limitations (https://sourceforge.net/apps/trac/itop/report/3)
  275. -----------------
  276. #71 The same MySQL credentials are used during the setup and for running the application.
  277. Suhosin can interfere with iTop. More information can be found here: http://www.combodo.com/wiki/doku.php?id=admin:suhosin
  278. Internet Explorer 6 is not supported (neither IE7 nor IE8 in compatibility mode)
  279. Tested with IE8 and IE9, Firefox 3.6 up to Firefox 24 and Chrome. Be aware that there are certain limitations when using IE8 in "security mode" (when running IE on a Windows 2008 Server for example)
  280. 3.3. Known issues (https://sourceforge.net/apps/trac/itop/report/3)
  281. ------------
  282. #259 Not instantaneously logged off when the administrator deletes a user account
  283. #273 The administrator can delete his/her own user account
  284. #372 APC Cache not efficient (multi org usage, global search)
  285. #382 Search form / base class lost after a search
  286. #377 Case log: exclude the index from the views
  287. #388 IE9: edition fields not resizable
  288. #443 Objects remain in the database after de-installing some modules
  289. #442 Useless profiles installed (1.x legacy data model only)
  290. #438 The selection of Organizations using the hierarchy does not work on IE8 in security mode
  291. #436 Cannot type "All Organizations"
  292. #381 Deletion of dependencies could fail in a multi-org environment
  293. #241 "status" is a free-text field when configuring a Trigger
  294. #358 Multi-column queries sometimes returning an empty set
  295. #399 Copy/paste from iTop's CaseLog looses tabs
  296. #343 CKEditor (HTML Editor) not compatible with direct object creation on ExtKeys
  297. #350 Object edition form: validation does not tell which field has a problem
  298. #730 Leaving temporary files when performing a backup of the data during installation