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.
|
||
- | 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 |
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 |
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 |
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 |
- 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).
- 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:
- Update period records for the affected resources in the required period.
- 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.
- 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.
- Reason:
- The conflict between the Fixing = 1 and Active today’s line =
parameters. In other words: The task is supposed to start today although it is frozen in the past.
- Solution:
- Set the Split parameter =
.
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 marked yellow, i.e. "waiting".
- In this case please run the
FixLoadAutoNumber
andSetObsoletePacketToSucceed
packets manually in this very sequence.
- Workaround: copy the remaining effort to the planned effort after you have entered the remaining load and have calculated the schedule.
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))
- Solution:
- You have to manually set the HIBERNATE_SEQUENCE to the highest status of the data available in the history tables.
- Solution:
- Open the
config/hibernate.cfg.xml
file.- Deactivate the
hibernate.synonyms
parameter.- Save.
- Repeat the database import.
Note:
- Solution:
- Open data area 050314 in the Data Areas module.
- Delete the entry for DI001364 in Filter from.
- Save.
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
.
- 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![]() |
- 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:
- Display the Planned duration field in the Schedule module.
- Enter a 1.
- Allocate the required Remaining duration.
- Carry out a scheduling run.
Details
_apply_project_parameter_heredity
function is opened by create_project_by_type
in create_project.py
.
insert_project_child_records
for copying the stakeholders of a main project to a subproject.
insert_project_child_records
function is overwritten by the import wrappers, this behavior is not affected.
_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.
customer
directory, the code never gets to search there because the function is already found in the local namespace.
- Solution: In order to ensure that all structure levels are updated, you have to unload and subsequently replan all projects in the Replanning (Calculation of All Planning Objects) module.
- 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()
com.google.protobuf.InvalidProtocolBufferException: Protocol message was too large
is displayed.
- Solution: An update to a version S.39.5.22 is recommended.
- Solution: Replace the Roboto font by a common font, e.g. Arial, in the
\Resources\defaultSkingSettings
file in theGlobalFontName:Roboto
line in the Client directory.
- 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;
- 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.
- Reason:
- The problem arises because the event tables (or their contents) which are responsible for the prevention of the deletion of synchronized objects are not updated.
- As a workaround, please execute the following statements:
persistent_db_session
parameter) were not functional.
- Solution: Add the following parameter to the
hibernate.cfg.xml
file:<property name="hibernate.connection.release_mode"> on_close </property>
- 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.
- 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.
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
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():
- 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.
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 theplanta.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
- Please note that the
A_CreateConstraints
migration packet has been run successfully.- Download the
migrationpackets.zip
and unzip it.- Insert the
WI10938_cost_and_budget_migration.py
file in the/
directory./migration/after_db_import/DB_39_5_2 - Insert the
zz_WI17217_unload_and_replan.py
file in the/
directory./migration/after_db_import/DB_39_5_7 - 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
andUnloadAndReplan
migration packets.- Drop the following statement on the database:
alter trigger "PLANTA_ON_UPDATE_DT461" enable
- Solution
- Replace the
load_creation
file in theppms.module_subclasses.load_creation.CostRevenueBookingModule
directory by the following.
- 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,
- create a macro module in the customizer and paste the work_flag_fix.py.txt
macro.
- Run the macro.
- Solution:
- Open the Quality Gates module MOD009CU6 in the customizer.
- Set field 001114 Requested end in data area 057527 to input.
- Save.
archive_dir
parameter (resolved in S 39.5.25) 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) 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:Solution
- The database expects an incorrect version of the statement.
- 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.
- 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:
- Open the Data Dictionary module.
- For DI008708 in DT823 and DI008766 in DT824,
- empty the Data item for adjustment source field,
- set both DIs to virtual =
and WB type = PY,
- copy the following value range to both DIs:
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.
- 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
- Solution: Do not use the column mentioned above. In version DB 39.5.10 it has been removed from the Resource Structure module.
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 from S 39.5.19
Before the CU deployment is carried out, an I-text check must be carried out in the source system via the Check Database Consistency / Check Consistency module.
- 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
- 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)
- 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",)
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
.
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';
- 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}
- Solution: Replace the
safe_mv_switch
function in thebase_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
- Solution:
- Open data area 052067 in the Data Areas module.
- Insert variable @L30 on DI008413.
- Save.
- Solution: In this case, the service (server) must be restarted.
- 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.
- 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.
- Solution:
- Open Customizer -> Databases License, System Parameters, and DB Instances.
- Delete license 000.
- 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.
- Solution:
- Replace the existing
start_tcalc.py
Python file under/py/api/ppms/customizing/venus/ppms
by the following: start_tcalc.py.
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.
- 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.
- Solution:
- Open the Symbols module.
- Create a new symbol with:
- Name = Task with cycle
- Background color ID = 0002663
- Margin color ID = 0002663
- Content ID = 000001
- Symbol type = 0
- Height = 38
- Font height = 21
- Min width = 18
- Margin width = 1
- Margin mask = 16
- Open DI007003 in the Data Items module
- Enter the ID of the newly created symbol for SUBDI 001148 in SUBDI symbol ID.
- Save.
- Reload system customizing.
- 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.
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:
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) ...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.
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.
IE: java.lang.NullPointerException
error message in it.
- Solution:
- Store mutual = on in the client parameters
- Solution:
- Switch back to the module with active search bar.
- Close the search bar.
- Solution:
- Open module 0099CA in the Modules module.
- Open data area 040563 in the Data Areas module.
- Enter the following value for DI001193 Language Code in the Default value parameter:
- Save.
- 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",)
- 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)
- Solution:
- Open DI023284 in the Data Items module.
- Set the VR type = PY.
- Replace the existing entry in the Value range field by the following:
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.
Note
- 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:
Notes
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
- 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: 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 Notes
- Set DI 000022 to window 9 and save.
- 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:
- In order to fix this issue, the
start_tcalc.py
Python file under/py/planta_de/ppms
must be replaced by the following:
Information
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")
Example
Note
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
- 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()
- 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.
- Solution:
- Open module 009A52.
- Open data area 044745.
- Replace DI029191 by DI029197.
- Save.
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
![]()
- Solution: Activate the Fixed heading checkbox in the respective listbox module (and if required, deactivate the Heading checkbox).
- 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')
- 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
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:
000336SELECT DI000215,DI040837 FROM DT412 WHERE di000275=0 and di001700 <> 20 AND di000239='{0}' AND DI040837 is not NULL000312SELECT 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
on_load
wrapper method during status report release S 39.5.14 (resolved in S 39.5.15)
- Reason: Incorrect
create_report.py
andproject_rights.py
Python files.- Solution: Please replace the content of the files by the respective content following below:
- 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.
- Solution:
- Open module 009BK0 in the Modules module.
- Click on the Edit macro button.
- Replace the following lines:
- Before:
After:pr_id = ppms.get_target_module().get_current_L_var()[74][0] mod.set_new_L_var(74, [pr_id])pr_id = ppms.get_target_module().get_current_L_var()[30][0] mod.set_new_L_var(30, [pr_id])- Save.
- 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.
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.
- 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.
- 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
- 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")
- 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 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
Before:
- Reason: incorrectly constructed value range
- Solution: Replace the following line in the value range of DI 059707 and 059708:
After:elif current_value < float(compare_value_2):elif current_value <= float(compare_value_2):
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 =
for all data fields and save.
- 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()byif 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()
- 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.
- 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.
- 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
- 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.
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;
- Reason: Capacity scheduling did not run or could not be completed due to a cycle in the schedule.
- Solution: Run capacity scheduling (again).
- Reason: In DA050823, the Color intensity w 3 DI is filled but the corresponding Altern. color W3 DI is not.
- Solution: In the Data Areas module, switch to the Layout module variant and copy the value from the Altern. color F1 DI to the Altern. Color F3 DI.
See also: Customizing FAQs |
- 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.
- Reason: Incorrect parameter settings
- Solution: Set the Calendar is active parameter to Y (activate the checkbox).
- 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.
I![]() |
Attachment | History | Size | Date | Comment |
---|---|---|---|---|---|
![]() |
Listbox.jpg | r1 | 7.4 K | 2015-01-14 - 17:54 | Systemabsturz beim Klicken in eine leeren Listbox |
![]() |
Projektzuordnungloeschen.JPG | r1 | 52.5 K | 2015-01-15 - 14:41 | Zuordnung in Portfolio löschen |
![]() |
P_CALC_PERIODS.sql | r1 | 11.6 K | 2016-04-13 - 00:21 | |
![]() |
StatementForEventTablesMSSQL.sql | r1 | 2.1 K | 2020-05-20 - 10:35 | |
![]() |
StatementForEventTablesORACLE.sql | r1 | 1.9 K | 2020-05-20 - 10:46 | |
![]() |
Perioden_korrigieren.py.txt | r1 | 2.5 K | 2016-04-13 - 00:18 | |
![]() |
ZZZ_Icou.py.txt | r1 | 1.8 K | 2020-06-30 - 13:52 | |
![]() |
create_report.py.txt | r1 | 28.6 K | 2015-01-13 - 16:09 | Fehlermeldungen bei der Statusberichtsfreigabe S 39.5.14 |
![]() |
load_creation.py.txt | r1 | 14.6 K | 2018-09-13 - 10:15 | |
![]() |
modules.py.txt | r1 | 7.6 K | 2020-06-30 - 13:47 | |
![]() |
period.py.txt | r1 | 10.1 K | 2018-05-11 - 06:40 | |
![]() |
project_rights.py.txt | r1 | 30.6 K | 2015-01-13 - 16:10 | Fehlermeldungen bei der Statusberichtsfreigabe S 39.5.14 |
![]() |
start_tcalc.py.txt | r1 | 6.2 K | 2016-04-11 - 22:37 | |
![]() |
update.py.txt | r1 | 13.4 K | 2020-06-30 - 13:52 | |
![]() |
work_flag_fix.py.txt | r1 | 8.7 K | 2018-05-11 - 06:41 | |
![]() |
Migrationspakete.zip | r1 | 15.9 K | 2018-08-10 - 11:38 | |
![]() |
WI25300_PortfolioImages.zip | r1 | 5.5 K | 2020-11-26 - 08:16 | |
![]() |
alternative_migration_directory.zip | r1 | 2698.2 K | 2018-08-10 - 11:38 | |
![]() |
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) |