The documentation from version 39.5.17 of PLANTA project can be found in the new PLANTA Online Help.

Known/Fixed Issues

Client

Problem New from Fixed on
- Currently, effects, e.g. on bars, are not supported in PDF export.    
- Due to an MS-Excel problem, there may be format changes, e.g. on currency fields in the Excel file, if the exported file has been saved before.    
- In modules with IronPython charts, black stains occur when scrolling and zooming in areas containing such charts.
  • This is an existing Windows problem. For further information, click here.
   
- The Edit command is missing on the input fields in the context menu C 39.5.16 C 39.5.17
- When copying/moving via Drag&Drop/Moving, the "forbidden" cursor is sometimes displayed, although copying or moving is still possible.   C 39.5.13
- In modules with activated Next to parent area parameter and existing relations between the data areas, display problems may occur. C 39.5.0  
- The Content pattern, Content width, and Content density symbol parameters have no effect (do not work).   C 39.5.10
- Automatic tooltips are not displayed on cut data field headings in forms and on buttons.   C 39.5.0

Server

Problem New from Fixed on
- Newly created OLEs are not immediately displayed in the OLEs module, but only after you have logged on to the program again.    
- The EXPAND() value range function is only calculated once.    
- In grouping areas the DDI of which is an incarnation DI, there might be problems when you insert new groups. Hence, the sub-DI of the incarnation DI with Function = CO should be used.    
- The Oracle error in the OCIError: ORA-24432: The returned instruction is no tagged instruction log file is not a real error message but a warning and can be ignored.    
- During the Anonymized Scheduling Data Export, the following error message is displayed: FileNotFoundError: [Errno 2] No such file or directory: 'test_data_430.csv'.
Note: Despite this error message, the export was successful. The files could, however, not be zipped and are therefore stored separately in the specified directory.
S 39.5.17 S 39.5.18
- The Reload Python module menu item does not work and must not be used. If it is used anyway, Python error messages are displayed. S 39.5.5 S 39.5.18
- The earned value analysis (EVA) cannot be used. The calculation of the cost deviation (CV) as well as some other possible values are incorrect under certain requirements.   C 39.5.14
- Using the get_children() python method will result in a crash if a non existing data table is called.   C 39.5.0

Database

Problem New from Fixed on
- If date scheduling is aborted due to corrupt data, a Python error message is displayed.    
- If you assign a process model to a project which has no process steps in the first phase, the following error message is displayed at the bottom of the Process Status module: Local Variable akt_pos referenced before assignment. If the process steps are missing in the remaining phases of the process model as well, the message will not be displayed.    
- If a process phase that is active in a project is deleted in the Process Model Templates module, a Python error message is displayed when you open this project or the project overview.    
- When you change the functional ID of a main project, the sequence of subprojects that are on the same structure level may sometimes change.    
- At the moment, it is not possible to report hours worked to request process steps.    
- In PDF export the ValueError: invalid literal for int() with base 10: error message is displayed. After confirmation of this error message, the PDF export is carried out anyway. DB 39.5.10 DB 39.5.11
- The password cannot be reset in the User module. DB 39.5.6 DB 39.5.7
- When trying to delete skills in the Skills module, the Cannot delete in this area message is displayed. Nonetheless, the skills are deleted as required. DB 39.5.6 DB 39.5.7
- Even with CU rights, it is not possible to open the corresponding data table from the Data Items and Module Information modules by clicking on the link on the table ID.   DB 39.5.6
- The VN button in the Task Chain module is currently without function.   DB 39.5.0
- In some cases, the Cannot perform move:? message is displayed when using Drag&Drop move Records (with a questionmark instead of a reason).   DB 39.5.0
- In the My Activities module, opportunity measures that have their date in the future, or have no date at all, are not displayed if there are no further factors (tasks, todo items, etc.) that also belong to the In the future or Without date groups.   DB 39.5.0

Installer

Problem New from Fixed on
- The hidden planta.migration_scripts_to_ignore parameter does currently not work for packets in the after_db_import migration directory S 39.5.21  


Known Issues with Solution

Incorrect Display after Deletion of Presence Data in PLANTA pulse

If extended time recording is used for PLANTA Hybrid and if presence times are recorded in PLANTA pulse, incorrect display may occur if presence data is deleted in PLANTA pulse.
The value will be deleted from the database but the display below the scale will not be refreshed. In the Presence module, the correct value will be displayed.

Error Message upon Login of Users with Portfolio Role (Portfolio Modules)

  • Reason:
    • The problem persists in versions DB 39.5.10 - DB 39.5.with Client 39.5.28 Stable 1 due to missing user rights. Portfolio images will be saved in the client directory for which users have no write rights. Upcoming versions (DB 39. 5.17 and C 39.5.28 Stable 2) will save portfolio images in the temporary directory of the user.
  • Solutions for versions DB 39.5.10 - DB 39.5.16 with Client 39.5.28 Stable 1.
    • In order to solve the problem, please copy the client and server Python files specified in this zip folder to the respective positions in your client and server directories (overwrite the very same files which already exist in your directories with the new ones).

Problems in the use of web interfaces after update

If you use web interfaces, you currently (prospectively up to S 39.5.30) have to exchange the Serviceprovider.jar after update to a newer release (DB or server). The file to be exchanged can be found in the server directory under /jars/webservice_infrastructure.
  • The new file for exchanging can be found on PLANTA transfer server in the Serviceprovider.jar folder.

Python error message when calculating a project with resources with incomplete period records from S 39.5.24

When calculating a project with one (or more) resources with incomplete periods, a Python error message is displayed from S 39.5.24. The Python message is preceded by a text message which informs about the abortion of the calculation and specifies the cause. After this message has been confirmed, the Python message will still be displayed but can be ignored. The cause for this message (inconsistent data), however, must be eliminated actively.
  • Reason:
    • The problem arises when a project is calculated which contains one or more resources the period records of which are incomplete in the period for which the resource(s) is/are planned, or when the resource has no periods at all, although the Start period and End period fields are filled. Both cases represent data inconsistencies.
  • Solution:

Possible error in individual IronPython CU: AttributeError: 'Environment' object has no attribute ‘PanelManager

  • Reason:
    • The problem arises because an old internal client function is accessed here, which no longer exists under this name.
  • Solution:
    • To work around the problem, "PanelsList" from the Public API must be used instead.

Error message when importing the database under oracle

  • Reason:
    • At the time of installation, there must be no synonyms for the database user (whether public or private). See also Installation Parameters.
  • Solution:
    • Disable or delete synonyms
      • At runtime, synonyms are allowed. However, if data is to be imported at a later point in time (e.g. in the course of a DB update), the synonyms must be deactivated.

Date Scheduling

For parameter constellations with Requested start and Requested end in the past, Active today’s line = Checked, Fixing = 1, it may occur that the Calc. end of a task is earlier than the Calc. start (e.g. when the set Actual start is in the past).
  • Reason:
    • The conflict between the Fixing = 1 and Active today’s line = Checked parameters. In other words: The task is supposed to start today although it is frozen in the past.
  • Solution:
    • Set the Split parameter = Unchecked.

Direct read-out from CLOB fields via SQL fails when using MSSQL 2012

Reading out CLOB fields directly via SQL works under MSSQL 2008, under MSSQL 2012 the result is empty.

Example: CLOB fields can therefore not be read out under MSSQL 2012

 sql = """
    select  di051831 as python_id,
            di051828 as alpha120,
            di051867 as description,
            di058129 as template_code
    from    dt333
    where   len(di058129) > 2
"""
result = ppms.db_select(sql)
ppms.ui_message_box(result)

Example: Read out CLOB fields under MSSQL 2012

 sql = """
    select  di051831 as python_id,
            di051828 as alpha120,
            cast(di051867 as varchar(8000)) as description,
            cast(di058129 as varchar(8000)) as template_code
    from    dt333
    where   len(di058129) > 2
"""
result = ppms.db_select(sql)
ppms.ui_message_box(result)

SetObsoletePacketToSucceed packet is set to "yellow" after Update

When updating from DB 39.5.7 (only MSSQL) to a later database version, it may occur that the SetObsoletePacketToSucceed packet is marked yellow, i.e. "waiting".
  • In this case please run the FixLoadAutoNumber and SetObsoletePacketToSucceed packets manually in this very sequence.

Behavior of remaining load in MAN load profiles

If you use the MAN load profile and no actual dates have been set yet, the values are transferred to planned load when you enter the remaining load manually but they are not summarized to planned effort.
  • Workaround: copy the remaining effort to the planned effort after you have entered the remaining load and have calculated the schedule.

Problem with =mod_obj.menu(91) / action ID 91

The system will hang up if menu item 91 is included in a module. This can be caused by a Python macro or by an action ID in the data area.
  • In order to avoid errors, 91 should not be used as an action ID on a data field with DF behavior = c2.
  • In all macros in which mod_obj.menu(91) is used to insert child data areas, you now have to explicitly specify in which data area a record is to be inserted. This is done via the DA Python ID.

  • Solution:
