Jeśli istnieją instancje Oracle Content Management, działające w zastanej infrastrukturze chmurowej przy subskrypcji niemierzonej, Oracle zaleca migrację tych instancji do nowego natywnego środowiska OCI (Oracle Cloud Infrastructure) drugiej generacji, dla którego jest używana konsola Infrastructure do zarządzania instancjami usługi. Pozwoli to w przyszłości odnosić jeszcze więcej korzyści z platformy chmurowej Oracle.
Aby można było zainicjować migrację, należy przed rozpoczęciem migracji wykonać kilka etapów, a także współpracować z Asystą Techniczną Oracle, która zaplanuje migrację.
W tej tabeli opisano odwzorowywania grup uprawnień Oracle Content Management na role poziomu aplikacji OCI.
Grupa uprawnień Oracle Content Management | Rola poziomu aplikacji OCI |
---|---|
DocumentsServiceUser | CECStandardUser |
DocumentsServiceAdmin | CECServiceAdministrator |
SitesServiceVisitor | CECSitesVisitor |
SitesServiceAdmin | CECSitesAdministrator |
ContentAdministratorRole | CECContentAdministrator |
CECSStandardUser | CECStandardUser |
CECSEnterpriseUser | CECEnterpriseUser |
Uwaga:
Jeśli w docelowej domenie IDCS już istnieje użytkownik o tej samej nazwie, to zostaną mu przypisane role poziomu aplikacji OCI odpowiadające grupom uprawnień użytkownika Oracle Content Management.Gdy wszystko będzie gotowe do migracji, trzeba — aby uruchomić proces — przesłać zlecenie migracji:
Gdy Asysta Techniczna Oracle otrzyma zlecenie SR migracji, zaplanujemy migrację na podstawie żądanej daty; zlecenie SR zostanie wówczas zaktualizowane o datę i godzinę rozpoczęcia migracji.
W zleceniu SR będą aktualizowane informacje o postępie przeprowadzanej migracji. Migracja danych będzie przeprowadzana w tle. Ze strony użytkownika nie są wymagane żadne czynności poza śledzeniem aktualizacji zlecenia SR i weryfikacją poprawności migracji po jej zakończeniu.
Poniżej opisano, co się dzieje podczas migracji:
Ważne:
Na tym etapie nie można dokonywać żadnych zmian w starej instancji (źródłowej). Wszelkie zmiany wprowadzane po rozpoczęciu migracji nie zostaną przeniesione do nowej instancji.Uwaga:
Stara instancja pozostanie aktywna, tak że można się do niej odwołać w celu weryfikacji. Instancja ta będzie także potrzebna do przeprowadzenia migracji serwisów używających zasobów oraz do przeprowadzenia migracji wszelkich innych zasobów, które zostały wykluczone w trakcie procesu migracji.Jeśli stara instancja była zintegrowana lub komunikowała się z innymi usługami bądź aplikacjami (bezpośrednio lub poprzez wywołania REST API), może wystąpić konieczność wykonania pewnych zadań po migracji.
Następujące elementy są stosowane na poziomie usługi:
Stare adresy URL mają postać zgodną z następującym wzorcem:
https://<nazwa_usługi>-<nazwa_konta>.<region>.oraclecloud.com/documents
Nowe adresy URL mają postać zgodną z następującym wzorcem:
https://<nazwa_usługi>-<nazwa_konta>.<typ_usługi>.ocp.oraclecloud.com/documents
Integracja | Zadania do zrobienia po migracji |
---|---|
Oracle Integration |
|
Oracle Commerce Cloud |
|
Oracle Process Cloud Service |
|
Oracle Eloqua Cloud Service |
|
Oracle Intelligent Advisor |
|
Oracle Cobrowse Cloud Service |
|
Responsys |
|
VBCS (Visual Builder Cloud Service) |
|
CDN/Akamai |
|
Wywołania REST API |
|
Składnia wywołania klienta SDK/CLI |
|
Łączniki |
|
Uwaga:
Wszelkie zakładki do zawartości w starej instancji nie będą już działać, ponieważ adres URL nowej instancji uległ zmianie.Serwisy, które nie zawierają zasobów, zostaną automatycznie poddane migracji. Natomiast serwisy, które zawierają zasoby, wymagają wykonania kilku dodatkowych czynności zapewniających poprawne działanie tych serwisów w nowej instancji Oracle Content Management.
"cec migrate-site" jest nowym poleceniem, a zatem trzeba zainstalować zestaw OCE Toolkit z repozytorium Git klienta internetowego, nawet jeśli zestaw ten został wcześniej pobrany i zainstalowany.
Aby pobrać, a następnie zainstalować OCE Toolkit, należy postępować zgodnie z instrukcjami zawartymi na stronie "Sites Toolkit".
Należy zarejestrować szczegóły połączenia z serwerem docelowym (serwerem, do którego są kierowane zasoby poddane migracji):
> cec register-server <target_server_name> -e http://<target_server>:<target_port> -u <target_username> -p <target_password> -t pod_ec
Aby przeprowadzić migrację serwisów, należy wykonać poniższe etapy:
<nazwa_serwisu>
nazwą serwisu, który ma się znaleźć na serwerze docelowym:
> cec migrate-site <site_name> --template <template_path_and_name> --destination <registered_target_server_name> --repository <repository_name>
Serwis po migracji będzie działał z użyciem wywołań Content REST w wersji 1.1. Może to stwarzać pewne problemy, które trzeba rozwiązać, aby zapewnić poprawne działanie serwisu. Trzeba się przyjrzeć następującym kwestiom:
Mając poprawnie działający serwis, należy uczynić go serwisem wielojęzycznym (MLS — Multi-Lingual Site). Jeśli serwis firmowy został utworzony na zewnętrznym serwerze obliczeniowym, to wymagał języka domyślnego i założenia systemowego dotyczącego lokalizacji. Skopiowany serwis nie jest serwisem MLS, a zatem — aby zapewnić obsługę przyszłych funkcji — trzeba go uaktualnić do serwisu MLS.
W poniższej tabeli są pokazane różnice między serwisem MLS a serwisem nie-MLS.
Obiekt serwisu | Serwis MLS | Serwis nie-MLS |
---|---|---|
Elementy zawartości | Jest wyświetlany wariant językowy elementu zawartości, a nie element zawartości umieszczony na stronie. Język może ulec zmianie w zależności od tego, jaki język został zlecony podczas renderowania serwisu. | Zawsze będzie wyświetlany ten element zawartości, który został umieszczony na stronie. |
Układy zawartości | Układy zawartości muszą obsługiwać API w wersji 1.1. Jeśli w układach zawartości nie będzie mógł się pojawić element zawartości, zostanie wyświetlone ostrzeżenie. Będzie to spowodowane tym, że wszystkie wywołania API w wersji 1.1 będą miały dodaną właściwość "locale", która nie jest obsługiwana w API w wersji 1.0. | Układy zawartości mogą być w wersji 1.0 lub 1.1. Jeśli układ zawartości obsługuje tylko wersję 1.0, Content SDK doda w odpowiedzi wpis "data" zgodny z polem "fields". Mogą także wystąpić inne problemy i dlatego nie należy tego traktować za obsługiwaną funkcję, usprawiedliwiającą nieuaktualnianie układu zawartości. |
Listy zawartości | Są wyświetlane tylko elementy zawartości dostępne w żądanym wariancie językowym. | Są wyświetlane wszystkie elementy zawartości bez względu na język. Użytkownik ma dostępną opcję pozwalającą przypiąć wyniki do określonego języka, wskutek czego na stronie pojawią się dwie listy zawartości pokazujące wyniki w różnych językach. Ta opcja (z panelu ustawień) wyboru języka nie jest dostępna dla serwisów MLS. |
Domyślne ustawienie narodowe (defaultLocale) | Serwisy MLS mają domyślne ustawienie narodowe. Znaczy to, że dla wszystkich zapytań dotyczących zawartości są zwracane tylko elementy zawartości zgodne z tym ustawieniem narodowym lub nietłumaczalne. | W serwisie nie-MLS nie ma domyślnego ustawienia narodowego i dlatego dla zapytań dotyczących zawartości są zwracane wszystkie elementy zawartości bez względu na język. |
Założenie systemowe dot. lokalizacji |
Definiuje listę języków dostępnych dla serwisu. W konstruktorze pojawi się rozwijana lista z ich wykazem. Ponadto w UI zarządzania będzie dostępna rozwijana lista języków umożliwiająca otwieranie/podgląd w żądanym języku. |
Ponieważ nie ma założenia systemowego dot. lokalizacji, z konstruktora jest usuwana rozwijana lista umożliwiająca zmianę języka. W UI zarządzania nie jest wymieniony żaden język, w tym język domyślny. W ten sposób można w UI zarządzania odróżniać serwisy nie-MLS od serwisów MLS. |
Tłumaczenie/Możliwe do przetłumaczenia | W menu podręcznym w UI jest dostępna opcja "Tłumaczenie". Umożliwia ona utworzenie zlecenia tłumaczenia serwisu. |
W menu podręcznym w UI zarządzania jest dostępna opcja "Możliwe do przetłumaczenia". Praktycznie serwisu nie-MLS nie można przetłumaczyć, a zatem — aby można było go przetłumaczyć — trzeba uczynić go serwisem MLS. W ten sposób uaktualnia się serwis nie-MLS do serwisu MLS. Uwaga: Jest to operacja jednokierunkowa. Nie można później przekształcić serwisu w serwis nie-MLS. |
Przed przystąpieniem do przekształcania serwisu w serwis MLS, należy:
Mając kod składnika niestandardowego, zawierający wywołania Content REST, trzeba je także uaktualnić do wywołań w wersji 1.1. Na ogół jednak większość wywołań zawartości jest dokonywana z układów zawartości.
Uaktualnianie układów zawartości
Określenie obsługiwanych wersji Content REST API
Układy zawartości muszą określać, którą wersję Content REST API obsługują. Dzięki temu uzyskuje się pewność, że wykonywane jest odpowiednie wywołanie Content REST w celu uzyskania oczekiwanych danych w układzie.
Jeśli obsługiwana wersja nie będzie podana, zostanie przyjęte założenie, że układ zawartości obsługuje tylko wersję 1.0.
W konsoli będą wyszczególnione układy zawartości oparte na wersji 1.0.
Aby umożliwić układom zawartości obsługę innych wersji, należy dodać do obiektu układu zawartości właściwość "contentVersion".
W tym przykładzie układ zawartości informuje, że obsługuje wszystkie wersję zawarte między 1.0 a 2.0 (uwaga: wersja 2.0 nie istnieje, lecz wraz ze zmianą numeru głównego wersji mogą zostać wprowadzone znaczące zmiany).
// Content Layout definition.ContentLayout.prototype = { // Specify the versions of the Content REST API that are supported by the this Content Layout. // The value for contentVersion follows Semantic Versioning syntax. // This allows applications that use the content layout to pass the data through in the expected format. contentVersion: ">=1.0.0 <2.0.0", // Main rendering function: // - Updates the data to handle any required additional requests and support both v1.0 and v1.1 Content REST APIs // - Expand the Mustache template with the updated data // - Appends the expanded template HTML to the parentObj DOM element render: function (parentObj) {
Obsługa zmian w odpowiedzi w wersji 1.1
Aby zapewnić obsługę zmian w odpowiedzi Content REST API w wersji 1.1, należy — jako minimum — zmienić "data" na "fields". Najłatwiej jest to zrobić, dodając ponownie właściwość "data" i odwzorować ją na właściwość "fields".
render: function (parentObj) { ... if(!content.data) { content.data = content.fields; }
Lepszym sposobem jest wprowadzenie zmiany polegającej na używaniu wartości "fields" (z wersji 1.1) we wszystkich układach zawartości. Wymagać to będzie aktualizacji kodu JavaScript i kodu szablonu.
W celu zapewnienia pełnej obsługi wersji 1.1 trzeba uwzględnić następujące różnice między Content REST API w wersji 1.0 i w wersji 1.1:
Content REST API — zmiana | v1.1 | v1.0 |
---|---|---|
"fields" vs. "data" |
"items": [{ "type": "Starter-Blog-Author", "name": "Alex Read", "id": "COREB62DBAB5CEDA4915A9C9F6050E554F63", "fields": { "starter-blog-author_bio": "Alex's bio", "starter-blog-author_name": "Alex Read" } }, |
"items": [{ "type": "Starter-Blog-Author", "name": "Alex Read", "id": "COREB62DBAB5CEDA4915A9C9F6050E554F63", "data": { "starter-blog-author_bio": "Alex's bio", "starter-blog-author_name": "Alex Read" } }, |
nazwy właściwości w notacji camelCase | "updatedDate" | "updateddate" |
format zapytania | /items?q=(type eq "Starter-Blog-Author") | /items?fields.type.equals="Starter-Blog-Author" |
wersja API | /content/management/api/v1.1/items | /content/management/api/v1/items |
zapytania w określonym języku | /content/management/api/v1.1/items?q=((type eq "Promo") and (language eq "en-US" or translatable eq "false")) |
Nieobsługiwane. Trzeba dokonać migracji wszystkich wywołań w wersji 1, aby zawierały opcję "language". Dzięki temu uzyskuje się pewność, że wyniki będą spójne z uzyskiwanymi dla serwisu MLS, wyświetlanego w określonym języku. |
Uaktualnienie napisu-zapytania dla zawartości
Jeśli wywołania Content API są używane w kodzie niestandardowym, to trzeba sprawdzić całość kodu używanego przez serwis i upewnić się, że są to wywołania Content REST API.
Przekształcanie serwisu nie-MLS w serwis MLS
Po uaktualnieniu serwisu, tak aby w pełni obsługiwał Content REST API w wersji 1.1, można dodać obsługę języków, zmieniając go w serwis MLS.
Jeśli serwis zostanie wybrany w UI zarządzania serwisami, to w menu podręcznym będzie widoczna opcja "Możliwe do przetłumaczenia" (Translatable). Gdy opcja ta zostanie wybrana, pojawi się okno dialogowe z prośbą o wybranie założenia systemowego dot. lokalizacji oraz języka domyślnego z listy wymaganych języków, zawartej w założeniu systemowym dot. lokalizacji. Jeśli nie istnieje żadne założenie systemowe dot. lokalizacji, nie będzie można ukończyć tego etapu — w takiej sytuacji trzeba najpierw przejść na stronę administrowania zawartością i utworzyć założenie systemowe dot. lokalizacji, zawierające przynajmniej jeden wymagany język.
Gdy etap ten zostanie ukończony, serwis będzie renderowany w języku domyślnym. Będzie także możliwe przełączanie się do innych ustawień narodowych, określonych w założeniu systemowym dot. lokalizacji.
Trzeba samodzielnie sprawdzić, czy serwis jest renderowany — zgodnie z oczekiwaniami — z użyciem domyślnych ustawień narodowych.
Zasoby powiązane z serwisami zostaną poddane migracji podczas migracji serwisów, lecz zasoby, które nie są powiązane z serwisami, trzeba przenieść osobno.
Przed rozpoczęciem migracji należy pamiętać, że:
Aby przeprowadzić migrację zasobów, należy wykonać poniższe etapy:
Można zarejestrować szczegóły połączenia dla serwerów źródłowych i docelowych.
Rejestrowanie serwera źródłowego (serwera, z którego pochodzą zasoby poddane migracji):
> cec register-server <source_server_name> -e http://<source_server>:<source_port> -u <source_username> -p <source_password> -t pod_ic
Rejestrowanie serwera docelowego (serwera, do którego są kierowane zasoby poddane migracji):
> cec-install % cec register-server <target_server_name> -e http://<source_server>:<source_port> -u <target_username> -p <target_password> -t pod_ec
Migracja kolekcji zasobów odbywa się poprzez uruchomienie następującego polecenia:
> cec migrate-content <source_collection_name> --server <source_server_name> --destination <target_server_name> --repository <target_repository_name> --collection <target_collection_name> --channel <target_channel_name>
Zasoby zostaną utworzone na serwerze docelowym w określonym repozytorium oraz będą powiązane z kolekcją i kanałem. Jeśli będzie to potrzebne, kolekcja i kanał zostaną automatycznie utworzone. Domyślnym językiem wszystkich zasobów poddanych migracji będzie język domyślny, który został ustawiony w określonym repozytorium.