summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2004-08-01 22:49:56 (UTC)
committer zautrix <zautrix>2004-08-01 22:49:56 (UTC)
commit3b4aa1cd78395c0f94b99decd901842944765746 (patch) (side-by-side diff)
tree54921c72da527d45bf4b94d9d499f860014dd685
parented3af1a632f953179ef3cad76ab5d99809f47d60 (diff)
downloadkdepimpi-3b4aa1cd78395c0f94b99decd901842944765746.zip
kdepimpi-3b4aa1cd78395c0f94b99decd901842944765746.tar.gz
kdepimpi-3b4aa1cd78395c0f94b99decd901842944765746.tar.bz2
Updated migration howto
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--bin/kdepim/korganizer/Migration-HowTo.txt77
-rw-r--r--libkcal/incidencebase.cpp10
2 files changed, 71 insertions, 16 deletions
diff --git a/bin/kdepim/korganizer/Migration-HowTo.txt b/bin/kdepim/korganizer/Migration-HowTo.txt
index ca767c6..a5fa02c 100644
--- a/bin/kdepim/korganizer/Migration-HowTo.txt
+++ b/bin/kdepim/korganizer/Migration-HowTo.txt
@@ -1,299 +1,350 @@
Migration HowTo Outlook 200X -> KDE
+Version 1.0.1
+The latest version of this file can be downloaded from
+http://sourceforge.net/projects/kdepimpi/
+Please choose there package/project/file:
+general Files for KDE/Pim
+MigrationHowTo_OL2KDE
+MigrationHowTo_OL2KDE.txt
+
+
This HowTo describes the process of migrating data ( contact and calendar data ) from Outlook 200X to the PIM programs of the KDE-Desktop-Environment.
The PIM programs are KAdddressbook and KOrganizer, which may be used embedded in the Kontact PIM management framework.
This HowTo describes version 1.9.3a of the migration tools.
The migration tools are the platform independent versions of KAdddressbook and KOrganizer: KAdddressbook/Pi and KOrganizer/Pi.
Content:
1) How to start
2) How to import pst files in Outlook
3) Where to get the migration tools
4) How to install the migration tools
5) How to get the contact data out of Outlook200X
6) How to get the calendar data out of Outlook200X
+7) How to import your contact data into Kontact
+8) How to import your calendar data into Kontact
APPENDIX A) Problems and solutions when reading contact data
APPENDIX B) Problems and solutions when reading calendar data
****************************************
1) How to start
****************************************
For the migration we need the actual Outlook 200X data, which Outlook stores in *.pst files.
Then we need an installed version of Outlook 200X to access these *.pst files.
When we have an Outllook 200X running with all data accessable, we need the migration tools.
If you have no Outlook200X installed please install the Outlook version, you need to a import your *.pst files.
If you have an Outlook200X installed with no contact/calendar data available, and you have some *.pst files please continue with: 2) How to import pst files in Outlook.
If you have a running Outlook200X already with contact/calendar data available, please continue with: 3) Where to get the migration tools.
****************************************
2) How to import pst files in Outlook
****************************************
-MISSING
+To open a local *.pst file in Outlook2003, choose menu:
+File - Open - Outlook Data File ...
+Now the data included in this file is shown
+as folders of a newly added root folder in the Outlook folder view.
+This root folder is probably not accessable from
+the migration tools via OLE.
+To access data stored in one of the subfolders,
+copy this subfolder to a root folder,
+which can be accessed from the migration tools via OLE.
+(To know, which folder can be accessed, just perform 5.) or 6.) until
+you get the Oulook import dialog!)
+
+To copy it, right click on that subfolder and choose
+Copy "<subfoldername>"...
+in the popup menu.
****************************************
3) Where to get the migration tools
****************************************
The data migration is is performed with the Windows versions of KAdddressbook/Pi and KOrganizer/Pi.
Pi stands for platform-independend - platform-independend because the same program is available for different platforms, like Windows, Linux desktop and Sharp-Zaurus PDA.
-Note: The Linux desktop versions of KOrganizer/Pi and KOrganizer/KDE-desktop are two different programs! You cannot use KOrganizer/Pi together with or embedded in the KDE-desktop environment. The same is valid for KAdddressbook/Pi.
+Note: The Linux desktop versions of KOrganizer/Pi and KOrganizer/KDE-desktop are two different programs! You cannot use KOrganizer/Pi together with, or embedded in, the KDE-desktop environment. The same is valid for KAdddressbook/Pi.
The programs you need for the migration are:
a) KAdddressbook/Pi executeable + 2dlls + icons
b) KOrganizer/Pi executeable + icons
-c) The Qt3 library qt-mt331.dll and the MSVC library msvcr71.dll
-
+c) The Qt3 library qt-mt331.dll and the MSVC library msvcr71.dll and the MSVC library mfc71u.dll
You can download all of them at:
http://sourceforge.net/projects/kdepimpi/
Download of a) and b)
Please choose there package/project with name KDE/Pim
(Direct link: http://sourceforge.net/project/showfiles.php?group_id=104103&package_id=112604 )
Choose there the topmost latest version and the files
kapixxx-exe.zip
kopixxx-exe.zip
The latest version is currently ( 2004-07-13 ) 1.9.3a.
Such that the files to download are
kapi193a-exe.zip
kopi193a-exe.zip
To download b)
-Please choose there package/project with name KO/Pi - general files.
-(Direct link: http://sourceforge.net/project/showfiles.php?group_id=104103&package_id=116719 )
+Please choose there package/project/file:
+general Files for KDE/Pim
+Needed Windows Dlls
+kdepimdll.zip
+
+(Direct link: http://sourceforge.net/project/showfiles.php?group_id=104103&package_id=122438&release_id=256700 )
Choose there the file:
-kopidll.zip
+kdepimdll.zip
Now you have downloaded the files
kapi193a-exe.zip
kopi193a-exe.zip
-kopidll.zip
+kdepimdll.zip
and we can continue to install the files, which is simply unzipping them.
****************************************
4) How to install the migration tools
****************************************
You have downloaded the files
kapi193a-exe.zip
kopi193a-exe.zip
-kopidll.zip
+kdepimdll.zip
Unzip these files.
-The directory "pics" of the kopidll.zip is useless now and can be completely ignored.
Now choose an arbitrary installation directory, where to copy all the needed files together.
You should have now the following files and the directory "kdepim" in the same directory:
kopi.exe
kapi.exe
microkabc_dir.dll
microkabc_file.dll
msvcr71.dll
+mfc71u.dll
qt-mt331.dll
ReadMich.txt
kdepim (directory)
The directory "kdepim" should contain subdirectories
kaddressbook
korganizer
which itself contain some subdirectories with icons and help text.
Now the migration tools are ready for use.
NOTE AND HINT for performing migration on many workstations:
Just burn the content of the installation dir on a CD.
Then you can put the CD in every workstation and execute the migration tools from that CD directly.
*************************************************************
5) How to get the contact data out of Outlook200X
*************************************************************
Note: When accessing Outlook to read the data, it should not be possible, that there is any data lost in Outlook, because the progam accesses Outlook only Read-Only.
You have the file
kapi.exe
and the other needed files accessable on your workstation.
Getting the contact data
Please start kapi.exe.
Choose menu:
File - Import - Import from OL...
You will get a dialog which shows all "Personal Folders" of Outlook.
Choose the Contact Folder(s) you want to import and select them with a hook.
-(All other folder but the contact containing folders are shown, but disabled)
+(All other folder but the contact containing folders are shown, but disabled).
+(If the data you want to import is not stored in one of the shown folders,
+please read step 2.) and click on "close" ).
Click the "import" button.
Now Outlook asks you to allow access to the contact data.
Select "Allow access" amd click "Yes" in this dialog.
Now the importing is performed and KA/Pi will show a progress bar.
After importing, KA/Pi shows a dialog, how much contacts are imported.
If you press a second time "import" , already imported contacts are not imported again.
After importing you can choose another "Contact Folder" to import or close the import dialog.
Please close the import dialog.
Now you see the imported contacts in KA/Pi on the left in the list view.
Please verify, that the import was correct.
About problems of mapping particular Outlook-data-fields to KAdressbook-data-fields see Appendix A).
Choose menu:
File - Save
and close KA/Pi.
Now you should have the contact data in the file std.vcf in your home directory in the path
(YOURHOMEDIR)\kdepim\apps\kabc\std.vcf
Copy that file to a moveable disk or memory stick or just copy it via network to the destination.
Import that file into KAddressbook/Kontact via Import - Import vcard.
+Details about importing you can read at: 7) How to import your contact data into Kontact
Now you have your Outlook200X contact data on the KDE desktop available and you are done with the migration of contacts.
*************************************************************
6) How to get the calendar data out of Outlook200X
*************************************************************
Note: When accessing Outlook to read the data, it should not be possible, that there is any data lost in Outlook, because the progam accesses Outlook only Read-Only.
You have the file
kopi.exe
and the other needed files accessable on your workstation.
Getting the calendar data
NOTE: Before extracting the calendar data, it is recommended to extract the contact data first.
If you extract the contact data first, the identity (UID) of attendees of a meeting can be mapped correctly in the newly created appointments, such that you can access the attendee contact data later directly from KOrganizer.
Please start kopi.exe.
You will see a dialog, that you started KO/Pi for the first time and that the timezone configuration will be shown now. Confirm with "Ok".
Now you will see the configuration dialog of KO/Pi.
Please choose your timezone and adjust the daylight saving settings.
The dialog shows defaults for CET (Central European Time), such that users located in central Europe simply can press "OK" in that dialog.
(Note: Don't forget to set the timezone in KDE KOrganizer before importing data there. The timezone in KDE KOrganizer is set per default to UTC (GMT), that is -1h of CET).
Now you will see the KO/Pi main window.
Choose menu:
File - Import from OL
You will get a dialog which shows all "Personal Folders" of Outlook.
Choose the Calendar Folder(s) you want to import and select them with a hook.
-(All other folder but the calendar data containing folders are shown, but disabled)
+(All other folder but the calendar data containing folders are shown, but disabled).
+(If the data you want to import is not stored in one of the shown folders,
+please read step 2.) and click on "close" ).
Click the "import" button.
Now Outllok asks you to allow access to the contact data.
Select "Allow access" amd click "Yes" in this dialog.
Now the importing is performed and KO/Pi will show a progress bar.
After importing, KO/Pi shows a dialog, how much calendar items are imported.
If you press a second time "import" , already imported calendar items are not imported again.
After importing you can choose another "Calendar Folder" to import or close the import dialog.
Please close the import dialog.
Now you see the imported calendar items in KO/Pi.
Please verify, that the import was correct.
About problems of mapping particular Outlook-data-fields to KOrganizer-data-fields see Appendix B).
Close KO/Pi - data will be saved automatically.
Now you should have the calendar data in the file mycalendar.ics in your home directory in the path
(YOURHOMEDIR)\kdepim\apps\korganizer\mycalendar.ics
Copy that file to a moveable disk or memory stick or just copy it via network to the destination.
-Import that file into KOrganizer/Kontact via Import - Import iCal/ics file.
+Import that file into KOrganizer/Kontact.
+Details about importing your calendar data you can read at: 8) How to import your calendar data into Kontact.
(Warning again: Don't forget to set the timezone in KDE KOrganizer before importing data there. The timezone in KDE KOrganizer is set per default to UTC (GMT), that is -1h of CET).
Now you have your Outlook200X calendar data on the KDE desktop available and you are done with the migration.
Hint:
If you want to use KO/Pi and KA/Pi on your windows desktop, you should read all the help information available in the KO/Pi Help menu. One Highlight of KO/Pi is the easy syncing with another *.ics file.
(Information about syncing available in the KO/Pi help menu).
Another hint:
KO/Pi + KA/Pi ( = KDE-Pim/Pi ) are available for the Sharp Zaurus PDA.
Syncing data works for KO/Pi ( version 1.9.3) but not yet for KA/Pi.
+*************************************************************
+7) How to import your contact data into Kontact
+*************************************************************
+
+
+
+MISSING
+
+
+
+*************************************************************
+8) How to import your calendar data into Kontact
+*************************************************************
+
+
+MISSING
+
*************************************************************
APPENDIX A) Problems and solutions when reading contact data
*************************************************************
All data, which can be displayed and accessed in KAddressbook is imported from Outlook.
In Outlook you can assign an attribute "This is the mailing address" to one of the addresses.
This address shows up in KAddressbook twice.
The first time with the original attribute from Outlook ( e.g. "work" for "business" in OL ).
The second time with the attribute "postal".
All telephone numbers of OL are imported.
OL offers special case telephone numbers, like "Assistant", which have no counterpart in KAdressbook.
In that case, the imported number has special combined attributes in KAddressbook.
Here is the mapping of types in OL to attributes in KA:
OL type Attributes in KA
Assistant Work + Voice
Business Work
Business2 Work
BusinessFax Work + Fax
Car Car
Home Home
Home2 Home
HomeFax Home + Fax
ISDN Isdn
Mobile Cell (displayed as Mobile Phone)
OtherFax Fax
OtherTelephone Voice
Pager Pager
PrimaryTelephone Pref ( displayed as typeless, with attribute preferred )
TTYTDD Modem
Telex Fax + Bbs (Bbs displayed as MailBox - not very senseful, sorry ...)
CompanyMain Work + Pref
Radio Video
Callback Voice + Pref
Some mapping may not be very senseful, but it helps to identify the original OL types.
*************************************************************
APPENDIX B) Problems and solutions when reading calendar data
*************************************************************
Almost all data, which can be displayed and accessed in KOrganizer is imported from Outlook.
Attachments of appointments are not imported.
KOrganizer may crash, when reading some kinds of attachments.
These may be changed in future versions.
Attendee lists of meetings and their state are imported in KOrganizer.
A problem is importing some kinds of recurring events:
First problem:
OL offers a recurrence like
- Yearly recurrence, every second Tuesday of July.
KOrganizer ( in versions < 3.3.0 ) does not offer that kind of recurrence.
Such that
"Yearly recurrence, every second Tuesday of July."
is converted to
"Monthly recurrence, every 12. month, second Tuesday in month, StartMonth = July."
which can be edited in KO.
Second problem:
OL offers an exception in a recurrence with other data/time.
KO offers only an exception in a recurrence , where the exception is deleted from the row of all occurences.
Such that
"Recurring event with exception, that date XX should be at date YY"
in OL is converted to two events in KO:
"Recurring event with exception, that date XX is not included"
"Non-recurring event at date YY with same data like the recurring event (e.g. Summary, location, attendee list, ...)"
diff --git a/libkcal/incidencebase.cpp b/libkcal/incidencebase.cpp
index d7c4595..f1db8b7 100644
--- a/libkcal/incidencebase.cpp
+++ b/libkcal/incidencebase.cpp
@@ -261,210 +261,214 @@ Attendee *IncidenceBase::getAttendee(const char *n) const
while (qli) {
if (qli.current()->getName() == n)
return qli.current();
++qli;
}
return 0L;
}
#endif
Attendee *IncidenceBase::attendeeByMail(const QString &email)
{
QPtrListIterator<Attendee> qli(mAttendees);
qli.toFirst();
while (qli) {
if (qli.current()->email() == email)
return qli.current();
++qli;
}
return 0L;
}
Attendee *IncidenceBase::attendeeByMails(const QStringList &emails, const QString& email)
{
QPtrListIterator<Attendee> qli(mAttendees);
QStringList mails = emails;
if (!email.isEmpty()) {
mails.append(email);
}
qli.toFirst();
while (qli) {
for ( QStringList::Iterator it = mails.begin(); it != mails.end(); ++it ) {
if (qli.current()->email() == *it)
return qli.current();
}
++qli;
}
return 0L;
}
void IncidenceBase::setDuration(int seconds)
{
mDuration = seconds;
setHasDuration(true);
}
int IncidenceBase::duration() const
{
return mDuration;
}
void IncidenceBase::setHasDuration(bool b)
{
mHasDuration = b;
}
bool IncidenceBase::hasDuration() const
{
return mHasDuration;
}
void IncidenceBase::setSyncStatus(int stat)
{
if (mReadOnly) return;
mSyncStatus = stat;
}
int IncidenceBase::syncStatus() const
{
return mSyncStatus;
}
void IncidenceBase::setPilotId( int id )
{
if (mReadOnly) return;
mPilotId = id;
}
int IncidenceBase::pilotId() const
{
return mPilotId;
}
void IncidenceBase::setZaurusId( int id )
{
if (mReadOnly) return;
mZaurusId = id;
}
int IncidenceBase::zaurusId() const
{
return mZaurusId;
}
int IncidenceBase::zaurusUid() const
{
return mZaurusUid;
}
void IncidenceBase::setZaurusUid( int id )
{
if (mReadOnly) return;
mZaurusUid = id;
}
int IncidenceBase::tempSyncStat() const
{
return mTempSyncStat;
}
void IncidenceBase::setTempSyncStat( int id )
{
if (mReadOnly) return;
mTempSyncStat = id;
}
void IncidenceBase::setID( const QString & prof , int id )
{
int num = mExternalId.find( ":"+prof+";" );
if ( num >= 0 ) {
int len = prof.length()+2;
int end = mExternalId.find( ";", num+len );
if ( end > 0 ) {
mExternalId = mExternalId.left( num+len ) +QString::number( id)+mExternalId.mid( end );
} else
qDebug("Error in IncidenceBase::setID ");
} else {
mExternalId += prof+";"+QString::number( id) +";0:";
}
+ qDebug("setID*%s*%d*%s* ", prof.latin1(), id,mExternalId.latin1() );
}
int IncidenceBase::getID( const QString & prof)
{
int ret = -1;
int num = mExternalId.find(":"+ prof+";" );
if ( num >= 0 ) {
int len = prof.length()+2;
int end = mExternalId.find( ";", num+len );
if ( end > 0 ) {
bool ok;
ret = mExternalId.mid ( num + len,end-len-num).toInt( &ok );
if (!ok)
- return -1;
+ ret = -1;
}
}
- return ret;
+ qDebug("getID*%s*%d*%s* ", prof.latin1(), ret,mExternalId.latin1() );
+ return ret;
}
// example :Sharp_DTM;22;23566:TP;-1;8654:TPP;18;0:
// format name;III;JJJ: III >= 0, may be -1. JJJ always >= 0
void IncidenceBase::setCsum( const QString & prof , int id )
{
int num = mExternalId.find( ":"+prof+";");
if ( num >= 0 ) {
int len = prof.length()+2;
num = mExternalId.find( ";", num+len );
int end = mExternalId.find( ":", num+1 );
if ( end > 0 ) {
mExternalId = mExternalId.left( num ) +QString::number(id)+mExternalId.mid( end );
} else
qDebug("Error in IncidenceBase::setCsum ");
} else {
mExternalId += prof+";-1;"+QString::number( id) +":";
}
+ qDebug("setCsum*%s*%d*%s* ", prof.latin1(), id,mExternalId.latin1() );
}
int IncidenceBase::getCsum( const QString & prof)
{
int ret = -1;
int num = mExternalId.find( ":"+prof+";" );
if ( num >= 0 ) {
int len = prof.length()+2;
num = mExternalId.find( ";", num+len );
int end = mExternalId.find( ":", num+1 );
if ( end > 0 ) {
bool ok;
ret = mExternalId.mid ( num ,end-num).toInt( &ok );
if (!ok)
- return -1;
+ ret = -1;
}
}
+ qDebug("getCsum*%s*%d*%s* ", prof.latin1(), ret,mExternalId.latin1() );
return ret;
}
void IncidenceBase::setIDStr( const QString & s )
{
if (mReadOnly) return;
mExternalId = s;
}
QString IncidenceBase::IDStr() const
{
return mExternalId ;
}
void IncidenceBase::registerObserver( IncidenceBase::Observer *observer )
{
if( !mObservers.contains(observer) ) mObservers.append( observer );
}
void IncidenceBase::unRegisterObserver( IncidenceBase::Observer *observer )
{
mObservers.remove( observer );
}
void IncidenceBase::updated()
{
QPtrListIterator<Observer> it(mObservers);
while( it.current() ) {
Observer *o = it.current();
++it;
o->incidenceUpdated( this );
}
}