Old: 
mod_obj=ppms.get_target_module()
mod_obj.menu(91)

New:
inv_rec=ppms.get_context_df().get_record()
inv_rec.insert_child(str(DA-Python-ID))

  • The advantage of this procedure is that here you can decide precisely in which data area a record is inserted.

Database error message when saving in Q1B and Q2B after a CU deployment

When saving changes in the customizing schemas Q1B and Q2B (e.g. in the Modules or Data Areas modules), a database error message is displayed after CU deployment.

  • Solution:
    • You have to manually set the HIBERNATE_SEQUENCE to the highest status of the data available in the history tables.

Error message upon database import

When importing the database, an error message occurs: WARN session=global o.d.database.DatabaseTableMetaData - No columns found for table 'DT411' that are supported by dbunit. Will return an empty column list.

  • Solution:
    • Open the config/hibernate.cfg.xml file.
    • Deactivate the hibernate.synonyms parameter.
    • Save.
    • Repeat the database import.

Note:

  • For this solution, S 39.5.19 is required.

The effort bars are missing in the Resource Planning module.

If a resource is not available on one of the days for which he/she is planned (i.e. does not have any Remaining effort), the effort bar for the resource in the Resource Planning module is missing for that day.
  • Solution:

Problem occurring when using individual and standard module variant favorites

If a module variant has been defined as a favorite for all users and then one user defines an individual module variant as his favorite, the previous favorite variant is deactivated for all users.

  • Solution: The module variant that is to be selected for all users by default is not to be declared as a favorite. Instead, check whether the user has an individual favorite and then select the favorite or the required module variant respectively. For this purpose, include the following code in the on_initial_focus() method in the macro of the module:
        standard_favorite= '2000000002' # <- Replace with the standard (not user specific) favorite MV-ID
    
        module_rec405 = ppms.search_record(405, [mod_obj.get_id()], ['id'])
        mv_recs500 = module_rec405.get_children(500, di_list=['user', 'favorite', 'variant_id'])
        user_has_favorite = False
        for rec in mv_recs500:
            if rec.user.get_value() == ppms.uvar_get('@1') and rec.favorite.get_value():
                mod_obj.apply_mv_by_id(rec.variant_id.get_value())
                user_has_favorite = True
                break
        if not user_has_favorite:
            mod_obj.apply_mv_by_id(standard_favorite)

  • The module variant ID that is to be applied as a favorite to all users must be specified as standard_favorite.

The PLANTA service is not started automatically

  • Reason:
    • Depending on the operation system, the specified paths in the standard configuration of the Service Wrapper (yajsw) must be adjusted from time to time.
  • Solution: Adjust the path in the [ServerDirectory]/yajsw/conf/linux.conf file:
    • Default: wrapper.daemon.run_level_dir = /rcX.d

See also: YAJSW documentation

For some tasks, Remaining duration is always at 1 and cannot be changed manually.

For some tasks, the manually allocated remaining duration is overwritten by a 1 after scheduling.
  • Reason:
    • In certain planning constellations, it may occur that Planned duration is empty. In such cases, the scheduling sets the Remaining duration to 1. If an actual start date is entered or if it already exists, the Remaining duration cannot be changed manually anymore. When trying to change it, it is reset to 1 by the capacity scheduling.
  • Solution:

Overwrite more complex python customizings

Information
  • We usually recommended that you use the Import Wrapper to change standard functionalities.
  • For particular programmings, however, this is not possible. In such cases you have to proceed as follows:
    • The code in the file that is stored under /planta_de/ must be adjusted.
    • The change must be documented in the ICOU.
    • Upon each update, the change must be restored.

Details

  • Example of such a programming:
    • The _apply_project_parameter_heredity function is opened by create_project_by_type in create_project.py.
    • This function in turn opens insert_project_child_records for copying the stakeholders of a main project to a subproject.
    • If the insert_project_child_records function is overwritten by the import wrappers, this behavior is not affected.

  • Reason:
    • Both functions are located in the same module, which visualizes their local name space.
    • If the _apply_project_parameter_heredity function now wants to open the insert_project_child_records function, this function is first looked for in the local name space before the search is extended.
    • So if the function is overwritten in the customer directory, the code never gets to search there because the function is already found in the local namespace.

Update after changes to resource structures

If a resource is put on in, or deleted from an existing resource structure, the available capacity and the utilization of a directly superordinate resource are updated automatically, while that of a higher structure level is not.

Print header is not displayed in the print area of a submodule

In the print preview of a submodule, the print header or footer is not displayed.

  • Solution: Copy the following line to the on_load() method in the macro of the submodule in which the print header or footer is not displayed.
 mod_obj.get_das() 

In the server logfile, =com.google.protobuf.InvalidProtocolBufferException is displayed

In the server logfile, com.google.protobuf.InvalidProtocolBufferException: Protocol message was too large is displayed.

  • Solution: An update to a version S.39.5.22 is recommended.

Fuzzy typeface under Windows Server 2008 and Windows 7

The use of PLANTA under Windows versions Server 2008 and 7 results in fuzzy typeface. The reason for this is that the Roboto font used in PLANTA is not installed in these Window versions.

  • Solution: Replace the Roboto font by a common font, e.g. Arial, in the \Resources\defaultSkingSettings file in the GlobalFontName:Roboto line in the Client directory.

Known Issues With Solution

Corrupt Data after Update from DB 39.5.14 to DB 39.5.15 (resolved in DB 39.5.16)

If the new conflict management procedure has been used in the update to DB 39.5.14, data corruption may occur in the update to DB 39.5.15.
  • Reason:
    • The "PosRefreshApplicator" for locating position conflicts which was newly implemented in DB 39.5.15 cannot delete older position conflicts due to incorrectly defined constraints and thus causes data corruption.
  • As a workaround, please execute the following statements in the exact sequence specified here:
    • Important: The statements must be executed before the update!
old table CONFLICT_MAPPING drop constraint FKCONFLICT_MAPPINGID123;
old table CONFLICT_MAPPING drop constraint FKCONFLICT_MAPPINGID124;

old table CONFLICT_MAPPING
    add constraint FKCONFLICT_MAPPINGID123
            foreign key (MODIFICATION) references MODIFICATION
            on delete cascade;
old table CONFLICT_MAPPING
    add constraint FKCONFLICT_MAPPINGID124
            foreign key (CONFLICT) references CONFLICT
            on delete cascade;
            
delete from CONFLICT where UUID in
    (select CONFLICT from CONFLICT_MAPPING where MODIFICATION in
        (select UUID from MODIFICATION where DATAITEM = '001992' and TYPE <> 1));

delete from MODIFICATION where DATAITEM = '001992' and TYPE <> 1;

After update to DB 39.5.15, ICOU data tables are deleted (resolved in S 39.5.29 Stable 2 / DB 39.5.15 Stable 1)

  • Solution: After the server has been unpacked completely, please replace the content of the following files
    • py/api/ppms/customizing/venus/ppms/db_update/modules.py
    • py/api/ppms/customizing/venus/ppms/db_update/update.py
    • migration/after_migration/ZZZ_Icou.py
  • by

Please note

  • It is absolutely necessary that the exchange of the files is carried out during the installation in the time frame between the point at which the server has been completely unpacked and the start of the migration.
  • For the information of the point in time at which the server unpacking is completed, please refer to the server log.
  • If you have further questions, please consult your PLANTA consultant.

Server does not start after updating from DB 39.5.14 to DB 39.5.15 (resolved in DB 39.5.16)

If after an update from DB 39.5.14 to DB 39.5.15 the server does not start and the following message appears in the server log: "Most likely, table EVENTS is missing. Execute migration package WI12399_event_table, or Planta-Events will NOT work in this system!", please carry out the update again using the current download files.

Problem with the deletion of synchronized objects after update to DB 39.5.15 (resolved in DB 39.5.16)

The deletion of objects synchronized with external systems (e.g. Jira) will not be prevented at all positions after an update from DB 39.5.14 to DB 39.5.15.

Persistent database connections do not work (resolved with S 39.5.29)

  • Solution: Add the following parameter to the hibernate.cfg.xml file:
    <property name="hibernate.connection.release_mode">
       on_close
    </property> 

Data field headings suddenly visible in certain areas (resolved in DB 39.5.15)

  • Reason:
    • Client < C 39.5.27 Stable 1 did not visualize the data field headings in the following customizing constellations by mistake: If the Heading parameter was activated in a data area and the Next to parent area was activated in the area subordinate to this area. This caused headings which were activated by mistake not to be displayed either.
    • If Client C 39.5.27 Stable 1 and higher is used, all activated headings are visible, also the ones who are set wrongly.
  • Solution:
    • Activate the Heading checkbox for the data areas in which the data field headings are not to be visible.
    • In PLANTA Standard from version DB 39.5.15, the positions with incorrect customizing are now corrected.

