Nếu dự án chọn J2Store làm Nền tảng đích, công tác chuẩn bị phải tính đến việc Products được xây trên Joomla Articles và có thể được mở rộng bằng nhiều loại Products cùng applications. Một bản ghi Products có thể phụ thuộc vào nội dung Joomla, Joomla Categories, menus, modules, user groups, options, variants, downloads, Products dạng bundle, application booking hoặc subscription, payment/shipping plugins, template overrides và custom tables.
Một bộ tài liệu chuẩn bị đủ tốt phải làm rõ từng yếu tố phụ thuộc trước khi di chuyển dữ liệu bắt đầu. Với mỗi nhóm quan trọng, cần xác định hành động phải thực hiện, người phụ trách, thông tin dùng để xác nhận và điều kiện được xem là sẵn sàng; đồng thời phải tách dữ liệu thương mại lịch sử khỏi cấu hình live ở Nền tảng đích. Vì nhiều cửa hàng J2Store đã vận hành lâu năm hoặc được mở rộng đáng kể, bộ tài liệu cũng phải ghi rõ ai chịu trách nhiệm cho bảo trì, khôi phục và quyết định về khả năng tương thích của Nền tảng nguồn.
Xác nhận quyền truy cập nguồn, khả năng khôi phục và trách nhiệm vòng đời
Bắt đầu bằng cách xác nhận quyền truy cập Joomla Administrator và J2Store đang hoạt động, quyền hosting/database, quyền truy cập filesystem và media, cùng quyền cần thiết với scheduled jobs hoặc dịch vụ bên ngoài. Ghi lại phiên bản Joomla, J2Store, PHP, database, template và extensions.
| Hạng mục cần chuẩn bị | Người phụ trách | Thông tin dùng để xác nhận | Điều kiện sẵn sàng |
|---|---|---|---|
| Xác nhận quyền quản trị | Quản trị viên Joomla/J2Store | Tài khoản hoạt động và tóm tắt vai trò | Có thể kiểm tra Products, Customers, Orders, applications và cấu trúc Joomla. |
| Tạo backup có thể khôi phục | Đơn vị phụ trách hạ tầng | Database export, filesystem archive, ghi chú media và quy trình restore | Có thể khôi phục nguồn độc lập với Store đang hoạt động. |
| Ghi nhận môi trường đang cài đặt | Đơn vị phụ trách kỹ thuật | Danh sách phiên bản Joomla, J2Store, PHP, database, template, plugins, modules và applications | Toàn bộ source stack thực tế đã được ghi nhận, gồm cả component lỗi thời hoặc tùy chỉnh. |
| Xác định trách nhiệm vòng đời | Chủ sở hữu kinh doanh và kỹ thuật | Người phụ trách hosting, security, compatibility, thay thế extension và recovery | Phạm vi công việc chuyển đổi không bị dùng thay cho trách nhiệm duy trì môi trường nguồn hoặc đích. |
| Giữ identifiers | Điều phối viên di chuyển dữ liệu | Article, Products, Categories, option, variant, Customers, user, Orders, application và external IDs | Có thể truy vết liên kết giữa các bản ghi sau khi trích xuất. |
Nếu Store không còn được duy trì chủ động, cần ghi rõ thực tế đó. Không nên dọn dữ liệu, nâng cấp hoặc gỡ extension trước khi hoàn tất backup bất biến và thu thập thông tin schema, vì một table hoặc plugin trông như không còn sử dụng vẫn có thể sở hữu lịch sử đơn hàng hoặc Products.
Chuẩn bị Products dựa trên bài viết và các loại Products
J2Store dùng Joomla Articles làm Products. Vì vậy, công tác chuẩn bị phải giữ cả danh tính Joomla Article lẫn bản ghi thương mại J2Store. Tùy cài đặt, các loại Products có thể gồm Simple, Variable, Configurable, Downloadable, Flexivariable, Advanced Variable, Booking, Subscription, Grouped, Bundle hoặc cấu trúc do application định nghĩa.
| Loại Products | Thông tin dùng để xác nhận | Điều kiện sẵn sàng |
|---|---|---|
| Products dạng Simple | Article/Products IDs, SKU, giá, tồn kho, tax profile, trọng lượng, hình ảnh, liên kết Categories và Orders mẫu | Danh tính nội dung và danh tính thương mại cùng trỏ đến đúng mặt hàng có thể bán. |
| Products dạng Variable | Options, các tổ hợp đã tạo, SKU/giá/tồn kho/trọng lượng/hình ảnh/trạng thái theo từng tổ hợp | Mỗi tổ hợp có thể bán đều có thể truy vết và có dữ liệu đầy đủ. |
| Products dạng Flexivariable hoặc Advanced Variable | Combination records, trạng thái publish, dữ liệu nhập không phải variant và các trường tùy chỉnh | Variants được tách rõ khỏi dữ liệu do Customers nhập. |
| Products dạng Downloadable | File records, giới hạn tải, thời hạn, route khu vực Customers và Orders đã hoàn tất đại diện | Quan hệ Products-to-file và Orders-to-access đã được ghi nhận. |
| Products dạng Grouped hoặc Bundle | Parent, components, quantities, quy tắc pricing/discount, owner của tồn kho và Orders mẫu | Cấu trúc thành phần và quan hệ tồn kho đã rõ. |
| Products dạng Booking hoặc Subscription | Resource/plan, lịch, trạng thái, phụ thuộc thanh toán, hành vi Joomla group và dữ liệu lịch sử | Trách nhiệm của application chuyên biệt đã được xác định. |
Với mỗi dòng sản phẩm, cần phân loại điều gì thay đổi khi người mua chọn option: SKU, tồn kho, giá, trọng lượng, shipping, tax, quyền tải tệp, khả năng booking, lịch subscription hay dữ liệu nhập từ Customers. Kết quả này quyết định giá trị thuộc một variant thực, option của Products, dữ liệu nhập theo chi tiết mặt hàng trong Orders hay application record.
Chuẩn bị options, variants, hình ảnh và dữ liệu do Customers nhập
Cấu trúc options của J2Store có thể tạo ra kết quả khác nhau tùy loại Products và applications đã cài. Products dạng Variable có thể sinh ma trận tổ hợp với SKU, giá và tồn kho độc lập. Products dạng Advanced Variable có thể kết hợp dimensions tạo variant với dữ liệu nhập tự do. Products dạng Grouped có thể không chấp nhận những Products đã có options.
| Hạng mục cần chuẩn bị | Thông tin dùng để xác nhận | Điều kiện sẵn sàng |
|---|---|---|
| Định nghĩa options | Tên, type, values, thứ tự, Products assignments và ảnh hưởng đến giá | Đã hiểu rõ options nào tương đương và options nào có ý nghĩa riêng. |
| Tổ hợp variants | Parent Products, tổ hợp giá trị, SKU, giá, tồn kho, hình ảnh, trạng thái và external key | Mỗi child có thể bán có danh tính ổn định. |
| Văn bản hoặc tệp do Customers nhập | Định nghĩa input và giá trị mẫu trong chi tiết mặt hàng của Orders | Dữ liệu chỉ thuộc một lần mua không bị nhầm thành Products metadata có thể tái sử dụng. |
| Hình ảnh Products và variants | Main, thumbnail, additional và file riêng theo tổ hợp | Media được gắn đúng Products hoặc variant. |
| Tổ hợp đã ngừng dùng | Trạng thái, việc được tham chiếu trong lịch sử đơn hàng và quyết định ngừng sử dụng | Các tham chiếu lịch sử vẫn được giữ ngay cả khi tổ hợp live bị loại. |
Không tái tạo ma trận variants trước khi ghi lại toàn bộ tổ hợp gốc và IDs tương ứng. Việc tạo lại có thể làm đổi danh tính hoặc mất dữ liệu đang gắn với các tổ hợp hiện hữu. Nếu cần dọn dữ liệu, phải giữ một bảng đối chiếu từ nguồn sang phiên bản đã làm sạch.
Chuẩn bị Joomla Categories, menus, modules và URL
Vì Products của J2Store là Joomla Articles, khả năng khách hàng tìm và truy cập Products phụ thuộc vào Joomla Categories, thứ tự Articles, menu items, modules, access levels, languages, template views và application routes. Cần chuẩn bị các quan hệ này cho Products và trang storefront có giá trị cao.
| Quan hệ phục vụ khám phá và truy cập | Thông tin dùng để xác nhận | Điều kiện sẵn sàng |
|---|---|---|
| Products Article với Categories | Article/Products IDs và cây Categories | Vị trí Products trong cấu trúc phân loại là có chủ đích và có thể truy vết. |
| Thứ tự Categories và Articles | Giá trị ordering ở nguồn và quy tắc hiển thị menu | Thứ tự merchandising quan trọng đã được ghi nhận ở những nơi cần thiết. |
| Menu item với Store view | Menu type, alias, parent, language, access level và destination | Đã biết route cho Products, Categories, cart, checkout, profile, download và account. |
| Module assignment | Position, menu assignment, language và owner | Storefront modules được phân loại là content, presentation hay application output. |
| URL và redirect | Current path, object owner, mục đích đích và routing extension | Mỗi đường dẫn ưu tiên có một destination dự kiến. |
| Quan hệ đa ngôn ngữ | Language assignments và Joomla associations | Có thể truy vết Products cùng navigation tương ứng giữa các ngôn ngữ. |
Một bản export Products không tái tạo Joomla menus hoặc modules. Cần chuẩn bị đủ thông tin về nội dung và routes để phân biệt dữ liệu cần di chuyển với công việc triển khai template và navigation ở Nền tảng đích.
Chuẩn bị Customers, Joomla users, groups và địa chỉ
Customers của J2Store có thể liên kết với Joomla users, Orders của guest, địa chỉ, Joomla groups, profiles do application quản lý, các trường thuế, dữ liệu doanh nghiệp và external identifiers. Các quan hệ này cần được chuẩn bị riêng.
| Mô hình tài khoản | Thông tin dùng để xác nhận | Điều kiện sẵn sàng |
|---|---|---|
| Customers đã đăng ký | Joomla user ID, Customers profile, email, groups, addresses, status và Orders | Email trùng và tài khoản thuộc nhiều group đã có phương án xử lý. |
| Guest | Danh tính và địa chỉ ở cấp Orders | Lịch sử giao dịch của guest vẫn có thể hiểu mà không tạo tài khoản không có thật. |
| Thương mại dựa trên group | Joomla group, liên kết Products, trạng thái Orders kích hoạt, ảnh hưởng đến pricing/access và application owner | Group assignment được biểu diễn như một quan hệ kinh doanh, không phải nhãn rời. |
| Tài khoản doanh nghiệp hoặc thuế | các trường thông tin doanh nghiệp, tax ID, exemption status và external account ID | Danh tính doanh nghiệp có owner rõ. |
| Phụ thuộc xác thực | Nguồn password, SSO/social login, MFA, reset flow và communication owner | Quyền truy cập tài khoản được lập kế hoạch mà không giả định credentials nguồn có thể chuyển nguyên trạng. |
Khi application thêm user vào Joomla group sau khi mua hàng, cần ghi lại Products, group được chọn, trạng thái Orders kích hoạt, membership hiện tại và lịch sử mẫu. Workflow đó có thể kiểm soát quyền truy cập nội dung hoặc dịch vụ sau giao dịch.
Chuẩn bị Orders và dữ liệu thương mại lịch sử để đối chiếu
Cần chuẩn bị Orders headers, chi tiết mặt hàng, tham chiếu Products/variants, options đã chọn, dữ liệu Customers nhập, địa chỉ billing/shipping, giá, discounts, taxes, nhãn payment/shipping, statuses, comments, tracking, invoices, downloads, subscriptions, bookings, vouchers và application records nếu có.
| Dữ liệu lịch sử | Thông tin dùng để xác nhận | Điều kiện sẵn sàng |
|---|---|---|
| Lịch sử trạng thái Orders | Định nghĩa statuses, timestamps, comments và ý nghĩa vận hành | Mỗi status có thể được diễn giải mà không cần dựa vào giao diện cũ. |
| Chi tiết Products trong Orders | Article/Products/variant IDs, SKU, giá trị đã chọn, quantity, price và tax | Mặt hàng đã mua vẫn nhận diện được ngay cả khi catalog live thay đổi. |
| Ngữ cảnh thanh toán | Nhãn phương thức và transaction reference | Có đủ thông tin lịch sử về thanh toán mà không chuyển credentials. |
| Ngữ cảnh vận chuyển | Nhãn phương thức, phí, tracking và fulfillment notes | Thông tin giao hàng lịch sử được tách khỏi cấu hình carrier hiện tại. |
| Quyền tải xuống | tệp của Products, Orders status, limit, expiry và liên kết Customers | Có thể truy vết lịch sử quyền truy cập nội dung kỹ thuật số. |
| Lịch sử do app sở hữu | Subscription, booking, bundle, group assignment, voucher hoặc loyalty records | Dữ liệu application liên quan được nối đúng Orders và Customers. |
Xây dựng glossary cho trạng thái Orders, payment, shipping, download, subscription và booking. Những từ giống nhau như New, Confirmed, Pending, Failed hoặc Completed có thể mang ý nghĩa vận hành khác nhau tùy extension.
Kiểm kê applications, plugins, các trường tùy chỉnh và custom tables
J2Store applications có thể sở hữu grouped Products, bundles, additional fees, bulk discounts, hành động liên quan nhóm khách hàng, bookings, subscriptions, downloads, shipping, payment, analytics và dữ liệu khác. Joomla plugins, template overrides và custom tables có thể mở rộng cùng các đối tượng dữ liệu.
Với mỗi yếu tố phụ thuộc quan trọng, cần ghi nhận:
- tên và phiên bản;
- mục đích kinh doanh;
- tables và các trường;
- keys liên kết Products, Customers, user và Orders;
- scheduled tasks hoặc event triggers;
- dịch vụ bên ngoài và identifiers;
- owner ở đích hoặc quyết định ngừng sử dụng;
- bản ghi nguồn đại diện.
Không mô tả yêu cầu đơn giản là “app data”. Cần gọi đúng loại bản ghi: subscription, booking, bundle component, fee, group assignment, download entitlement, trường tùy chỉnh trong checkout, listing hoặc trạng thái kết nối với hệ thống khác. Chỉ khi loại bản ghi được xác định rõ mới có thể chọn đúng cấu trúc đích.
Tách dữ liệu lịch sử khỏi cấu hình live ở Nền tảng đích
Nhãn và số tiền lịch sử có thể được di chuyển để phục vụ đối chiếu, nhưng tax, payment, shipping, email, cron, template, security và extension behavior đang hoạt động phải được triển khai riêng ở Nền tảng đích.
| Dữ liệu nguồn dùng để đối chiếu | Trách nhiệm riêng ở Nền tảng đích |
|---|---|
| Nhãn payment method và transaction ID | Gateway account, credentials, callbacks, fraud controls và active testing |
| Shipping method, phí và tracking | Carrier account, zones, rates, pickup, packaging và fulfillment setup |
| Tax amount lịch sử và nhãn tax profile | Tax registrations hiện tại, rates, exemptions và calculation rules |
| Quan hệ Products với nhóm Customers | Quy tắc access, pricing hoặc membership automation hiện tại |
| Lịch sử download | File protection, khu vực Customers, email delivery và access policy hiện tại |
| Lịch sử subscription hoặc booking | Gateway support, scheduled jobs, capacity rules, notifications và renewal rules hiện tại |
| URL Store hiện hữu | Target menus, aliases, template output, redirects và search implementation |
Bộ tài liệu chuẩn bị chỉ được xem là hoàn chỉnh khi dữ liệu nguồn dùng để đối chiếu và trách nhiệm triển khai ở đích đều rõ. Không được dùng dữ liệu lịch sử để kết luận rằng cấu hình vận hành tương lai đã tồn tại.
Chọn mẫu đại diện để kiểm thử di chuyển dữ liệu
Nên chọn mẫu khó và giàu quan hệ thay vì chỉ chọn Products đơn giản, sạch dữ liệu. Bộ mẫu cần bao gồm:
- một bản ghi Products dạng Simple gắn với Joomla Article và Categories;
- một bản ghi Products dạng Variable hoặc Flexivariable có dữ liệu tổ hợp độc lập;
- một bản ghi Products dạng Advanced Variable có dữ liệu Customers nhập nếu cửa hàng sử dụng;
- một bản ghi Products dạng Downloadable có lịch sử quyền truy cập;
- một bản ghi Products dạng Grouped, Bundle, Booking hoặc Subscription nếu có;
- một route Products đa ngôn ngữ hoặc giới hạn quyền truy cập;
- một bản ghi Customers có nhiều địa chỉ hoặc nhiều groups;
- một bản ghi Orders của guest và một bản ghi Orders của Customers đã đăng ký;
- một bản ghi Orders có discount, tax, payment, shipping và tracking;
- một bản ghi do application sở hữu hoặc external identifier.
Với mỗi mẫu, ghi source IDs, bản ghi Joomla/J2Store liên quan, lý do chọn, kết quả cần dùng để xác nhận và mọi chức năng live được chủ động giao cho phần triển khai ở Nền tảng đích.
Xác lập điều kiện cuối cùng trước khi dự án có thể tiếp tục
| Câu hỏi đánh giá mức độ sẵn sàng | Điều kiện sẵn sàng |
|---|---|
| Store có thể khôi phục không? | Có database/filesystem backup bất biến và người chịu trách nhiệm restore. |
| Trách nhiệm vòng đời đã rõ chưa? | Hosting, security, compatibility, thay thế extension và recovery đều có owner. |
| Các loại Products và variants đã được phân loại chưa? | Mỗi loại Products quan trọng có thông tin nguồn và một bản ghi đại diện. |
| Quan hệ Joomla đã được ghi nhận chưa? | Products Articles, Categories, menus, modules, languages, access levels và URLs đều có thể truy vết. |
| Customers và Orders có thể diễn giải đầy đủ chưa? | User links, groups, addresses, statuses, totals và lịch sử do apps sở hữu đã được ghi nhận. |
| Applications và custom data đã có owner chưa? | Mỗi dataset đang hoạt động có schema, owner, source key và quyết định destination. |
| Cấu hình ở đích đã được tách riêng chưa? | Checkout, payment, shipping, tax, cron, template và security đều có người chịu trách nhiệm. |
| Các điểm chưa giải quyết đã được kiểm soát chưa? | Mỗi yếu tố phụ thuộc chưa hoàn tất có owner, deadline và ảnh hưởng đến phạm vi dữ liệu/công việc được ghi nhận. |
Thiếu backup, chưa rõ trách nhiệm vòng đời, variants đã được tạo lại nhưng không có source ledger, app tables chưa xác định hoặc không thể truy vết lịch sử của Products chuyên biệt đều phải chặn phần phạm vi bị ảnh hưởng.
Kết luận
Chuẩn bị dự án chuyển đổi sang J2Store phải giữ đúng mối liên kết giữa Joomla Articles và dữ liệu thương mại, đồng thời bao quát loại Products, variants, files, Customers, Orders, applications, URL và phần tùy chỉnh đã tồn tại lâu năm. Bộ tài liệu chuẩn bị phải cho biết ai sở hữu từng hành động, thông tin nào xác nhận quan hệ ở nguồn và điều kiện nào cho thấy phần công việc đó đã sẵn sàng.
Cách tiếp cận này giữ dữ liệu lịch sử tách khỏi cấu hình live ở Nền tảng đích và ngăn chức năng extension legacy bị ẩn trong một bản export Products hoặc Orders chung chung.
Câu hỏi thường gặp
Cần chuẩn bị gì trước tiên trước khi chuyển đổi J2Store?
Trước hết cần xác nhận quyền truy cập Joomla, J2Store, hosting, database, filesystem, media và scheduled tasks. Sau đó tạo backup bất biến và ghi nhận chính xác phiên bản nguồn cùng các applications đã cài trước khi dọn dữ liệu hoặc nâng cấp.
Vì sao Products của J2Store cần cả dữ liệu Joomla lẫn dữ liệu thương mại để xác nhận?
J2Store sử dụng Joomla Articles làm Products. Nội dung, Categories, ngôn ngữ, access, menus và routes có thể thuộc Joomla, trong khi SKU, giá, tồn kho, options, variants và quan hệ Orders thuộc J2Store.
Products dạng Variable của J2Store cần được chuẩn bị thế nào?
Ghi lại định nghĩa options và mọi tổ hợp đã tạo cùng parent Products, giá trị đã chọn, SKU, giá, tồn kho, images, status và external identifiers. Không tạo lại tổ hợp trước khi giữ được bản đồ danh tính ban đầu.
Products dạng Downloadable cần những thông tin nào để xác nhận?
Cần chuẩn bị liên kết Products-to-file, vị trí file, giới hạn tải, expiry settings, route khu vực Customers, Orders statuses liên quan và các Orders đã hoàn tất đại diện thể hiện lịch sử quyền truy cập.
Applications và custom tables của J2Store nên được ghi nhận ra sao?
Cần nêu rõ application và loại bản ghi do application quản lý, tables, keys, quan hệ Products/Customers/Orders, triggers, scheduled tasks, các yếu tố phụ thuộc vào hệ thống bên ngoài và bản ghi đại diện. Không nên gom mọi dữ liệu do extensions sở hữu thành một nhóm “custom data” chung.
Nên chọn những bản ghi nào cho bộ mẫu kiểm thử di chuyển dữ liệu của J2Store?
Nên chọn Products đơn giản dựa trên Article, Products có variants, loại Products Advanced hoặc chuyên biệt, routes giới hạn quyền hoặc đa ngôn ngữ, Customers phức tạp, Orders của guest và Customers đã đăng ký, quyền truy cập digital, dữ liệu do application sở hữu và external identifiers.