Skill assignment not possible (resolved in DB 39.5.15)

  • In DB version 39.5.14, it is not possible to select skills in the newly assigned skill records in the Resource Data Sheet module because the skill data field is on "output".
  • Reason:
    • The actual skill listbox data field from which skills are selected is hidden in the user view without an option for displaying it.
  • Solution:
    • Open data area 040732 in the customizer in the Data Areas module.
    • Change the entry in the Window field for DI002799 from 9 to 1 and move the DI itdelf all the way up in the data area.

Multiple entries after _Close/Reset in the user menu (resolved in DB 39.5.27)

When clicking on Close/Reset (F7) in the user menu, all entries are displayed multiply but only on one of them the link can be clicked on.

The CU workaround described below applies until the update to C 39.5.27 has been carried out. It is contained in DB versions 39.5.7 - 39.13 by default. If you have the workaround on your system (either manually implemented or contained by default) and you update your system to C 39.5.27, we recommend that you remove the CU solution.

  • Workaround: Overwrite menu item 19 Close/Reset in the user menu.
    • Procedure
      • Create a new macro module with class = 6.
        • If you want anything to be executed when F7 is pressed, write a macro for this, otherwise the Macro field can remain empty
      • Create a new data area in the 0099QC user menu module.
        • DDI = 004336 Button/IronPython
        • Create DI 004336 Button/IronPython as a data field, DF behavior = d4, @L variable = 19, Action ID = ID of the newly created macro module
        • Allocate data area position and Never display = @Y

Manual loads in the future cannot be made when the PM-MONTH load profile is employed (resolved in DB 39.5.14)

If you work with the PM MONTH load profile and you want to create new manual loads in future months after you have planned the effort and have initially calculated the project, you will get one of the following messages, depending on the DB status: Recording after the current week is only possible for overhead cost projects or The posting of actual effort in the future is not possible. The problem occurs in DB versions 39.5.11, 39.5.12, and 39.5.13.

  • Solution:
    • Replace the entry in line 43 of the project_exits.py file in the server directory under /py/api/ppms/customizing/venus/ppms/exits
      • if not self.load_rec.get_di(di_to_check).get_value():
      • by the following:
      • if not self.load_rec.get_di("load_act").get_value():

Incorrect overload data in individual project calculation (resolved in S 39.5.28)

In individual project calculations which share the same resources and plan these resources in projects at the same time, it may occur that higher overload data is displayed than in replanning, although no changes were made to planning data of the project or to the resource data.

  • Reason:
    • The free capacity of a resource cannot always be determined correctly in individual calculation.
      • In individual project calculation, only the active project is loaded to the memory. Other projects which use the same resources have not been identified. In order to determine whether a resource still has free available capacity on a particular day, the individual calculation can only fall back on periods (DT468). In this table the utilization is displayed for each day on which the resource is loaded (equates to the sum of remaining effort of all projects which load this resource on this very day) but information on whether this load is covered by the capacity of the resource or overload is created is missing.
  • Workaround:
    • Carry out a calculation of all projects (replanning).

For a detailed description of the former (up to S 39.5.28) and the new, corrected behavior (from S 39.5.28), please click here.

The _Synchronize with PLANTA pulse context menu is not displayed in the schedule in DB 39.5.12 (resolved in DB 39.5.13)

  • Reason:
    • The context menu is located in window 9.
  • Solution:
    • To have the context menu displayed in the Schedule module by default
      • change DI004336 Button/IronPython (DF heading = Synchronize with PLANTA pulse) in data area 044473 from Window = 9 to Window = 1.

When updating a DB version < 39.5 to DB 39.5.11, performance issues may occur when migrating the budget (resolved in DB 39.5.12)

When updating a database < 39.5 (e.g. 39.4.x) to DB 39.5.11, the budget migration of several complex project structures takes up to 5 min per project.
Solution
  • Before carrying out the update, download the alternative_migration_directory.zip file and unzip it on the application server.
  • When adjusting the properties file, insert the planta.alternative_migration_directory update parameter (for parameter description) as follows:
    planta.alternative_migration_directory= path to the alternative_migration_directory (e.g. /tmp/migration)> 
  • Update your server to DB 39.5.11
  • Download the migrationpackets.zip and unzip it.
  • Insert the WI10938_cost_and_budget_migration.py file in the //migration/after_db_import/DB_39_5_2 directory.
  • Insert the zz_WI17217_unload_and_replan.py file in the //migration/after_db_import/DB_39_5_7 directory.
  • Drop the following statement on the database:
    alter trigger "PLANTA_ON_UPDATE_DT461" disable
  • Start PLANTA project and log on Customizer Migration Migration Packets Click on the Read packets from file system button
  • Run the MigrateCostsAndBudget and UnloadAndReplan migration packets.
  • Drop the following statement on the database:
    alter trigger "PLANTA_ON_UPDATE_DT461" enable

Python error message when posting costs and revenues (resolved in DB 39.5.12)

In DB version 39.5.11, a Python message is displayed in the Cost Posting and Revenues Posting modules when you try to post costs or revenues
  • Solution
    • Replace the load_creation file in the ppms.module_subclasses.load_creation.CostRevenueBookingModule directory by the following.

Incorrect data of the department resources if employee resources create non-working days in version DB 39.5.10 (resolved in DB 39.5.11)

If an employee resource creates "absence" or "vacation" for a particular day, Work = "no" is set for this day for the respective resource.
  • Solution:
    • to correct the error in the system
      • please save the attached Python file period.py.txt in your server directory under py/api/ppms/customizing/venus/ppms/period.py.
        • Please save the file as a .py file (period.py).
    • To correct already incorrect data,

Requested dates of the quality gates cannot be changed after they have been copied to a planning object (resolved in DB 39.5.11)

After a quality gate template has been copied to a planning object in the Quality Gates module, the requested dates of the quality gates cannot be changed since they are on output.

  • Solution:
    • Open the Quality Gates module MOD009CU6 in the customizer.
    • Set field 001114 Requested end in data area 057527 to input.
    • Save.

Error occurring when manually entering the archive_dir parameter (resolved in S 39.5.25)

When you enter the archive_dir interface parameter, an SQL error occurs.

  • Solution:
    • Open the 009COL listbox module in which the error occurs in the customizer.
    • Remove the values in the Pos. and Parent area fields in data area 056658 and 056659.

FixPeriodAggregationQuery fails when updating to Venus under MSSQL (resolved in S 39.5.25)

When running the FixPeriodAggregationQuery migration packet in a Venus system update on Server 39.5.24 under MSSQL, the packet may fail. The problem does not occur when updating from Venus to Earth on Server 39.5.24.

Reason:
  • The database expects an incorrect version of the statement.
Solution
  • Replace statement 000682 (for MSSQL) by the statement from the migration/server/S_39_5_24/aggregation_mssql_old.sql PLANTA server directory.
  • Subsequently run the FixPeriodAggregationQuery migration packet.

Status report can no longer be created after update to S 39.5.22 (resolved in S 39.5.23)

After updating to Server 39.5.22 with a database version up to DB 39.5.9, no status report can be created and the following error message is displayed: java.sql.SQLSyntaxErrorException: ORA-01741: illegal zero-length identifier

  • Reason:
    • The MoveDeviationOutOfScheduling migration packet sets the DI001296 and DI001177 DIs to virtual, deletes the columns from the database and adds value ranges for the virtual DIs instead, which take on the calculation. The respective DIs in status report tables, however, have not been set to virtual.
  • Solution:

 def computeOutput(di):
    rec = di.get_dtp_record()
    calc_end = rec.calc_end.get_value()
    requested_end = rec.req_end.get_value()
    if not calc_end or not requested_end:
        return 0
    return calc_end - requested_end

computeOutput.deps = ("calc_end","req_end") 

    • Save.
    • Restart server.

Incorrect utilization diagrams due to missing values in DI002488 (resolved in S 39.5.23)

In PLANTA versions with Server S 39.5.22, incorrect data may occur in utilization diagrams since DI002488 is not filled.
  • Solution:
    • Either import the server patch for S 39.5.22
      • As of now, there is a server patch with the help of which this problem can be fixed. For the patch import, please contact your PLANTA consultant.
    • Or update your server to S 39.5.23

Python error message when selecting a date in the Resource Structure module (resolved in DB 39.5.10)

If you display the Left on column in the Resource Structure module and try to fill it, a Python error message is displayed.
  • Solution: Do not use the column mentioned above. In version DB 39.5.10 it has been removed from the Resource Structure module.

Problem when unloading hyperlinks via empty storage DI under MSSQL (resolved in S 39.5.22)

When carrying out a CU deployment under MSSQL, the following problems may arise:

ERROR session=global o.d.o.AbstractBatchOperation - execute: table.column=DT397.DI024561 value is empty but must contain a de.planta.server.database.DataTransferException: ERROR inserting into table DT397 value at de.planta.server.database.DataImporter$ImportHandle.performTransferNonAtomic(DataImporter.java:218)

  • Solution up to (and including) S 39.5.18
    Before the CU deployment is carried out, NULL values of DI024561 must be deleted from the database of the source system. For this purpose, run the following SQL statement.
DELETE FROM DT397 WHERE DI024561 IS NULL

Note

  • The same may occur when using other storage DIs, e.g. DI024543 in DT460 Hyperlink Q5B. The SQL statement must then be adjusted respectively.

NameError global name 'sort_dict_list_By_Uid' is not defined (resolved in DB 39.5.10)

When opening the effort trend charts in a status report, a NameError occurs.
  • Solution:
    • Open MOD 009A52 in the Modules module.
    • Open data area 045418.
    • Adjust IronPyhton script for DF714068 and DF719852 as follows:
      • Change line 54 in both data fields to:
dict_list = sort_dict_list_by_date(dict_list)

Problems with reselection of the values in the absence listbox of the Absence module (resolved in DB 39.5.9)

It is not possible to select a new value in the absence listbox of the Absence module after you have deleted the existing entry, clicked out of the listbox without saving, and opened the listbox again.
  • Solution:
    • Open DI 041422 in the Data Items module,
    • Replace the existing Python value range by the following:

def set_absence(rec,type):
    vacation=rec.vacation
    absence=rec.absence
    work=rec.work
    
    """reset vacation or absence"""
    vacation.set_string_value(0)
    absence.set_string_value(0)
    rec.save(('absence','vacation'))
    
    if type == "vacation":
        vacation.set_string_value(1)
        work.set_value(0)
    elif type == "half_vacation":
        vacation.set_string_value(0.5)
    elif type == "absence":
        absence.set_value(1)
        work.set_value(0)
    elif type == "half_absence":
        absence.set_string_value(0.5)
 
def remove_absence(rec):
    rec.vacation.set_string_value(0)
    rec.absence.set_string_value(0)
    rec.work.set_value(1)
    
def processInput(di, oldvalue):
    rec = di.get_dtp_record()
    new_val = di.get_value()
    vacation=rec.vacation
    absence=rec.absence
    old_absence=absence.get_value()
    old_vacation=vacation.get_value()
    absence_type=di.get_value()
    work=rec.work.get_value()
    type=""

    type_dict={}
    type_dict["half_vacation"]=[11]
    type_dict["vacation"]=[10]
    type_dict["half_absence"]=[21]
    type_dict["absence"]=[20, 30]

    type_master = ppms.search_record(447, [absence_type], [41279], True)
    
    if hasattr(type_master,'number_i2'):
        type_master_data=type_master.number_i2.get_value()
    else:
        type_master_data=""

    for key,value in type_dict.items():
        if type_master_data in value:
            type=key

    if (work == 1 or old_absence == 1 or old_vacation == 1) and type != "":
        set_absence(rec,type)
        return new_val
    elif work ==0:
        ppms.ui_message_id("0711")
        remove_absence(rec)
        return 0
    else:
        remove_absence(rec)
        return 0

processInput.deps = ("DI001364",)

Client is not installed when updating to Server 39.5.20 (resolved in S 39.5.21)

When updating to server 39.5.20, the client is not installed.

  • Solution:
    • Carry out update with client install = no
    • The client must be installed separately for the server 39.5.20 and DB 39.5.8 releases. The following procedures are possible:
      • Download the current client and carry out the client installation without the PLANTA installer.
      • Open the client installer in the PLANTA Installer dirctory: <Installer directory>\client\Installer\PlantaClientInstaller.exe.

Error message in customizing deployment with NULL values in DT447 when using DB 39.4.4.0 (resolved in S 39.5.21)

When carrying out a CU deployment, the following problems may arise:

de.planta.server.database.DataTransferException: ERROR inserting into DT 447 / SQL table 'DT447' Caused by: java.sql.BatchUpdateException: ORA-01400: Inserting NULL in ("DB_USER"."DT447"."DI041270") is not possible

  • Solution:
    Before the CU deployment is carried out, data must be adjusted in DT447. For this purpose, the following SQL statements are required:

UPDATE DT447 SET DI041270 = '011' WHERE DI041270 IS NULL OR DI041270 = ('');
UPDATE DT447 SET DI041269 = 'P20' WHERE DI041269 LIKE '%8';
UPDATE DT447 SET DI041268 = 'P20' WHERE DI041268 LIKE '%8';

Python error message when importing German holidays (resolved in DB 39.5.9)

If the import of German holidays is done by a user with system language "English", a Python error message is displayed in the import process.
  • Solution:
    • Open the Text Constants module.
    • Display the Constant EN column for the "English" language.
    • Replace the text of the 001789 constant
      • Holiday import for calendar "{calendar}" - state: {} - Year {start_year} till {end_year}
      • by the following:
      • Holiday import for calendar "{calendar}" - state: {state} - Year {start_year} till {end_year}

Problem with changed access rights due to a change of the module variants (resolved in DB 39.5.8)

Despite missing rights, numerous fields in the Idea Core Data, Proposal Core Data, Project Core Data, and Program Core Data modules can be changed after change of the module variant and subsequent selection of the Base module variant.

  • Solution: Replace the safe_mv_switch function in the base_class.py file in the o=py\api\ppms\customizing\venus\ppms\module_subclasses\= directory by the following characters:
 def safe_mv_switch(fn):
    @wraps(fn)
    def wrapped_mv(*args, **kwargs):
        mod_obj = args[0]
        right_setting = getattr(mod_obj, 'right_setting', None)
        if not right_setting:
            right_setting = getattr(mod_obj, 'right_settings', None)

        if right_setting:
            # Avoid customizing dependency until runtime
            from ppms import project_rights
            project_rights.exec_project_rights(mod_obj, right_setting)

        return fn(*args, **kwargs)

    return wrapped_mv 

Problem with the update of the charts of structured projects in the Status module (resolved in DB 39.5.8)

After creation of a new status report in structured projects, the cost and effort trend charts in the Status module are not refreshed after clicking on the Update button.
  • Solution:
    • Open data area 052067 in the Data Areas module.
    • Insert variable @L30 on DI008413.
    • Save.

Python error message after using the Reload Python Modules menu item (resolved in S 39.5.20)

If you use the Reload Python modules menu item when making changes to Python modules that have complex dependencies to other Python modules, Python error messages may occur when using functions from these Python modules.
  • Solution: In this case, the service (server) must be restarted.

Resource absence not considered when creating periods in DB 39.5.6 MSSQL (resolved in DB 39.5.7)

The procedure for creating new periods in DB 39.5.6 MSSQL does not consider the absence of the resources.
  • Solution:
    • Delete the p_calc_periods procedure on the database (drop).
    • Run the following script P_CALC_PERIODS.sql on the database.
    • Create a macro module, copy the following correct_periods.py and run the macro.

Resource structure can be changed in the Select Stakeholders module (resolved in DB 39.5.7)

In the Select Stakeholder module, the resource structure can be changed via Drag and Drop.
  • Solution:
    • Open module 0099IJ in the Modules module.
    • Deactivate the checkbox of the Move parameter for data area 045322 Resource.
    • Save.

In grouped areas, the traffic lights of the traffic light DIs do not take effect (e.g. colors on the bar DIs) (resolved in DB 39.5.7)

  • Solution:
    • If traffic light DIs (e.g. bars) are available in areas with activated Group parameter, the sub-DIs of these DIs must be included in the data area as well. For an example, see the Resource Utilization by Code module.

Error message when opening the Work Reporting module (resolved in S 39.5.19/DB 39.5.7)

When opening (activating the tab of) the Work Reporting module, a trace back error message is displayed: Traceback (most recent call last): File "MACRO_MOD_009ABV.py", line 26, in on_initial_focus ...Caused by: java.sql.SQLDataException: ORA-01841: (Entire) year must lie between -4713 and +9999 and must not be 0

Area names in the portfolio data are not displayed (resolved in DB 39.5.7)

In the Evaluation Criteria module, the area names are not displayed.

  • Solution:
    • Open module 0099FA in the Modules module.
    • Open data area 050091.
    • create a new data field for DI057615 in the data area. Set the Window parameter to value "9" and the DF behavior parameter to value "0".
    • Save.

Scheduling does not run in programs (resolved in DB 39.5.7)

  • Solution:
    • Replace the existing start_tcalc.py Python file under /py/api/ppms/customizing/venus/ppms by the following: start_tcalc.py.

Bars of the resources in the resource utilization are all of the same color (resolved in DB 39.5.7)

In the Resource Utilization by Code module, the bars for the calculated dates are displayed in the same color below the resources instead of those assigned to the project code.

  • Solution:
    • Open module 0099G0 in the module customizer.
    • Open data area 044340.
    • create a new data field for DI007633 in the data area. Set the Window parameter to value "9" and the DF behavior parameter to value "0".
    • Save.

Python error message when activating a process model with incorrect settings (resolved in DB 39.5.7)

In the Process Status module, a Python error message is displayed when activating a process model, if a value that is neither a valid resource ID nor a valid Python ID that contains a resource ID was specified as a Placeholder in the Process Model Templates module.

  • Solution:
    • Specify a value as a placeholder in the process model in the Process Model Templates module that is either a valid resource ID or a valid Python ID that contains a resource ID.

In the Schedule module, ID and task name disappear if a network cycle exists (resolved in S 39.5.16)

If a scheduling is carried out while a network cycle exists, the ID and the task name of tasks that are involved in the cycle disappear from the Schedule module.

Missing period records when creating new resources (resolved in S 39.5.18)

If, upon creation of a resource, the parent resource is already selected before saving for the first time, no period records are created for this resource when saving. If caching is already done before selection of a resource, the period records are created.
  • Solution for the creation of the resources directly in the Resource Data Sheet module:
    • Extend or shorten the values in the Start period and End period fields each by one day.
    • Save.
    • Reset the values, if necessary, and save again.

  • Server path for the import:
    • Import the employee data twice.
      • The first import run is done without parent resources (or with Parent resource name field = empty for all persons). As a result, the resources are created with their periods.
      • The second import run is done with the parent resources. As a result, the structure is created.

Employees are planned despite their absence (resolved in DB 39.5.7)

If the already saved absence type (reason for absence) is changed to another type (e.g. Absence) in the Absence module, the respective resource is reset to "available" and can be planned.

  • Solution:
    • Open DI041422 in the Data Items module.
    • Adjust the value range as follows.
    • Before:
      def set_value(rec,type):
          vacation=rec.vacation
          absence=rec.absence
          #
          """reset vacation and absence"""
          vacation.set_string_value(0)
          absence.set_string_value(0)
      ...
      After:
      def set_value(rec,type):
          vacation=rec.vacation
          absence=rec.absence
          #
          """reset vacation and absence"""
          vacation.set_string_value(0)
          absence.set_string_value(0)
          rec.save(('absence','vacation'))
      ...
    • Save.

Error message in the Microsoft Project module when importing Microsoft Project files in DB 39.5.6 (resolved in DB 39.5.7)

Upon import of microsoft project files, the UnicodeDecodeError: utf-8' codec can't decode byte 0x8f in position 50: invalid start byte error message occurs after every server update from version S 39.5.17.

  • Solution:
    • The /user_interface/ and /msp_interface/ directories must be exchanged subsequently.
      • Note: First, save the directories.
      • The required files are located in the py.zip file.
    • Restart the PLANTA service.

Client can no longer connect when using Kerberos (resolved in S 39.5.18)

From S 39.5.16, the client can no longer connect when using Kerberos. After activating the client logfiles, you'll see the IE: java.lang.NullPointerException error message in it.
  • Solution:
    • Store mutual = on in the client parameters

User menu does not minimize (resolved in C 39.5.16)

When using C 39.5.15, the user menu is not minimized if the Search in module bar (CTRL + F) is opened in another module.
  • Solution:
    • Switch back to the module with active search bar.
    • Close the search bar.

Creation of task documents not possible in the Task module (resolved in DB 39.5.7)

In the Task module, saving newly created task documents is not possible.

Empty field in the Absence module when changing from vacation to sickness (resolved in DB 39.5.7)

When changing the absence type from Vacation to Sickness via the listbox in the Absence module, the field remains empty.
  • Solution:
    • Open DI 041422 in the Data Items module,
    • Replace the existing Python value range by the following:

def set_absence(rec,type):
    vacation=rec.vacation
    absence=rec.absence
    work=rec.work
    
    """reset vacation or absence"""
    vacation.set_string_value(0)
    absence.set_string_value(0)
    rec.save(('absence','vacation'))
    
    if type == "vacation":
        vacation.set_string_value(1)
        work.set_value(0)
    elif type == "half_vacation":
        vacation.set_string_value(0.5)
    elif type == "absence":
        absence.set_value(1)
        work.set_value(0)
    elif type == "half_absence":
        absence.set_string_value(0.5)
 
def remove_absence(rec):
    rec.vacation.set_string_value(0)
    rec.absence.set_string_value(0)
    rec.work.set_value(1)
    
def processInput(di, oldvalue):
    rec = di.get_dtp_record()
    new_val = di.get_value()
    vacation=rec.vacation
    absence=rec.absence
    old_absence=absence.get_value()
    old_vacation=vacation.get_value()
    absence_type=di.get_value()
    work=rec.work.get_value()
    type=""

    type_dict={}
    type_dict["half_vacation"]=[11]
    type_dict["vacation"]=[10]
    type_dict["half_absence"]=[21]
    type_dict["absence"]=[20, 30]

    type_master = ppms.search_record(447, [absence_type], [41279], True)
    
    if hasattr(type_master,'number_i2'):
        type_master_data=type_master.number_i2.get_value()
    else:
        type_master_data=""

    for key,value in type_dict.items():
        if type_master_data in value:
            type=key

    if (work == 1 or old_absence == 1 or old_vacation == 1) and type != "":
        set_absence(rec,type)
        return new_val
    elif work ==0:
        ppms.ui_message_id("0711")
        remove_absence(rec)
        return 0
    else:
        remove_absence(rec)
        return 0

processInput.deps = ("DI001364",)

Incorrect syntax near 'r_' error message when saving portfolio listbox values (resolved in S 39.5.15)

Upon creation of new listbox values in the Portfolio Listbox Values module, the "Incorrect syntax near 'r_'" error message is displayed and the listbox values are not saved.

  • Solution:
    • Open the Data Dictionary module.
    • Change the Entity names of DT875 to RiskCategory and save.
    • Afterwards, the data dictionary must be reloaded: Tools -> Restart PLANTA server (up to S 39.5.20: Tools -> Reload System Customizing)

Empty Category name field in the Project Core Data module (resolved in DB 39.5.7)

After a new risk category has been entered in the Portfolio Listbox Values module and a new risk with this category was created in the Risk Checklist module, the Category name field for the new category is empty in the Project Core Data module.
  • Solution:
def computeOutput(di):
    rec = di.get_dtp_record()
    name = ''
    
    rec875 = ppms.search_record(875, [str(rec.category_id.get_value())], ['name'], True)
    if rec875:
        name = rec875.name.get_value()
    
    return name

computeOutput.deps = ("DI023022",)
  • Save.

The wrong time is entered in the print footer (resolved in DB 39.5.7/C 39.5.13)

Both when printing and in the print preview, the current time is not displayed in the footer. Instead, the time at which the user has logged on is displayed in the footer.

Note

  • The following solutions only work in connection with a Client version from C 39.5.13.

Solution for DB 39.5.0 - DB 39.5.6

  • Solution: Adjust the default print footer as follows:
    • Open module 009AFA in the Modules module.
    • Open data area 045645.
    • Replace DI 000022 by DI 025544 here and save with the following data field configuration:
DI Print text Window DF behavior DF height DF width X pos. W Y pos. W Symbol ID
025544 @date_time(dd.MM.yy HH:mm:ss) 1 o 35 600 600 10 002008
Notes
  • You have to restart the session in order for the changes to apply.
  • An individual print area must be adjusted by using the new @date_time(dd.MM.yy HH:mm:ss) variable in the Print text field.

Solution for DB 39.4.4.0

  • Solution: Adjust the default print footer as follows:
    • Open module 009AFA in the Modules module.
    • Open data area 045645.
    • Insert DI 025544 and DI 056959 here with the following data field configuration:
DI DF heading Print text Window DF behavior DF height DF width X pos. hdg Y pos. hdg X pos. W Y pos. W Symbol ID
025544 @date_time(dd.MM.yy HH:mm:ss) 1 o 35 600 600 10 002008
056959 Printed by: 1 o 1000 10 10 300 10 002008
    • Set DI 000022 to window 9 and save.
Notes
  • You have to restart the session in order for the changes to apply.
  • An individual print area must be adjusted by using the new @date_time(dd.MM.yy HH:mm:ss) variable in the Print text field.

Under DB 39.5.X, no replanning but a capacity scheduling is carried out in the Replanning module (resolved in DB 39.5.7)

In the Replanning Calculation Of All Projects module, no replanning is carried out but only a capacity scheduling for all displayed projects.

  • Solution:
    • In order to fix this issue, the start_tcalc.py Python file under /py/planta_de/ppms must be replaced by the following:

Incorrect percentage values in the My Department and Planning modules (resolved in DB 39.5.7)

Information

  • For the changes described below, server version S 39.5.17 is required.
  • Due to the following customizing changes, incorrect percentage values can be corrected in projection data fields.
    • In the grouping area (the Group parameter is activated in the data area header) of the affected module, the following must be done:
      • In the affected DI on the sub-DI with Function = W, set the summarization type = 5.
      • Change the following Python code in the value range of the sub-DI.
        def computeOutput(di): 
            rec = di.get_dtp_record()
            if rec:
                # using dtp for projections (has no mts)
                avail_cap = rec.summ_avail_cap.get_value()
                summ_planned = rec.summ_planned.get_value()
            else:
                # using mts for groupings (has no dtp)
                rec = di.get_dfs()[0].get_record()
                avail_cap = rec.summ_avail_cap.get_raw_value()
                summ_planned = rec.summ_planned.get_raw_value()
                
            if not avail_cap:
                return 0
                
            perc = (summ_planned / avail_cap) * 100
            return perc
            
        computeOutput.deps = ("DI002454", "DI002483")

  • Copy the sub-DI with summarization type = 5 including all of its reference DIs to the data area.

Example

  • Data area DA050762 is the grouping area in the My Department module. Open the grouping area in the module customizer.
  • The affected projection DI is DI059506. Open the projection DI in the Data Items module.
  • DI059759 is the sub-DI with function = W. Open this DI in the Data Items module as well and enter the value 5 in the Summarization type parameter.
  • Enter the Python code specified above in the value range of DI059759.
  • Include sub-DI 059759 and its reference DIs DI002483 and DI002454 in data area DA050762 and set it to Window = 9.
  • Click on the Tools -> Restart PLANTA server menu item (up to S 39.5.20: Tools -> Reload System Customizing) (since this change involves the system customizing).

Note

  • The procedure also applies to the Resource Planning module and to all individual modules with similar constructions (projection data fields with percentage values).
  • If you do not adjust all affected modules, error messages pointing to the missing DIs are output in the non-adjusted modules.
  • For further information on customizing projections, see the Projection chapter in the Scales topic.

Unable to typecast value <g> of type to NUMERIC_ error message when installing DB 39.5.6 (resolved in S 39.5.15)

When installing a DB 39.5.6 (DB import) with particular Java environments (e.g. Java version 1.7.0_71), the following error occurs:

Performing DB import:
Disabling database objects that might get in the way, such as triggers and foreign key constraints... done, disabled 633 objects.
de.planta.server.database.DataTransferException: ERROR refreshing DT 411 / SQL table 'DT411'
at de.planta.server.database.DataImporter$ImportHandle.performTransfer(DataImporter.java:268) 
at de.planta.server.database.DataImporter$ImportHandle.performTransfer(DataImporter.java:123)
at de.planta.server.database.DataTransfer$TransferHandle.call(DataTransfer.java:101)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.dbunit.dataset.datatype.TypeCastException: Unable to typecast value <g> of type <java.lang.String> to NUMERIC 

  • Solution: use the latest Java version

The focus switches to My Activities, after the Absence module has been opened (fixed from DB 39.5.7)

After the absence for a particular resource has been opened from the Department Board in the Absence module, the focus switches directly to the My Activities module.
  • Solution: The macro of the My Activities module must be changed.
    • Procedure
      • Open module 009BJ3 in the Modules module.
      • Click on the Edit macro button.
      • Search for the display_todays_tasks function in the existing macro and replace it by the following:
        def display_todays_tasks():
            todays_tasks_area_id = '000918'
            possible_children = []
            [possible_children.append(dac.get_name()) for dac in
            mod_obj.constants.get_customizing().get_children()]
            for constants_rec in mod_obj.constants.get_records():
                if constants_rec.no_id.get_raw_value() == todays_tasks_area_id:
                    for da_name in possible_children:
                        child_recs = constants_rec.get_children(da_name)
                        if len(child_recs) > 0:
                            child_recs[0].expand() 

Python error message when copying from modules with module variants under MSSQL (resolved in S 39.5.15)

In the Modules module, a Python error message occurs when copying from modules with module variants. This error has only been detected under MSSQL.

Field without heading in the Process Status module (resolved in DB 39.5.7)

A checkbox without heading is displayed in the Process Status module (from S 39.5.14).

  • Solution:
    • Open module 0099V3 in the module customizer.
    • Open data area 043806.
    • Enter the following text for DI063594 in the DF heading parameter: Placeholder set.S
    • Save.

Content of the Comment end dates field in status reports always contains the latest comments (resolved in DB 39.5.0)

For outputting the comment on end dates, the status reports use the same DI as the Status module.

  • Solution:
    • Open module 009A52.
    • Open data area 044745.
    • Replace DI029191 by DI029197.
    • Save.

System crash when clicking on an empty listbox (resolved in C 39.5.15)

When opening a listbox that does not contain any data and for which the Fixed heading checkbox is deactivated in the customizer, the expanded listbox window is displayed in gray. Clicking on the gray window leads to a system crash.

Example

Listbox.jpg

  • Solution: Activate the Fixed heading checkbox in the respective listbox module (and if required, deactivate the Heading checkbox).

Python error message when clicking on the module ID in the Roles module (resolved in DB 39.5.6)

If you click on the link in the Module column in the Roles module, an error message is displayed.

  • Solution:
    • Open module 009A6K in the Modules module.
    • Change the macro for the module to:
      from ppms import ppms
      #Macro module
      module_macro = ppms.get_macro_module()
      
      #Invoker module
      invoker_module = ppms.get_target_module()
      
      
      #Get module
      if hasattr(module_macro.get_invoker_rec(), 'startup_mod'):
          sub_mod_nr = module_macro.get_invoker_rec().startup_mod.get_text_value()
      else:
          sub_mod_nr = module_macro.get_invoker_rec().startup_module.get_text_value()
      
      values = []
      
      values.append(sub_mod_nr)
      
      #Set @L value
      invoker_module.set_new_L_var(4, values)
      
      #Open new mainmodule for submodule value
      mod_obj = invoker_module.open_module('000855')

In the print preview, the login time is displayed instead of the time of printing (resolved in DB 39.5.7)

  • Solution (from C 39.5.13): Replace DI000022 Today's date in the default footer print area DA045645 or in the individually used print area by DI025581 Background and enter the following variable in the Print text parameter (hidden in the standard, must be displayed by the user): @date_time(dd.MM.yy HH:mm:ss

Unhandled Python exception in =on_load wrapper method during status report creation in S 39.5.14 (Oracle) (resolved in S 39.5.15)

When creating status reports under Oracle, the following error message is displayed: planta_de.ppms.ppms_.DatabaseError: 'java.sql.SQLException: ORA-01747: Invalid specification for user.table.column, table.column or column\s

  • Reason: Incorrect SQL statements 000336 and 000312
  • Solution: Please replace the content of each of the above specified SQL statements by the respective contents following below:
000336
SELECT DI000215,DI040837 FROM DT412
WHERE di000275=0 and di001700 <> 20
AND di000239='{0}' AND DI040837 is not NULL
000312
SELECT DISTINCT DI000215, (SELECT DI000215 FROM DT412 source_name WHERE 
                      DI000238=DT412.DI040837), 
                      (SELECT DI000239 FROM DT412 source_table WHERE DI000238=DT412.DI040837)
                      FROM DT412 
                      WHERE DT412.DI000239='{0}' AND DT412.DI040837 IS NOT NULL
                      AND DI040837!='AUTO' AND DI040837!='DATE' AND DI040837!='USER'
                      ORDER BY DT412.DI000215 asc

Unhandled Python exception in on_load wrapper method during status report release S 39.5.14 (resolved in S 39.5.15)

When releasing status reports, the following error message is displayed: planta_de.ppms.ppms.DatabaseError: "com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near '}'._

  • Reason: Incorrect create_report.py and project_rights.py Python files.
  • Solution: Please replace the content of the files by the respective content following below:

The Migration Packets module is defective (resolved in DB 39.5.4)

When running migration packets, a Python error message is displayed.
  • Reason: The revised version of this module has erroneously been integrated in database version 39.5.3 already.
  • Solution:
    • The Migration Packets 009BWQ module cannot be used in this version. Instead, module 009CEP is to be used.
    • For this purpose, the Python status of the py and migration folders must be upgraded to changeset 47818 in the server directory.
    • Furthermore, it is necessary to include "${WORKDIR}" in the planta_server.sh, and yajsw/conf/common.conf files in the "PYTHONPATH" variable.

Python exception when clicking on PLANTA project vs. Microsoft Project (resolved in DB 39.5.3)

When using DB 39.4.4.0 and Server 39.5.x, the following error message is displayed when opening Microsoft Project: Unhandled Python Exception in macro 009BK0 [....] IndexError: list index out of range

  • Solution:
    • Open module 009BK0 in the Modules module.
    • Click on the Edit macro button.
    • Replace the following lines:
    • Before:
      pr_id = ppms.get_target_module().get_current_L_var()[74][0]
      mod.set_new_L_var(74, [pr_id])
      After:
      pr_id = ppms.get_target_module().get_current_L_var()[30][0]
      mod.set_new_L_var(30, [pr_id])
    • Save.

Python error message when exporting to Microsoft Project (resolved in S 39.5.2)

When you export to Microsoft Project, a Python error message is displayed.
  • Reason: The runtime of a project is longer than the runtime of the basic calendar.
  • Solution: Adapt the runtime of the basic calendar in the Calendar module to the runtime of the project.

Manually adjusted remaining costs of cost resources are not copied to the tasks (resolved in DB 39.5.1)

If remaining costs are planned and calculated, remaining costs are changed manually, the actual start is set and recalculated for a cost resource, then the changes to the remaining costs are invisible in the field of the same name on task (DT463), they are, however, visible in the total costs.

  • Solution:
    • open the Data Items module.
    • enter DI000698
    • Delete the "PY" entry from the WB type field.
    • Save.

In customized skins, every text is written in CAPITAL LETTERS (resolved in DB 39.5.1)

Skins created by the user are entirely displayed in capital letters.

  • Solution:
    • In order to create all skins properly from now on,
      • open module 006556 in the Modules module.
      • Open data area 026290 in the Data Areas module.
      • create a new data field for DI025687 in the data area. Set the Window parameter to value 9 and the DF behavior parameter to value 0. Enter value @Y in the Default value parameter.
      • Save.
    • In order to additionally copy already existing skins,
      • open the Skins module.
      • open the required skin.
      • activate the customizing mode.
      • display the Lowercase field from window 9.
      • activate the Lowercase checkbox.
      • Save.

Effort for skill resources is not summarized to yearly tranches (resolved in DB 39.5.1)

Problem: Effort for skill resources is not summarized in the yearly tranches of the Effort budget area in the former Budget module.
  • Reason: The p_upd_kost_aufw_erl_akt procedure is incorrect.
  • Workaround: Adjust the query in the procedure as follows:

SELECT       
     di001001 AS                pr,
     di023062 AS                jahr,
     di001003 AS                ueb_pr,
     dt470.di029478 AS          koagrp,    

     ROUND(SUM(di001413)) AS        soll,
     ROUND(SUM(di001413)) AS        soll,
     ROUND(SUM(di001426)) AS        rest,
     ROUND(SUM(di001432)) AS        gesamt,    

     ROUND(SUM(case when DI003414 in ('1I','1E','5','2') then di001509 else 0 end)) AS        soll_aufw,
     ROUND(SUM(case when DI003414 in ('1I','1E','5','2') then di001510 else 0 end)) AS        ist_aufw,
     ROUND(SUM(case when DI003414 in ('1I','1E','5','2') then di001511 else 0 end)) AS        rest_aufw

   FROM dt472
   INNER JOIN dt461 ON (di001395 = di001001)  
   INNER JOIN DT467 ON (DI001517=DI001218)
   INNER JOIN DT470 ON (di001366 = di001518)
   INNER JOIN dt861 ON (di001395 = di023119 and di023062 = extract(YEAR FROM di001519))

   -- Positive postings

  WHERE dt472.di001510 + dt472.di001511  <> 0
  AND dt461.di001052 = '002190'
  GROUP BY di001001, di023062, di001003, di029478 

When changing the status of a project, the status of the subproject is not changed accordingly (resolved in DB 39.5.0)

When changing the status value in the Project Core Data module, the status for the subproject is not changed accordingly. The status in the subproject cannot be changed afterwards.

From S 39.5.12

  • Solution:
    • Open data item 001042 in the Data Items module and insert the following value range:
      def checkInput(di, oldvalue):
          rec = di.get_dtp_record()
      
          #check pr is main pr
          if rec.pr_id.get_value() != rec.main_pr_id.get_value():
              ppms.ui_message_id("0835")
              return False
      
          return di.get_value() in [0, 1, 2, 9]
      
      checkInput.deps = ("DI001052",)
      
      def processInput(di, oldvalue):
          rec = di.get_dtp_record()
          pr_id = rec.pr_id.get_value()
          project_state = di.get_value()
          main_pr_id = rec.main_pr_id.get_value()
      
          # check if project is loaded
          pr_loaded = rec.loaded.get_value()
          
          loaded_rec = ppms.search_record(461, [main_pr_id], [1044], True)
          if loaded_rec:
              main_pr_loaded = loaded_rec.loaded.get_value()
          else:
             main_pr_loaded = 0
      
          if project_state in [0, 2, 9] and pr_loaded == 1 and main_pr_loaded == 1:
              module = ppms.get_active_module()
              
              if not module:
                  # If we don't have a module context just forget about this
                  # Since we don't have a direct python API for calling tcalc and
                  # friends and we need to have a module context to open new modules
                  ppms.ui_message_id("0376")
                  return oldvalue
                  
              else:
                  ppms.ui_message_id('0923')
                  msg = ppms.msg_pop()
              
                  if msg.get_reply() == 1:
                      # Temporarily restore the old value so the tcalc filter will not ignore this project
                      di.set_value(oldvalue)
                      module.set_new_L_var(4, [pr_id])
                      
                      with ppms.echo_disabled():
                          tmod = module.open_module('009BU8')
                          tmod.menu(12)
                          tmod.menu(35)
                          tmod.menu(37)               
                          tmod.menu(49)  
                  else:
                      return oldvalue
                      
          if pr_id == main_pr_id:
              query = ppms.get_query("000271").format(main_pr_id)
              entire_project_structure = ppms.db_select(query)
              
              for sql_pr_id in entire_project_structure:
                  if sql_pr_id[0] != pr_id:
                      current_pr_rec = ppms.search_record(461, [sql_pr_id[0]], [1042], True)
                      current_pr_rec.project_state.set_value(project_state)
                      current_pr_rec.save(("project_state",))
      
          return project_state
      
      processInput.deps = ("DI001052", "DI001044")

Up to S 39.5.12

  • Solution:
    • Open data item 001042 in the Data Items module and insert the following value range:
      def checkInput(di, oldvalue):
          rec = di.get_dtp_record()
      
          #check pr is main pr
          if rec.pr_id.get_value() != rec.main_pr_id.get_value():
              ppms.ui_message_id("0835")
              return False
      
          return di.get_value() in [0, 1, 2, 9]
      
      checkInput.deps = ("DI001052",)
      
      def processInput(di, oldvalue):
          rec = di.get_dtp_record()
          pr_id = rec.pr_id.get_value()
          project_state = di.get_value()
          main_pr_id = rec.main_pr_id.get_value()
      
          # check if project is loaded
          pr_loaded = rec.loaded.get_value()
          
          loaded_rec = ppms.search_record(461, [main_pr_id], [1044], True)
          if loaded_rec:
              main_pr_loaded = loaded_rec.loaded.get_value()
          else:
             main_pr_loaded = 0
      
          if project_state in [0, 2, 9] and pr_loaded == 1 and main_pr_loaded == 1:
              module = ppms.get_active_module()
              
              if not module:
                  # If we don't have a module context just forget about this
                  # Since we don't have a direct python API for calling tcalc and
                  # friends and we need to have a module context to open new modules
                  ppms.ui_message_id("0376")
                  return oldvalue
                  
              else:
                  ppms.ui_message_id('0923')
                  msg = ppms.msg_pop()
              
                  if msg.get_reply() == 1:
                      # Temporarily restore the old value so the tcalc filter will not ignore this project
                      di.set_value(oldvalue)
                      module.set_new_L_var(4, [pr_id])
                      
                      ppms.echo_off()
                      tmod = module.open_module('009BU8')
                      tmod.menu(12)
                      tmod.menu(35)
                      tmod.menu(37)               
                      tmod.menu(49)  
                      ppms.echo_on()
                  else:
                      return oldvalue
                      
          if pr_id == main_pr_id:
              query = ppms.get_query("000271").format(main_pr_id)
              entire_project_structure = ppms.db_select(query)
              
              for sql_pr_id in entire_project_structure:
                  if sql_pr_id[0] != pr_id:
                      current_pr_rec = ppms.search_record(461, [sql_pr_id[0]], [1042], True)
                      current_pr_rec.project_state.set_value(project_state)
                      current_pr_rec.save(("project_state",))
      
          return project_state
      
      processInput.deps = ("DI001052", "DI001044")

Python error message in the Dashboard (resolved in DB 39.5.0)

With particular data constellations, the following Python error messages may occur in the Dashboard module.
Python error in value range DI059707 "current_report_ole_def_effort":computeOutput
<class 'TypeError'>:
argument must be string, not None

Python error in value range DI059708 "current_report_ole_def_costs":computeOutput
<class 'TypeError'>:
argument must be string, not None

  • Reason: incorrectly constructed value range
  • Solution: Replace the following line in the value range of DI 059707 and 059708:
Before:
elif current_value < float(compare_value_2):
After:
elif current_value <= float(compare_value_2):

Unhandled Python exception in macro 009AVG when deleting assignments in the portfolio (resolved in DB 39.5.0)

When deleting a project, proposal, or idea assignment in the Portfolio module, the following error message is displayed: Unhandled Python Exception in macro 009AVG [....] AttributeError: 'Module' has no attribute 'portfolio_id'

  • Solution:
    • Open module 0099FV in the Modules module.
    • Open DA 040996 and copy the following data items to the data area: 023178, 023179, 023278 and 023119.
    • Set Window = 9 and DF options = Checked for all data fields and save.

Python error message in the Indirect Modules module (resolved in S 39.5.14/DB 39.5.0)

In the Indirect Modules module, the Python error in macro 0099CN python error message is displayed when clicking on the link in the MOD field.
  • Reason: Error in the Python macro
  • Solution: Enter 0099CN in the Modules module and click on the Open macro editing button and proceed as follows: replace
    mod_id = module_macro.get_invoker_rec().get_dtp_record().id.get_value()
    by
    if hasattr(module_macro.get_invoker_rec().get_dtp_record(),'id'):
        mod_id = module_macro.get_invoker_rec().get_dtp_record().id.get_value()
    else:
        mod_id = module_macro.get_invoker_rec().get_dtp_record().module_id.get_value()

In the planning module, loads are displayed rounded (resolved in DB 39.5.0)

In DB 39.4.4.0, loads for department resources are displayed rounded in the Resource Planning module.
  • Reason
    • No format has been stored in the respective field.
  • Solution:
    • Open DA050306 in the module customizer.
    • Store format 000065 for DI001423 in the Format ID column.
    • Save.
  • Remark:
    • If the load values are displayed with decimal places and unrounded, the formats of the respective projections must be exchanged.

Missing translations in the Data Dictionary module (resolved in DB 39.5.0)

In DB 39.4.4.0, some translations are missing in the Data Dictionary module.
  • Reason:
    • The translations for the following module names are missing:
      • 0099RW Define Incarnation/Fetch Exit
      • 0099ZS Select Data Area
      • 0099ZV Include Data Items in Data Area
      • 0099ZR Include Data Items in Data Area
    • Furthermore, the following DF heading is missing:
      • for DF 85626 Edit exit in data area 031148
  • Solution:
    • The incorrect heading and module translations must be added manually.

Sorting by project code is incorrect (resolved in DB 39.5.0)

The sorting by project code in the Projects module is not correct.
  • Reason: Customizing: The sequence in the Sort sequence field is set incorrectly.
  • Solution: In the 041023 Dynamic grouping data area, enter the following values in the Sort sequence field:
    • For DT 461: OLAP 1 - txt data field (DI029160) number 3
    • For DT 461: OLAP 1 - Numeric for sort data field (DI057587) number 1
    • For DT 461: OLAP 1 - 029129 data field (DI029133) number 2

When changing the area for evaluation data in the project core data module, no new risk criteria are inserted (resolved in DB 39.5.0)

If another area is selected in the Evaluation criteria area in the Project Core Data, no new risk criteria are inserted.

  • Solution:
    • Create a new dialog message in the Dialog Messages module:
      • Set the output type to "1".
      • Fill the dialog message with the following text: "Evaluation criteria already exist for the current project. Do you want to delete them?"
      • Set the button type to "3".
    • Open DI041680 in the Data Items module and insert the following value range:
      from ppms.module_subclasses import portfolio_module
      from ppms import project_rights
      
      def processInput(di, oldvalue):
          rec = di.get_dtp_record()
          pr_id=rec.pr_id.get_value()
          
          
          vh_851=rec.get_children(851)
          vh_863=rec.get_children(863)
          if len(vh_851)+len(vh_863) > 0:
              ppms.ui_message_id("DIALOGMEDUNGS-ID") # This text must be replaced by the dialog message created above.
              msg = ppms.msg_pop()
              if msg.get_reply() == 1:
                  for rec851 in vh_851: rec851.delete()
                  for rec863 in vh_863: rec863.delete()
                  rec.object_contrib_in.set_value(0)
                  rec.risk_value_in.set_value(0)
                  return di.get_value()
              else:
                  return oldvalue
          else:
              return di.get_value()
      
      processInput.deps = ("DI001001","DI022774","DI022781")

  • Replace the dialog message ID at the marked position in the upper code by the dialog message created above.
  • Change the VR type to "PY" and save.

Error message when submitting status reports (resolved in DB 39.5.0)

  • When submitting a status report, one of the following error messages is displayed:
Python error in macro XYZ ... ORA-00942: Table or view not available ...
Python error in macro XYZ... ORA-06550 ... PLS00103: Found the '''' symbol when one of the following was expected ....
  • The cause of this are insufficient rights to the underlying Materialized Views that have the wrong owner (unlike the schema owner). This occurs primarily when loading the database with the Oracle Import Tool imp.
  • Solution:
    • Connect to the database as SYSDBA (mandatory) using sqlplus or Developer.
    • Verify that the view owner is different from the schema owner (replace <your_database_user> below with the name of the respective DB user):
      SELECT * FROM SNAP_REFTIME$ WHERE SOWNER = '<your_database_user>'; -- or more generic: (SOWNER <> MOWNER)
      SELECT * FROM SNAP$ WHERE SOWNER = '<your_database_user>'; -- or more generic: (SOWNER <> MOWNER)* For correction, run the following three lines :UPDATE SNAP_REFTIME$ SET MOWNER=SOWNER WHERE SOWNER = '<your_database_user>';
      UPDATE SNAP$ SET MOWNER=SOWNER WHERE SOWNER = '<your_database_user>';
      COMMIT;

Error message in the dashboard (resolved in DB 39.5.0)

In the Dashboard, there is the expected string for parameter 'string' but got 'None Type' error message in the milestone chart.
  • Reason: Capacity scheduling did not run or could not be completed due to a cycle in the schedule.
  • Solution: Run capacity scheduling (again).

Black bars in My Activities (resolved in DB 39.5.0)

In the My Tasks module, the alternating shading of the process steps is displayed in black in window 3.

See also: Customizing FAQs

Creation of filters is not possible

Problem: In the Object Filter and Portfolio Analysis, Scoring modules, no data can be created, as no automatic numbers are generated.
  • Reason: In DT817 Filter class, the values 1 (Multi-project info board) and 2 (PPPM info board) are missing.
  • Solution: Create the values 1 and 2 in the Customizer module Master Data Filter Classes.

Loop during capacity scheduling (resolved in 39.4.4.0)

If a resource has a calendar deviating from the BC calendar and the following parameters have been set: Calendar is active=N, Work (in the resource calendar) =Y, Work (in the BC calendar)=N, a loop occurs during capacity scheduling.
  • Reason: Incorrect parameter settings
  • Solution: Set the Calendar is active parameter to Y (activate the checkbox).

Known Issues After Migration

Conversion of VH() to SQL VR in value ranges

  • Some value ranges refer to data tables that no longer exist.
    • For detailed information, see the MIG_LOG migration protocol data table.
  • Some VH() value ranges do not work using the index (DI 000242).
    • Migration routine generates the correct SQL value range

Visual Display

  • Data fields and buttons in 39 are visualized differently than in 3.8.
  • Buttons are visualized according to the Windows display scheme.
    • Hence, there may be overlappings of data fields and buttons in migrated form areas.

Background DIs in headings

In fixed headings, background DIs are visualized.
  • Reason: This is an update command which is a characteristic of I-texts.
  • Solution: The value of (ALT+0160) must be set to the heading DI if the DI equals the background DI and the heading is not filled.
Topic attachments
I Attachment History Size Date Comment
Jpgjpg Listbox.jpg r1 7.4 K 2015-01-14 - 17:54 Systemabsturz beim Klicken in eine leeren Listbox
Zipzip Migrationspakete.zip r1 15.9 K 2018-08-10 - 11:38  
Sqlsql P_CALC_PERIODS.sql r1 11.6 K 2016-04-13 - 00:21  
Txttxt Perioden_korrigieren.py.txt r1 2.5 K 2016-04-13 - 00:18  
Jpgjpg Projektzuordnungloeschen.JPG r1 52.5 K 2015-01-15 - 14:41 Zuordnung in Portfolio löschen
Sqlsql StatementForEventTablesMSSQL.sql r1 2.1 K 2020-05-20 - 10:35  
Sqlsql StatementForEventTablesORACLE.sql r1 1.9 K 2020-05-20 - 10:46  
Zipzip WI25300_PortfolioImages.zip r1 5.5 K 2020-11-26 - 08:16  
Txttxt ZZZ_Icou.py.txt r1 1.8 K 2020-06-30 - 13:52  
Zipzip alternative_migration_directory.zip r1 2698.2 K 2018-08-10 - 11:38  
Txttxt create_report.py.txt r1 28.6 K 2015-01-13 - 16:09 Fehlermeldungen bei der Statusberichtsfreigabe S 39.5.14
Txttxt load_creation.py.txt r1 14.6 K 2018-09-13 - 10:15  
Txttxt modules.py.txt r1 7.6 K 2020-06-30 - 13:47  
Txttxt period.py.txt r1 10.1 K 2018-05-11 - 06:40  
Txttxt project_rights.py.txt r1 30.6 K 2015-01-13 - 16:10 Fehlermeldungen bei der Statusberichtsfreigabe S 39.5.14
Zipzip py.zip r1 224.5 K 2015-10-13 - 17:49 Fehlermeldung bei Import von MSP-Dateien nach Server-Update ab S 39.5.17 (behoben ab DB 39.5.7)
Txttxt start_tcalc.py.txt r1 6.2 K 2016-04-11 - 22:37  
Txttxt update.py.txt r1 13.4 K 2020-06-30 - 13:52  
Txttxt work_flag_fix.py.txt r1 8.7 K 2018-05-11 - 06:41  

         PLANTA project









 
  • Suche in Topic-Namen

  • Suche in Topic-Inhalten
This site is powered by the TWiki collaboration platform Powered by Perl